# Glassdoor Reviews Scraper | Filters, Sub-Ratings & Monitoring (`corvuslab/glassdoor-reviews-scraper`) Actor

Scrape Glassdoor employee reviews by company link or name: pros, cons, advice, overall + 6 sub-ratings, job title, location and employer replies. Filter by language, stars, current staff, job title, location, keyword and date. New-review monitoring, alerts and a free company summary.

- **URL**: https://apify.com/corvuslab/glassdoor-reviews-scraper.md
- **Developed by:** [Corvuslab](https://apify.com/corvuslab) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Glassdoor Reviews Scraper do?

Glassdoor Reviews Scraper pulls **Glassdoor employee reviews** for any company into clean, flat, spreadsheet-ready rows: pros, cons and advice, the overall rating plus **all six sub-ratings**, the reviewer's job title, location, employment type and tenure, and the **employer's reply**. Give it **Glassdoor company links or plain company names**, narrow each company to exactly the reviews you need with filters that Glassdoor applies itself, and schedule a **monitoring mode** that returns only new reviews and flags the moment an employer replies. Every company also gets a **free company summary**.

Run it with no input at all and it returns Nucor's 20 newest reviews, so you can see the output before you configure anything. No login, no cookies, no code; export to JSON, CSV or Excel, or pull it from the API or an AI agent.

> New to Apify? Sign up free and use the included monthly platform credit to try this Actor — no credit card needed.

**Need the jobs too?** Our [Glassdoor Job Scraper](https://apify.com/corvuslab/glassdoor-scraper) pulls Glassdoor job listings across 22 countries with salary ranges and company ratings, so you can see who is hiring and then read what their staff say here.

***

### What data can you extract from Glassdoor reviews?

Every review row has **50+ fields**, one column per value:

| Group | Fields |
|---|---|
| **Review** | `reviewId`, `reviewUrl`, `postedAt` + `postedDate`, `title`, `pros`, `cons`, `advice`, `language`, `isLanguageMismatch` |
| **Ratings** | `ratingOverall` plus six sub-ratings — work-life balance, culture & values, senior leadership, compensation & benefits, career opportunities, diversity & inclusion — and `ceoApproval`, `businessOutlook`, `recommendToFriend` |
| **Reviewer** | `isCurrentEmployee`, `employeeType` (CURRENT / FORMER), `employmentStatus` (full-time, part-time, contract, intern…), `employmentLength` ("More than 3 years") + `yearsAtCompany` (3), `jobEndingYear`, `jobTitle` + `jobTitleId`, `location` + `locationId` + `locationType` |
| **Employer reply** | `hasEmployerResponse`, `employerResponse`, `employerResponseDate`, `employerResponderTitle`, plus every reply in `employerResponses[]` |
| **Company & engagement** | `employerId`, `employerName`, `employerShortName`, `employerLogoUrl`, `companyReviewsUrl`, `helpfulCount`, `unhelpfulCount`, `isFeatured`, `isLegal`, `isCovid19`, `topLevelDomainId` |
| **Monitoring** | `changeType` (NEW / UPDATED / UNCHANGED), `firstSeenAt`, `responseAdded`, `contentHash`, `scrapedAt`, `source` |

The **free company summary** (one per company, saved to the run's `COMPANIES` record) adds:

| Group | Fields |
|---|---|
| **Rating breakdown** | Overall and category ratings, the **number of reviews for each star (1–5) in every category**, and the recommend split |
| **Demographic ratings** | Ratings by gender, race & ethnicity, disability, sexual orientation, veteran status and parent / caregiver, where Glassdoor shows them |
| **Leadership** | CEO name, title, photo and approval rating with its vote count |
| **Profile** | Industry, sector, size, revenue band, headquarters, year founded, website, overview, parent, siblings, subsidiaries |
| **Reputation** | Awards, best-places-to-work and best-led-company entries, office locations with **their own ratings**, up to 100 photos with captions |
| **Volume & completeness** | Total and filtered review counts, counts by language, reviews in the last 7 and 30 days, last review date, and a completeness report for the run |

***

### Key features

- 🎚️ **Filters that save money** — review language (English, Spanish, Portuguese, French, German, Dutch, Italian, or all of them), overall star rating, current employees only, employment type, job title, location and keyword. Glassdoor applies them itself, so you never pay for reviews you would have thrown away.
- 📅 **Posted-date range that stops early** — ask for "the last 30 days" or a fixed window and reading stops the moment older reviews start, so a recent window on a 90,000-review employer reads only the pages it needs.
- 🔀 **Several stars or languages, one ordered list** — pick 1★ and 2★, or English and Spanish, and the reviews come back merged in your sort order, with the review limit shared across them.
- ♻️ **Only new reviews on every scheduled run** — incremental mode returns NEW and UPDATED reviews only, flags reviews the employer has just replied to, and stops reading once it reaches reviews you already have.
- 🔤 **Look up companies by name** — type `Starbucks` or `Deloitte` instead of hunting down links; any Glassdoor company link from any country site works too.
- 📈 **Every employment type by default** — interns, contractors, freelancers, temporary and seasonal staff are included unless you filter. On Starbucks' English reviews that is about 2% more reviews than a full-time/part-time-only view.
- 📊 **Unrated means null, not 0** — a sub-rating the reviewer skipped stays empty, so averages, medians and charts are right without clean-up.
- 🧾 **Flat rows, ready-made views** — four table views (overview, ratings, employer replies, changes) and a compact mode for AI agents.
- 🧹 **No duplicates** — each company is read once even if you list it twice, and repeated reviews are dropped.
- 🔔 **Alerts** — Telegram, Slack, Discord or any webhook.

***

### 🚀 How to scrape Glassdoor reviews

1. Paste **Glassdoor company links** (e.g. `https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm`) or type **company names** (e.g. `Starbucks`).
2. Set **Max reviews per company** (0 = every matching review) and a **sort order**.
3. Pick any **filters** — language, stars, current employees, employment type, job title, location, keyword or a posted-date range.
4. (Optional) Turn on **incremental mode** and an **alert** channel, then **Schedule** it.
5. Click **Start** — reviews stream into the Output tab.

#### Quick-start example input

```json
{
  "companyNames": ["Starbucks"],
  "maxReviews": 200,
  "starRatings": ["1", "2"],
  "onlyCurrentEmployees": true,
  "dateFrom": "6 months"
}
```

This returns up to 200 one- and two-star reviews by current Starbucks employees from the last six months, newest first — the complaints that matter right now, without paying for the thousands of other reviews — plus a free Starbucks company summary.

***

### Input

Configure it in the visual editor or pass JSON via the API. Every field is optional.

| Field | What it does |
|---|---|
| `urls` | Glassdoor company links — any company page (Reviews, Overview, Salaries, Jobs) on any Glassdoor country site — or a bare company id (`489`). |
| `companyNames` | Company names to look up, e.g. `Starbucks`. The best match is used and logged. |
| `maxReviews` | Maximum reviews per company. Default `20`; `0` = every review that matches. |
| `sort` | `DATE` (newest first, default), `DATE_ASC`, `RATING`, `RATING_ASC`, `RELEVANCE`. A date range always reads newest first. |
| `languages` | `eng` (default), `spa`, `por`, `fra`, `deu`, `nld`, `ita`, or `all` for every language the company has. |
| `starRatings` | Keep only these overall ratings: `5`, `4`, `3`, `2`, `1`. |
| `onlyCurrentEmployees` | Keep only reviews by people who still work there. |
| `employmentStatuses` | `REGULAR` (full-time), `PART_TIME`, `CONTRACT`, `INTERN`, `FREELANCE`, `SEASONAL`, `TEMPORARY`, `APPRENTICE`, `RESERVE`. |
| `jobTitle` / `location` / `keyword` | A job title (`Barista`), a city, state or country (`Texas`), and a word or phrase the review must mention (`overtime`). |
| `dateFrom` / `dateTo` | Posted on or after / before a date (`2026-01-31`); `dateFrom` also takes a span like `30 days` or `6 months`. |
| `includeCompanyData` | The free company summary (default on). |
| `textMaxLength` / `compact` / `excludeEmptyFields` | Cut long texts, keep only core fields, drop empty fields — handy for AI agents. |
| `incrementalMode`, `stateKey`, `emitUnchanged` | Monitoring — see the incremental mode section below. |
| Alert fields | Telegram, Slack, Discord and webhook — see the alerts section below. |
| `proxyConfiguration`, `maxRequestRetries` | Advanced. Keep the default Apify Proxy setting. |

Several values inside one filter widen it (OR); different filters narrow it (AND). Another example — part-time Walmart reviews from Texas that mention scheduling:

```json
{
  "companyNames": ["Walmart"],
  "maxReviews": 100,
  "employmentStatuses": ["PART_TIME"],
  "location": "Texas",
  "keyword": "schedule"
}
```

***

### Output

Each dataset item is one Glassdoor review. A real record (Starbucks, trimmed of a few identifiers):

```json
{
  "reviewId": 105946714,
  "reviewUrl": "https://www.glassdoor.com/Reviews/Employee-Review-Starbucks-E2202-RVW105946714.htm",
  "postedDate": "2026-10-13",
  "title": "Good staff and free coffee, but poor management",
  "pros": "Good staff and free coffee",
  "cons": "poor management, high stress and inflexible",
  "advice": "Communicate and be more accomodating",
  "language": "eng",
  "ratingOverall": 3,
  "ratingWorkLifeBalance": 3,
  "ratingCultureAndValues": 2,
  "ratingSeniorLeadership": 3,
  "ratingCompensationAndBenefits": 2,
  "ratingCareerOpportunities": 2,
  "ratingDiversityAndInclusion": 4,
  "ceoApproval": "DISAPPROVE",
  "businessOutlook": "NEGATIVE",
  "recommendToFriend": "NEGATIVE",
  "isCurrentEmployee": false,
  "employeeType": "FORMER",
  "employmentStatus": "PART_TIME",
  "employmentLength": "Less than 1 year",
  "yearsAtCompany": 0,
  "jobEndingYear": 2022,
  "jobTitle": "Barista",
  "location": "Gatwick, England",
  "locationType": "CITY",
  "helpfulCount": 0,
  "employerId": 2202,
  "employerName": "Starbucks Corporation",
  "companyReviewsUrl": "https://www.glassdoor.com/Reviews/Starbucks-Reviews-E2202.htm",
  "hasEmployerResponse": true,
  "employerResponse": "Thank you for sharing your feedback. We value your input and will take it into consideration as we strive to grow and provide the best experience for our partners.",
  "employerResponseDate": "2026-10-15T07:24:49.537",
  "employerResponderTitle": "Content Specialist",
  "source": "glassdoor.com",
  "scrapedAt": "2026-10-18T22:27:30.453Z"
}
```

Every field is present in standard mode, with `null` for missing values; `excludeEmptyFields` drops empties instead. `employmentLength` is the tenure exactly as Glassdoor shows it, and `yearsAtCompany` is its lower bound in full years (0 = less than a year; `null` when the reviewer didn't say). The Output tab has four views — **Overview**, **Ratings**, **Employer replies** and **Changes (incremental)** — plus a **Company summaries** link to the `COMPANIES` record.

***

### ♻️ How to monitor Glassdoor reviews with incremental mode

Turn on **Only new and changed reviews**, give the watch list a **Monitor name** (`stateKey`), run it once to seed the baseline, then add a schedule (daily or weekly) on the **Schedules** tab. Each later run emits only **NEW** reviews and **UPDATED** ones — edited, or with a new employer reply (`responseAdded: true`) — each tagged with `changeType` and `firstSeenAt`. With the default newest-first sort, reading stops as soon as it reaches reviews you already have, so a quiet week costs almost nothing: after the baseline you pay for new and changed reviews only, not for everything you track. Set `emitUnchanged` to get the full list every time.

The company summary's `reviewsLast7Days` and `reviewsLast30Days` show how busy each company is, so you can pick a sensible schedule.

***

### 🔔 How to set up Glassdoor review alerts

Get pinged when matching reviews appear. Fill in only the channels you want:

| Channel | What to configure |
|---|---|
| ✈️ **Telegram** | `telegramToken` (from @BotFather) + `telegramChatId` |
| 💬 **Slack** | `slackWebhookUrl` (Incoming Webhook URL) |
| 🎮 **Discord** | `discordWebhookUrl` (channel webhook URL) |
| 🪝 **Webhook** | `webhookUrl` (+ optional `webhookHeaders`) receives the reviews as JSON — ideal for n8n, Make or Zapier |

Each alert lists the company, rating, title, job title, change type and a link; `notificationLimit` (1–20, default 5) sets how many reviews each message shows. Channels fire independently and a failed alert never breaks the run. Credentials are secret inputs — encrypted, masked in the UI and never logged. Pair alerts with incremental mode to hear only about genuinely new reviews.

***

### 💡 What can you do with Glassdoor review data?

- **Employer branding** — track new reviews and replies across your brand and locations; the Employer replies view shows which negative reviews are still unanswered.
- **Competitive talent intelligence** — compare culture, pay, leadership and work-life ratings across competitors, filtered to the job titles you hire for.
- **HR analytics and attrition research** — filter to current employees, a location or a date window and load clean rows into your BI tool.
- **Investment and ESG research** — employee sentiment, CEO approval and business outlook are early signals; review velocity shows when a company suddenly gets louder.
- **Recruiting and sales prospecting** — find companies whose staff complain about pay, overtime or remote policy with the keyword filter.
- **AI agents and LLM pipelines** — feed compact review JSON into theme extraction, summaries or sentiment scoring, or use the Actor as an MCP tool.

***

### 💰 How much does it cost to scrape Glassdoor reviews?

This Actor uses Apify's **pay-per-event** model: a small fee when a run starts plus a fee for each review row saved — see the **Pricing** tab for current numbers. The company summary is never charged. Filters, date ranges and incremental mode all cut the bill, because reviews you exclude are never billed.

***

### 🔌 Integrations & export

Export to **JSON, CSV, Excel** or an HTML table, or pull from the **REST API** and the **JavaScript / Python** clients. Runs on a **schedule**, connects to **Google Sheets, Slack, Make, Zapier and n8n**, and works as an **MCP tool** for AI agents.

Hiring research too? Our [Glassdoor Job Scraper](https://apify.com/corvuslab/glassdoor-scraper) covers Glassdoor job listings across 22 countries with salaries and company ratings.

***

### 🔗 Using the Glassdoor Reviews API

Run this Actor from your own code. Example with the Apify Python client:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run_input = {
    "companyNames": ["Starbucks"],
    "maxReviews": 100,
    "starRatings": ["1", "2"],
    "dateFrom": "90 days",
}

run = client.actor("corvuslab/glassdoor-reviews-scraper").call(run_input=run_input)

for review in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(review["postedDate"], review["ratingOverall"], review["title"])

companies = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("COMPANIES")
```

It also works with the JavaScript/TypeScript client, the Apify CLI and the REST API.

***

### ❓ FAQ

**Do I need a Glassdoor account?** No. The Actor reads publicly visible reviews — no account, cookies or setup.

**How many reviews can I get per company?** The full history: set `maxReviews` to `0` and you get every review that matches your filters (a complete pull of an 883-review employer returned all 883). A run stops at 250,000 reviews in total; split larger jobs by language or date range.

**Why are some sub-ratings, job titles or locations empty?** The reviewer skipped them. Skipped ratings are `null`, never `0`, so averages stay correct. Recent reviews rate each category about nine times in ten; older ones skip more often (diversity & inclusion is a newer category). Most reviews carry a job title and about two in three or more a location.

**Does the keyword filter work in every language?** It works best in English. For non-English monitoring, combine a language filter with a date range instead.

**Are translated originals, benefits or the review-location tree included?** No. Glassdoor does not show them to logged-out readers. Everything else on the company summary, including offices with their own ratings, is included.

**What if a company name matches the wrong company?** The match is written to the log. For ambiguous names, paste the company's Glassdoor link or numeric id instead.

***

### ⚖️ Is it legal to scrape Glassdoor reviews?

This Actor collects only **publicly available** review data. You're responsible for how you use it — in particular any personal information such as a reviewer's job title and location — and for complying with Glassdoor's terms and applicable law (including the GDPR/LGPD where they apply). Not affiliated with, endorsed by or sponsored by Glassdoor, Inc.

***

**Keywords:** glassdoor scraper · glassdoor reviews scraper · glassdoor api · glassdoor.com scraper · scrape glassdoor reviews · glassdoor employee reviews · company reviews scraper · employer reviews · glassdoor ratings · pros and cons · employer replies · glassdoor review monitoring · employer branding · HR analytics · export to CSV · export to Excel · no-code scraper · MCP tool for AI agents

# Changelog

This Actor's version history is a separate document: https://apify.com/corvuslab/glassdoor-reviews-scraper/changelog.md

# Actor input Schema

## `urls` (type: `array`):

Glassdoor company page links, e.g. https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm or https://www.glassdoor.co.uk/Overview/Working-at-Nucor-EI_IE489.htm. A bare company id (489) works too. Each company is read once, in the order given.

## `companyNames` (type: `array`):

Company names to look up on Glassdoor, e.g. Starbucks or Deloitte. The best match is used and logged — use a link instead when a name is ambiguous.

## `maxReviews` (type: `integer`):

Maximum reviews to return for each company. Set 0 for every review that matches.

## `sort` (type: `string`):

Which reviews come first. With a date range, reviews are always read newest first.

## `languages` (type: `array`):

Languages of the reviews to return. Choose 'All languages' to read every language the company has, one after another.

## `starRatings` (type: `array`):

Keep only reviews with these overall star ratings. Leave empty for every rating.

## `onlyCurrentEmployees` (type: `boolean`):

Keep only reviews written by people who still work at the company.

## `employmentStatuses` (type: `array`):

Keep only reviews from these kinds of employees. Leave empty for everyone.

## `jobTitle` (type: `string`):

Keep only reviews from this job title, e.g. Software Engineer or Barista.

## `location` (type: `string`):

Keep only reviews from this city, state or country, e.g. Seattle, Texas or United Kingdom.

## `keyword` (type: `string`):

Keep only reviews that mention this word or phrase, e.g. remote, layoffs or overtime.

## `dateFrom` (type: `string`):

Keep only reviews posted on or after this date (2026-01-31), or within a span such as '30 days' or '6 months'. Reading stops as soon as older reviews start, so a date range keeps big companies quick and cheap.

## `dateTo` (type: `string`):

Keep only reviews posted on or before this date (2026-06-30).

## `includeCompanyData` (type: `boolean`):

Add one free summary per company: ratings and the number of reviews for each star in every category, ratings by demographic group, CEO, profile, offices with their ratings, awards, subsidiaries, photos and a completeness report. Saved to the run's COMPANIES record (Output tab → Company summaries) — never charged.

## `textMaxLength` (type: `integer`):

Cut the title, pros, cons and advice to this many characters. Set 0 to keep the full text.

## `compact` (type: `boolean`):

Emit only the core review fields — company, job title, location, rating, title, pros, cons, advice and the employer's reply. Ideal for AI agents and MCP clients.

## `excludeEmptyFields` (type: `boolean`):

Remove null, empty-string and empty-array fields from each record.

## `incrementalMode` (type: `boolean`):

Remember the reviews seen before and emit only NEW and UPDATED ones, each tagged with changeType. Reviews you already have cost nothing on later runs.

## `stateKey` (type: `string`):

A stable name for this watch list, e.g. competitors-weekly. Leave empty to derive one from your companies and filters.

## `emitUnchanged` (type: `boolean`):

Also emit reviews that have not changed since the previous run (tagged UNCHANGED).

## `telegramToken` (type: `string`):

Bot token from @BotFather.

## `telegramChatId` (type: `string`):

Chat or channel ID, e.g. "-100123456789" or "@yourchannel".

## `slackWebhookUrl` (type: `string`):

Slack incoming-webhook URL.

## `discordWebhookUrl` (type: `string`):

Discord incoming-webhook URL.

## `webhookUrl` (type: `string`):

Any HTTPS endpoint. Receives a JSON POST with the new reviews — works with n8n, Make and Zapier.

## `webhookHeaders` (type: `object`):

Extra headers for the webhook request, e.g. {"Authorization": "Bearer xyz"}.

## `notificationLimit` (type: `integer`):

How many reviews to include in each notification message.

## `proxyConfiguration` (type: `object`):

Connection settings. Keep the default Apify Proxy setting — it is all the actor needs.

## `maxRequestRetries` (type: `integer`):

How many times to retry a failed request before giving up on it.

## Actor input object example

```json
{
  "urls": [
    "https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm"
  ],
  "maxReviews": 20,
  "sort": "DATE",
  "languages": [
    "eng"
  ],
  "onlyCurrentEmployees": false,
  "includeCompanyData": true,
  "textMaxLength": 0,
  "compact": false,
  "excludeEmptyFields": false,
  "incrementalMode": false,
  "emitUnchanged": false,
  "notificationLimit": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxRequestRetries": 3
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `allItems` (type: `string`):

No description

## `companies` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("corvuslab/glassdoor-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("corvuslab/glassdoor-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call corvuslab/glassdoor-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corvuslab/glassdoor-reviews-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/S9VClplYMb62DM6MT/builds/n78xWxWn7nd1uBn06/openapi.json
