# Glassdoor Reviews Scraper: Full History, Simple Setup (`zen-studio/glassdoor-reviews-scraper`) Actor

Export every employee review for any company on Glassdoor: all seven ratings, pros, cons, advice and employer replies, plus a free company profile row. Seven settings, no login, no 200-review cap.

- **URL**: https://apify.com/zen-studio/glassdoor-reviews-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.69 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

[![3,000 Glassdoor reviews in 26 seconds, with every rating, pros, cons and employer reply.](https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/glassdoor-reviews-scraper-readme-hero-v1-c3d2ed1a601d.png)](https://console.apify.com/actors/f6574FYJvwVWkHU2O/input)

From **Zen Studio**, creators of [G2 Reviews](https://apify.com/zen-studio/g2-reviews-scraper), [Capterra Reviews](https://apify.com/zen-studio/capterra-reviews-scraper) and [Gartner Peer Insights](https://apify.com/zen-studio/gartner-review-scraper), with **50,000+ combined lifetime runs** across those three actors.

### Why choose this Glassdoor reviews scraper?

- **Fast enough to use interactively.** A recorded run collected **3,000 of 3,000 requested Siemens reviews in 26 seconds**, newest first, every row complete. A separate recorded run took **20,561 of 20,561 available reviews** in one go, so there is no 200-review ceiling here.
- **Seven settings, nothing else to learn.** Company, how many reviews, a run ceiling, sort order, a date floor and a star band. Paste a company name and run.
- **The company comes with it.** Every review carries its company's ID, name, short name, logo and reviews URL, and each company also gets one profile row with headquarters, size, revenue, industry, published ratings and awards. Profile rows are **never charged**.

Both figures are recorded examples. Results vary with availability, collection limits and budget; the actor reports shortfalls.

<a href="https://console.apify.com/actors/f6574FYJvwVWkHU2O/input" data-demo-cta="true"><img src="https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/glassdoor-scraper-readme-v2-cta-4b4ac9ccb814.png" width="292" height="50" alt="Collect Glassdoor reviews"></a>

#### Try Siemens with 20 reviews

```json
{
  "companies": [
    "Siemens"
  ],
  "maxReviewsPerCompany": 20
}
```

[Open the actor input](https://console.apify.com/actors/f6574FYJvwVWkHU2O/input), select JSON and paste this example. It returns up to **20 reviews** plus one company profile row. Export JSON to keep nested employer replies and rating breakdowns, or CSV/Excel for a spreadsheet.

Company ratings and breakdowns are Glassdoor's published figures, not calculations from your collected reviews.

The hero shows an illustrative Glassdoor layout. Its review titles are examples, not collected text; the 3,000 in 26 seconds figure is from a recorded run.

<table>
<tr><td colspan="2" style="padding:10px 14px;background:#00A264;border:none"><strong style="color:#071D15;font-size:14px">Zen Studio Review Scrapers</strong></td></tr>
<tr>
<td style="padding:12px 10px;border:1px solid #B7D8C4;background:#D3EDD9;vertical-align:top;width:50%"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-WefmR41HxSeENoZ7M-CYr5o45qXo-glassdoor-reviews-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp; <a href="https://console.apify.com/actors/f6574FYJvwVWkHU2O/input" style="color:#123D2B;font-size:13px;font-weight:700;text-decoration:none">Glassdoor Reviews</a><br><span style="color:#426350;font-size:12px">You are here</span></td>
<td style="padding:12px 10px;border:1px solid #B7D8C4;background:#E8F5E9;vertical-align:top;width:50%"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-WefmR41HxSeENoZ7M-CYr5o45qXo-glassdoor-reviews-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp; <a href="https://apify.com/zen-studio/glassdoor-scraper" style="color:#123D2B;font-size:13px;font-weight:700;text-decoration:none">Glassdoor, full options</a><br><span style="color:#426350;font-size:12px">Keyword and employment-type filters</span></td>
</tr>
<tr>
<td style="padding:12px 10px;border:1px solid #B7D8C4;background:#E8F5E9;vertical-align:top;width:50%"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-XQAkoDssJyWZmyR0W-aBi9woFm7e-g2-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp; <a href="https://apify.com/zen-studio/g2-reviews-scraper" style="color:#123D2B;font-size:13px;font-weight:700;text-decoration:none">G2 Reviews</a><br><span style="color:#426350;font-size:12px">Software reviews and profiles</span></td>
<td style="padding:12px 10px;border:1px solid #B7D8C4;background:#E8F5E9;vertical-align:top;width:50%"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-dBPQ5OIoRDYm1oNfe-AUuqN3een7-gartner-peer-insights-reviews-scraper.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp; <a href="https://apify.com/zen-studio/gartner-review-scraper" style="color:#123D2B;font-size:13px;font-weight:700;text-decoration:none">Gartner</a><br><span style="color:#426350;font-size:12px">Enterprise software reviews</span></td>
</tr>
<tr>
<td style="padding:12px 10px;border:1px solid #B7D8C4;background:#E8F5E9;vertical-align:top;width:50%"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-x5wbchBdDewl20s3k-D82GiybXUd-capterra-review-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp; <a href="https://apify.com/zen-studio/capterra-reviews-scraper" style="color:#123D2B;font-size:13px;font-weight:700;text-decoration:none">Capterra</a><br><span style="color:#426350;font-size:12px">Product reviews and ratings</span></td>
<td style="padding:12px 10px;border:1px solid #B7D8C4;background:#E8F5E9;vertical-align:top;width:50%"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-8WBO6LzuDMR6Tw8Tq-bhsn68jhsu-trustpilot-review-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp; <a href="https://apify.com/zen-studio/trustpilot-review-scraper" style="color:#123D2B;font-size:13px;font-weight:700;text-decoration:none">Trustpilot</a><br><span style="color:#426350;font-size:12px">Consumer reviews and replies</span></td>
</tr>
</table>

#### Copy to your AI assistant

```text
zen-studio/glassdoor-reviews-scraper on Apify returns Glassdoor employee reviews plus one company profile row per company, in one dataset split by record_type ("review", 52 fields; "company", 45 fields) and joinable on employer_id. This listing exposes seven settings: companies (up to 200 entries, each a company name, a Glassdoor URL or a numeric company ID, mixed freely; an unresolvable entry is skipped and the run continues), maxReviewsPerCompany (default 100, 0 = every review that company has), maxReviewsTotal (0 = no run ceiling; caps the reviews one run collects across all companies and stops it cleanly at that number), sort (RELEVANCE, DATE or RATING), postedAfter (YYYY-MM-DD, forces newest-first and stops early, so it is much cheaper than filtering afterwards), minRating and maxRating (1-5, set both to the same value for one star band). Every review row carries employer_id, company_name, company_short_name and company_reviews_url, so reviews join to their company without a second run. review_updated_at is separate from review_posted_at, so edited reviews are detectable between runs. Charging is per review row delivered ($0.00099, lower on higher plans) plus $0.00399 once per run; company profile rows are never charged and filters reduce what you are charged for. No Glassdoor account or login is needed. Note that the company row's ratings, rating_distribution and rating_distribution_by_category are Glassdoor's own published figures for the company's whole worldwide review population, not a summary of the reviews in your run; reviews_available is that population's size, while review_count is Glassdoor's published total. length_of_employment is Glassdoor's tenure bucket, not a year count: the observed values are 0, 1, 2, 4, 6, 9 and 20. If you also need keyword search, employment-type filters or a current-employees-only filter, use zen-studio/glassdoor-scraper, which shares this output. Full specification: https://api.apify.com/v2/actors/zen-studio~glassdoor-reviews-scraper/builds/default and current pricing at https://apify.com/zen-studio/glassdoor-reviews-scraper. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
```

### How to scrape Glassdoor reviews

1. Add one or more companies. A name (`Siemens`), a Glassdoor URL or a numeric company ID all work, mixed freely, up to 200 per run.
2. Set how many reviews you want per company. The default is 100; `0` collects the company's complete history.
3. Run it. Reviews stream into the dataset as they arrive, so you can export before the run finishes.

#### Input options

| Parameter | Type | Default | Meaning |
|---|---|---|---|
| `companies` | array | required | Company names, Glassdoor URLs or Glassdoor company IDs. Up to 200 per run, mixed freely. |
| `maxReviewsPerCompany` | integer | `100` | Reviews per company. `0` means every review the company has, with no ceiling. |
| `maxReviewsTotal` | integer | `0` | Ceiling for the whole run, across all companies. `0` means no run ceiling. The run stops cleanly at the ceiling and you pay only for the rows delivered. |
| `sort` | string | `RELEVANCE` | `RELEVANCE`, `DATE` or `RATING`. Decides which reviews you get when you set a limit. |
| `postedAfter` | string | none | Only reviews on or after this date. Collection stops when it reaches older reviews, so a recent date is fast. |
| `minRating` / `maxRating` | integer | none | Keep reviews inside a star band. Set both to `1` for the harshest reviews only. |

Setting `postedAfter` always collects newest first, overriding `sort`. That is what lets a run stop early instead of reading a company's whole history.

If you just need reviews for companies you can name, stay here: seven settings, the same rows, the same price. Need a keyword search, an employment-type filter or current employees only? [The full-options listing](https://apify.com/zen-studio/glassdoor-scraper) adds those three filters and returns the same rows.

#### Three ways to name a company

```json
{
  "companies": [
    "SAP",
    "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm",
    "3510"
  ],
  "maxReviewsPerCompany": 25
}
```

Names, URLs and IDs can be mixed in one run. An entry that cannot be resolved is skipped and reported, and the rest of the run continues.

#### Useful recipes

**Everything a company has ever received**

```json
{
  "companies": ["Siemens"],
  "maxReviewsPerCompany": 0
}
```

**Full history, with a ceiling on what one run can cost**

```json
{
  "companies": ["Siemens", "SAP", "Google"],
  "maxReviewsPerCompany": 0,
  "maxReviewsTotal": 50000
}
```

Each company is uncapped, but the run stops at 50,000 reviews in total. The log reports the projected total company by company before the run gets there, so an unexpectedly large job is visible early.

**Watch for new reviews on a schedule**

```json
{
  "companies": ["Google", "Deloitte"],
  "postedAfter": "2026-09-01",
  "maxReviewsPerCompany": 0
}
```

Run that daily and it stops as soon as it reaches reviews older than your date, so a watch run stays small and cheap. Every review also carries `review_updated_at` separately from `review_posted_at`, so an edited review is detectable between runs.

**Only the one-star reviews**

```json
{
  "companies": ["Siemens"],
  "minRating": 1,
  "maxRating": 1,
  "maxReviewsPerCompany": 200
}
```

### What data you get from Glassdoor

One dataset, two row kinds, told apart by `record_type` and joined on `employer_id`.

**Review rows, 52 fields each.** Review ID, posted and updated dates, headline, pros, cons, advice to management, and the original-language copies when a review was translated. The overall star rating plus work-life balance, culture and values, career opportunities, compensation and benefits, senior leadership, and diversity and inclusion. The three verdict ratings: recommend-to-friend, CEO approval and business outlook. Job title with Glassdoor's title and job-family ids, employment status, tenure bucket, the year the reviewer left, whether they are a current employee, location name and type, division, helpful and not-helpful counts, the review's language, moderation flag count, and employer replies carrying the responder's job title, the reply text and its original-language copy. Every row also carries its company's ID (`employer_id`), name, short name, logo and reviews URL, so reviews join to their company without a second run.

**Company profile rows, 45 fields, never charged.** Headquarters, size as text and as a code, revenue, website, primary industry, employer type, founding year, mission and description, the CEO with approval rating and how many ratings back it, review, salary, photo, interview and job counts plus how many reviews are actually available to collect, nine canonical URLs including photos, locations and FAQ, Glassdoor's published average ratings including business outlook, the one-to-five star distribution overall and for each of the six rating categories, demographic rating breakdowns across six categories, awards, and competitors, subsidiaries and siblings with their logos.

Real captured rows, trimmed. Free-text fields run long in the wild, so they are
shortened here with a trailing ellipsis and most keys are omitted; every key and
shape below is exactly as emitted.

A review row, 28 of its 52 fields:

```json
{
  "record_type": "review",
  "employer_id": 9079,
  "company_name": "Google Inc.",
  "company_short_name": "Google",
  "company_reviews_url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm",
  "review_id": 2757802,
  "review_posted_at": "2013-06-21T12:42:33.137",
  "review_updated_at": "2026-07-25T07:52:38.377",
  "summary": "Moving at the speed of light, burn out is inevitable",
  "pros": "1) Food, food, food.  15+ cafes on main campus (MTV) alone.  Mini-kitchens, snacks, drinks ...",
  "cons": "1) Work/life balance.  What balance?  All those perks and benefits are an illusion.  They ...",
  "advice": "1) Don't dismiss emotional intelligence and adaptive leadership.  They're not just catch p ...",
  "rating_overall": 4,
  "rating_work_life_balance": 2.0,
  "rating_recommend_to_friend": "NEGATIVE",
  "rating_business_outlook": "NEGATIVE",
  "job_title": "Program Manager",
  "job_title_id": 61502,
  "job_family_id": 100155,
  "employment_status": "REGULAR",
  "is_current_job": false,
  "length_of_employment": 9,
  "job_ending_year": 2013,
  "language_id": "eng",
  "location_name": "Mountain View, CA",
  "count_helpful": 3878,
  "has_employer_response": false,
  "employer_responses": []
}
```

Its company's profile row, 19 of its 45 fields, joined on the same `employer_id`:

```json
{
  "record_type": "company",
  "employer_id": 9079,
  "company_name": "Google Inc.",
  "short_name": "Google",
  "website": "https://goo.gle/4ehVuXi",
  "headquarters": "Mountain View, CA",
  "size": "10000+ Employees",
  "size_category": "GIANT",
  "year_founded": 1998,
  "revenue": "$10+ billion (USD)",
  "primary_industry": "Internet & Web Services",
  "employer_type": "Company - Public",
  "review_count": 71308,
  "reviews_available": 65830,
  "photo_count": 621,
  "ratings": {
    "overall": 4.4,
    "recommend_to_friend": 0.88,
    "ceo_approval": 0.85,
    "culture_and_values": 4.3,
    "diversity_and_inclusion": 4.4,
    "work_life_balance": 4.2,
    "career_opportunities": 4.2,
    "senior_management": 4.0,
    "compensation_and_benefits": 4.5,
    "business_outlook": 0.82,
    "review_count": 71278,
    "ceo_ratings_count": 7699
  },
  "rating_distribution": {
    "one_star": 571,
    "two_star": 555,
    "three_star": 2447,
    "four_star": 7037,
    "five_star": 14385
  },
  "reviews_url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm",
  "faq_url": "https://www.glassdoor.com/FAQ/Google-Questions-E9079.htm"
}
```

#### Exports

JSON keeps nested employer replies, rating breakdowns and award lists intact. Two CSV downloads are offered on the run, one holding the review columns and one the company profile columns, because a single CSV of everything runs to hundreds of columns. Each keeps every row, so the other row kind appears with only its shared columns filled, and nested fields such as ratings, awards and demographics flatten into separate columns. Excel, XML and RSS are available too. Reviews are pushed as they arrive, so a long run can be exported while it is still going.

### Pricing

| Event | When | Price |
|---|---|---|
| Review | Each review row delivered | $0.00099 |
| Actor start | Once per run | $0.00399 |
| Company profile row | Never charged | $0.00 |

That is **99 cents per 1,000 reviews** on the Free plan, falling to 89, 79 and 69 cents per 1,000 on higher Apify plans. Filters and limits reduce what you are charged for, because only delivered review rows are billed.

| What you collect | Cost |
|---|---|
| 100 reviews | $0.10 |
| 5,000 reviews | $4.95 |
| 20,561 reviews, the full Siemens history | $20.36 |

Each figure adds the one-off $0.00399 start.

Free Apify accounts get a trial: up to 100 reviews per run, for a small number of runs. Company profile rows do not count against it. Paid plans have no cap. Current rates for your plan are on the [pricing tab](https://apify.com/zen-studio/glassdoor-reviews-scraper/pricing).

### FAQ

**Can I really get more than 200 reviews for one company?** Yes. A recorded Siemens collection returned 20,561 of 20,561 available reviews in one run.

**Do I need a Glassdoor account?** No. No login, no cookies, nothing to configure.

**How do I link reviews to a company?** Every review row carries `employer_id`, `company_name`, `company_short_name` and `company_reviews_url`, and each company gets one profile row with the same `employer_id`.

**What if a company name is ambiguous?** The run resolves it to one company and reports which one on the company row, including `resolved_from`, so you can check what it picked. A name that cannot be resolved is skipped and reported, and the other companies still run.

**Can I get reviews for several companies in one run?** Yes, up to 200 entries, with `maxReviewsPerCompany` applying to each and `maxReviewsTotal` bounding the run.

**Why is my run smaller than the review count on the company row?** That count is Glassdoor's published total for the whole company. Your filters, limits and the run ceiling all reduce what is collected. When no filter is thinning the set, the run also reports any shortfall it could not retrieve; with a filter on, a smaller count is expected rather than a gap.

### Support

Found a field missing, a company that will not resolve, or a result that looks wrong? Open an issue on the Actor's Issues tab with the input you used. We read every one. Agents can add a `feedback` note to any run instead, including a run that worked.

# Actor input Schema

## `companies` (type: `array`):

<b>Quickstart:</b> add a company name and run.<br><br>Each entry can be a company name (<code>Google</code>), a Glassdoor company URL (reviews or profile page), or a Glassdoor company ID (<code>9079</code>). You can mix all three in one run. A name is matched to the closest company, and the one chosen is reported on that company's row.

## `maxReviewsPerCompany` (type: `integer`):

Stop after this many reviews for <b>each</b> company, so three companies at 100 returns up to 300 reviews. Reviews are the billed unit, so this is your cost control.<br><br>Set <code>0</code> to collect <b>every</b> review a company has, with no ceiling. Large employers can have well over 100,000.

## `maxReviewsTotal` (type: `integer`):

Ceiling on reviews across every company in this run. 0 means no run-level ceiling, so each company follows the per-company limit above. When the ceiling is reached the run stops cleanly and you are charged only for the rows delivered. Useful with a per-company limit of 0, where a single run can otherwise collect a company's entire review history.

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

Order in which reviews are collected, which decides which ones you get when you set a maximum.<br><br>Note: setting <b>Posted after</b> always collects newest first, overriding this choice, because that is what lets the run stop early instead of reading the whole history.

## `postedAfter` (type: `string`):

Only reviews posted on or after this date. Collection stops as soon as it reaches older reviews, so a recent date is much faster and cheaper than filtering afterwards.<br><br>Setting this forces newest-first order, overriding <b>Sort reviews by</b>.

## `minRating` (type: `integer`):

Only reviews rated at least this many stars, from 1 to 5.

## `maxRating` (type: `integer`):

Only reviews rated at most this many stars. Combine with the minimum to isolate a band: set both to <code>1</code> for the harshest reviews only.

## `feedback` (type: `string`):

For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns.

## Actor input object example

```json
{
  "companies": [
    "Google",
    "https://www.glassdoor.com/Reviews/Deloitte-Reviews-E2763.htm"
  ],
  "maxReviewsPerCompany": 100,
  "sort": "RELEVANCE"
}
```

# Actor output Schema

## `results` (type: `string`):

Every row the run collected: one per review, plus one company profile row per company, split by record\_type.

## `resultsCsv` (type: `string`):

A CSV holding the review columns, ready for a spreadsheet. Company profile rows are still present, with only their shared columns filled.

## `companiesCsv` (type: `string`):

A CSV holding the company profile columns, with nested ratings, awards and demographics flattened into separate columns, so it is wide. Review rows are still present, with only their shared columns filled.

# 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 = {
    "companies": [
        "Google",
        "https://www.glassdoor.com/Reviews/Deloitte-Reviews-E2763.htm"
    ],
    "maxReviewsTotal": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/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 = {
    "companies": [
        "Google",
        "https://www.glassdoor.com/Reviews/Deloitte-Reviews-E2763.htm",
    ],
    "maxReviewsTotal": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/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 '{
  "companies": [
    "Google",
    "https://www.glassdoor.com/Reviews/Deloitte-Reviews-E2763.htm"
  ],
  "maxReviewsTotal": 0
}' |
apify call zen-studio/glassdoor-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zen-studio/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/f6574FYJvwVWkHU2O/builds/nvuegOWUeJmjiVLCc/openapi.json
