# Glassdoor Reviews Scraper: No 200-Cap, $0.99 per 1k (`zen-studio/glassdoor-scraper`) Actor

Every review a company has on Glassdoor, with no 200-review ceiling. All seven ratings, pros, cons, advice and employer replies, plus a free company profile row carrying firmographics, published ratings and demographic breakdowns. Give it a name, a URL or an ID. No login.

- **URL**: https://apify.com/zen-studio/glassdoor-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

[![Glassdoor reviews. At full scale. 20,561 reviews collected in a recorded Siemens collection.](https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/glassdoor-scraper-readme-v2-hero-a-ca4af77ba783.png)](https://console.apify.com/actors/WefmR41HxSeENoZ7M/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 actor?

- **Collect at scale.** A recorded Siemens collection returned **20,561 of 20,561 available reviews**. Set your own limit per company, or choose `0` to remove the per-company review cap.
- **Keep the context.** Get pros, cons, category ratings and employer replies when present, plus company profiles with published ratings and demographic breakdowns. Profile rows are never charged.
- **Target your research.** Filter by keyword, rating, posting date or employment status. Use company names, Glassdoor URLs or IDs. No Glassdoor login is needed.

The Siemens result is a recorded example. Results vary with availability, collection limits and budget; the actor reports shortfalls.

<a href="https://console.apify.com/actors/WefmR41HxSeENoZ7M/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": [
    "3510"
  ],
  "maxReviewsPerCompany": 20,
  "includeCompanyProfile": true
}
```

[Open the actor input](https://console.apify.com/actors/WefmR41HxSeENoZ7M/input), select JSON and paste this example. It requests up to **20 reviews** plus a company profile. Export JSON to preserve nested replies and company 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 uses an illustrative Glassdoor layout with text and a rating from a collected Siemens review.

<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/WefmR41HxSeENoZ7M/input" style="color:#123D2B;font-size:13px;font-weight:700;text-decoration:none">Glassdoor</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-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>
</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-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-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-reviews-scraper" style="color:#123D2B;font-size:13px;font-weight:700;text-decoration:none">Glassdoor Reviews</a><br><span style="color:#426350;font-size:12px">Same rows, seven settings</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-scraper on Apify returns Glassdoor employee reviews plus a company profile row for each company, in one dataset split by record_type ("review", 52 fields; "company", 45 fields) and joinable on employer_id. companies takes up to 200 entries and accepts a company name, a Glassdoor URL or a numeric company ID, mixed freely; an unresolvable entry is skipped and the run continues. For a company's complete review history set maxReviewsPerCompany=0, since the default of 100 caps each company; maxReviewsTotal caps the whole run across all companies (0 = no run ceiling) and stops it cleanly at that number, which is the safe way to combine maxReviewsPerCompany=0 with many companies. For firmographics, published ratings, the star breakdown and awards keep includeCompanyProfile=true (default); those rows are never charged. For recent-only or repeated watch runs set postedAfter=YYYY-MM-DD, which forces newest-first and stops early, so it is much cheaper than filtering afterwards; review_updated_at is separate from review_posted_at, so edited reviews are detectable between runs. Narrow with textSearch, minRating/maxRating 1-5, onlyCurrentEmployees, or employmentStatuses (REGULAR, PART_TIME, CONTRACT, INTERN, FREELANCE); sort is RELEVANCE, DATE or RATING and is overridden by postedAfter. Charging is per review row delivered ($0.00099, lower on higher plans) plus $0.00399 once per run; 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. Full specification: https://api.apify.com/v2/actors/zen-studio~glassdoor-scraper/builds/default and current pricing at https://apify.com/zen-studio/glassdoor-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

Add companies, choose how many reviews you want from each, and run. Nothing else
is required: no Glassdoor account, no cookies, no login.

```json
{
  "companies": ["Google"],
  "maxReviewsPerCompany": 30
}
```

#### 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. |
| `includeCompanyProfile` | boolean | `true` | Add one company profile row per company. Never charged. |
| `textSearch` | string | empty | Only reviews mentioning this word or phrase, matched across summary, pros, cons and advice. |
| `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. |
| `onlyCurrentEmployees` | boolean | `false` | Exclude former employees. |
| `employmentStatuses` | array | all | Any of `REGULAR`, `PART_TIME`, `CONTRACT`, `INTERN`, `FREELANCE`. |

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

#### Three ways to name a company

All three work, and you can mix them in one list:

```json
{
  "companies": [
    "Chipotle",
    "https://www.glassdoor.com/Reviews/Deloitte-Reviews-E2763.htm",
    "3510"
  ],
  "maxReviewsPerCompany": 25
}
```

A name is matched to the closest company and the one chosen is reported on that
company's row as `resolved_from`, so you can confirm it picked the right one. A
name that matches nothing is skipped with a warning and the rest of the run
continues.

#### Useful recipes

**Only the complaints, for a churn or culture study**

```json
{
  "companies": ["Google"],
  "minRating": 1,
  "maxRating": 2,
  "maxReviewsPerCompany": 500
}
```

**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",
  "sort": "DATE",
  "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 you can tell an edited
review from a new one between runs.

**One topic across competitors**

```json
{
  "companies": ["Google", "Microsoft", "Apple"],
  "textSearch": "management",
  "maxReviewsPerCompany": 200
}
```

### What data can you extract from Glassdoor?

Each run writes two kinds of row into one dataset, told apart by `record_type`.

#### Review rows

52 fields each: identity and both timestamps, the full text (summary, pros, cons,
advice), all seven numeric ratings, the three verdict ratings, reviewer context
(job title with Glassdoor's title and job-family ids, location, tenure bucket,
leaving year, employment type), engagement counts, moderation flags, employer
replies including the responder's job title, language and translation provenance,
and the company the review belongs to.

Real captured row, returned by exactly the input shown above. Pros and cons run
long in the wild, so those free-text fields are shortened here with a trailing
ellipsis; every key and shape is exactly as emitted:

```json
{
  "record_type": "review",
  "employer_id": 9079,
  "company_name": "Google Inc.",
  "company_short_name": "Google",
  "company_logo_url": "https://media.glassdoor.com/sql/9079/google-squarelogo-1441130773284.png",
  "company_reviews_url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm",
  "review_id": 4204034,
  "review_posted_at": "2014-05-10T14:46:38.187",
  "review_updated_at": "2026-01-16T00:38:50.247",
  "summary": "Great balance between big-company security and fun, fast-moving projects",
  "summary_original": null,
  "pros": "* If you're a software engineer, you're among the kings of the hill at Google. It's an engineer-driven company without a doubt (that *is* changing, bu ...",
  "pros_original": null,
  "cons": "* It *is* becoming larger, and with it comes growing pains: bureaucracy, slow to respond to market threats, bloated teams, cross-divisional tension (t ...",
  "cons_original": null,
  "advice": "Keep the focus on the user. Everything else will follow.",
  "rating_overall": 5,
  "rating_work_life_balance": 5.0,
  "rating_culture_and_values": 4,
  "rating_career_opportunities": 5.0,
  "rating_compensation_and_benefits": 5.0,
  "rating_senior_leadership": 4.0,
  "rating_diversity_and_inclusion": 0,
  "rating_ceo": "APPROVE",
  "rating_business_outlook": "POSITIVE",
  "rating_recommend_to_friend": "POSITIVE",
  "job_title": "Software Engineer III",
  "job_title_id": 4514,
  "job_family_id": 100063,
  "employment_status": "REGULAR",
  "is_current_job": true,
  "job_ending_year": null,
  "length_of_employment": 2,
  "location_id": 1132348,
  "location_name": "New York, NY",
  "location_type": "CITY",
  "division_name": null,
  "division_link": null,
  "count_helpful": 1138,
  "count_not_helpful": 16,
  "has_employer_response": false,
  "employer_responses": [],
  "featured": false,
  "flagging_disabled": null,
  "is_language_mismatch": false,
  "language_id": "eng",
  "original_language_id": null,
  "translation_method": null,
  "is_covid19": false,
  "flag_count": null,
  "is_legal": true,
  "related_structures": []
}
```

`employer_responses` is an empty list when the employer has not replied, as in
the row above. Roughly one review in eight carried a reply across the companies
we sampled. When there is one, that part of the row looks like this, taken from
a real review of another company:

```json
{
  "has_employer_response": true,
  "employer_responses": [
    {
      "responded_at": "2015-07-10T16:23:44.93",
      "response": "Thanks for your great feedback. We really appreciate the transparency from Mark, Sheryl, and the entire leadership team.  This open culture does permeate throughout the company, and we are focused on maintaining it as we grow. Even as we have grown, our commit ...",
      "count_helpful": 0,
      "count_not_helpful": 0
    }
  ]
}
```

The
`*_original` fields and `translation_method` are populated only for reviews
Glassdoor translated; they are `null` otherwise. `advice` is often `null` because
reviewers may leave it blank.

#### Company profile rows

One per company, 45 fields, never charged. Firmographics, nine canonical URLs for
every Glassdoor section, review, salary, photo, interview and job counts plus how
many reviews are actually available to collect, the published ratings block
including business outlook and how many ratings back the CEO figure, the published
star breakdown overall and for each of the six rating categories, demographic
breakdowns, awards, and corporate relationships with their logos.

Real captured row from the same run, with the description shortened, the awards list cut to 2 of 19, competitors cut to 2 of 3, and demographic ratings cut to 2 of 6 categories with 2 groups each; the real row carries every category and group.

```json
{
  "record_type": "company",
  "employer_id": 9079,
  "resolved_from": "name",
  "company_name": "Google Inc.",
  "short_name": "Google",
  "employer_type": "Company - Public",
  "year_founded": 1998,
  "is_valid": true,
  "headquarters": "Mountain View, CA",
  "revenue": "$10+ billion (USD)",
  "size": "10000+ Employees",
  "size_category": "GIANT",
  "website": "https://goo.gle/4ehVuXi",
  "primary_industry": "Internet & Web Services",
  "primary_industry_id": 200063,
  "description": "Since our founding in 1998, Google has grown by leaps and bounds. Starting from two computer science students in a university dorm room, we now have over a hundred thousand employe ...",
  "mission": "Organize the world’s information and make it universally accessible and useful.",
  "logo_url": "https://media.glassdoor.com/sqls/9079/google-squarelogo-1441130773284.png",
  "logo_url_large": "https://media.glassdoor.com/sqll/9079/google-squarelogo-1441130773284.png",
  "cover_photo_url": null,
  "overview_url": "https://www.glassdoor.com/Overview/Working-at-Google-EI_IE9079.11,17.htm",
  "reviews_url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm",
  "jobs_url": "https://www.glassdoor.com/Jobs/Google-Jobs-E9079.htm",
  "salaries_url": "https://www.glassdoor.com/Salary/Google-Salaries-E9079.htm",
  "interview_url": "https://www.glassdoor.com/Interview/Google-Interview-Questions-E9079.htm",
  "benefits_url": "https://www.glassdoor.com/Benefits/Google-Benefits-E9079.htm",
  "photos_url": "https://www.glassdoor.com/Photos/Google-Office-Photos-E9079.htm",
  "locations_url": "https://www.glassdoor.com/Location/All-Google-Office-Locations-E9079.htm",
  "faq_url": "https://www.glassdoor.com/FAQ/Google-Questions-E9079.htm",
  "review_count": 71308,
  "reviews_available": 65830,
  "salary_count": 192406,
  "photo_count": 621,
  "interview_count": 0,
  "job_count": 5647,
  "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
  },
  "rating_distribution_by_category": {
    "culture_and_values": {
      "one_star": 508,
      "two_star": 524,
      "three_star": 1598,
      "four_star": 2978,
      "five_star": 7177
    },
    "work_life_balance": {
      "one_star": 476,
      "two_star": 580,
      "three_star": 1759,
      "four_star": 2941,
      "five_star": 6874
    },
    "career_opportunities": {
      "one_star": 500,
      "two_star": 609,
      "three_star": 1903,
      "four_star": 3301,
      "five_star": 6995
    },
    "senior_management": {
      "one_star": 861,
      "two_star": 858,
      "three_star": 2132,
      "four_star": 3137,
      "five_star": 5597
    },
    "compensation_and_benefits": {
      "one_star": 276,
      "two_star": 234,
      "three_star": 1098,
      "four_star": 3087,
      "five_star": 8249
    },
    "diversity_and_inclusion": {
      "one_star": 443,
      "two_star": 399,
      "three_star": 1334,
      "four_star": 2795,
      "five_star": 7670
    }
  },
  "ceo": {
    "name": "Sundar Pichai",
    "photoUrl": "https://media.glassdoor.com/people/sql/9079/google-sundar-pichai.png",
    "title": "CEO"
  },
  "rated_ceo": {
    "id": 380236,
    "name": "Sundar Pichai",
    "photoUrl": "https://media.glassdoor.com/people/sql/9079/google-sundar-pichai.png",
    "title": "CEO"
  },
  "demographic_ratings": [
    {
      "category": "gender",
      "values": [
        {
          "value": "man",
          "review_count": 3744,
          "overall": 4.3,
          "business_outlook": 0.78,
          "career_opportunities": 4.1,
          "ceo_approval": 0.78,
          "compensation_and_benefits": 4.5,
          "culture_and_values": 4.1,
          "diversity_and_inclusion": 4.3,
          "recommend_to_friend": 0.85,
          "work_life_balance": 4.1,
          "senior_management": 3.7
        },
        {
          "value": "woman",
          "review_count": 1879,
          "overall": 4.2,
          "business_outlook": 0.78,
          "career_opportunities": 4.0,
          "ceo_approval": 0.77,
          "compensation_and_benefits": 4.4,
          "culture_and_values": 4.1,
          "diversity_and_inclusion": 4.1,
          "recommend_to_friend": 0.81,
          "work_life_balance": 4.1,
          "senior_management": 3.7
        }
      ]
    },
    {
      "category": "raceEthnicity",
      "values": [
        {
          "value": "indigenousAmerican",
          "review_count": 212,
          "overall": 4.4,
          "business_outlook": 0.82,
          "career_opportunities": 4.4,
          "ceo_approval": 0.85,
          "compensation_and_benefits": 4.4,
          "culture_and_values": 4.2,
          "diversity_and_inclusion": 4.2,
          "recommend_to_friend": 0.89,
          "work_life_balance": 4.3,
          "senior_management": 4.1
        },
        {
          "value": "asian",
          "review_count": 2083,
          "overall": 4.4,
          "business_outlook": 0.83,
          "career_opportunities": 4.2,
          "ceo_approval": 0.83,
          "compensation_and_benefits": 4.5,
          "culture_and_values": 4.3,
          "diversity_and_inclusion": 4.4,
          "recommend_to_friend": 0.89,
          "work_life_balance": 4.3,
          "senior_management": 3.9
        }
      ]
    }
  ],
  "competitors": [
    {
      "employer_id": 1651,
      "name": "Microsoft Corporation",
      "short_name": "Microsoft",
      "logo_url": "https://media.glassdoor.com/sql/1651/microsoft-squarelogo-1479856042252.png"
    },
    {
      "employer_id": 1138,
      "name": "Apple Inc.",
      "short_name": "Apple",
      "logo_url": "https://media.glassdoor.com/sql/1138/apple-squarelogo-1595530154096.png"
    }
  ],
  "awards": [
    {
      "award_id": 83,
      "name": "Best Places to Work 2018",
      "rank": 5,
      "year": "2018",
      "list_type": "BPTW",
      "is_current": false
    },
    {
      "award_id": 100,
      "name": "Best Places to Work 2019",
      "rank": 8,
      "year": "2019",
      "list_type": "BPTW",
      "is_current": false
    }
  ],
  "subsidiaries": [
    {
      "employer_id": 40803,
      "name": "YouTube, LLC",
      "short_name": "YouTube",
      "logo_url": "https://media.glassdoor.com/sql/40803/youtube-squarelogo.png"
    },
    {
      "employer_id": 1368745,
      "name": "Calico Life Sciences LLC",
      "short_name": "Calico Life Sciences",
      "logo_url": "https://media.glassdoor.com/sql/1368745/calico-squarelogo-1496902283109.png"
    },
    {
      "employer_id": 2328370,
      "name": "Sidewalk Labs",
      "short_name": "Sidewalk Labs",
      "logo_url": "https://media.glassdoor.com/sql/2328370/sidewalk-labs-squarelogo-1558374555705.png"
    }
  ],
  "siblings": []
}
```

`demographic_ratings` breaks the company's ratings out by gender, race and
ethnicity, sexual orientation, disability, parent or caregiver status and
veteran status, each group with its own sub-ratings and the number of reviews
behind them. `competitors` gives you Glassdoor's own peer set with IDs you can
feed straight back in to benchmark against.

`ratings`, `rating_distribution` and `demographic_ratings` are the figures
Glassdoor publishes for the whole company. They describe Glassdoor's own scope, not the reviews returned in
your run, so do not expect the star breakdown to add up to your row count.

#### Exports

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.

CSV and Excel flatten nested fields such as `employer_responses`, `ratings`,
`rating_distribution` and `awards` into dotted columns. Choose JSON or JSONL when
you want those nested shapes intact.

### Pricing

Pay per event. You are charged for review rows only.

| Event | When charged | 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**. The per-review price drops on higher
Apify plans, to $0.00089, $0.00079 and $0.00069.

Worked examples at the standard rate:

| What you run | Reviews | Cost |
|---|---|---|
| One company, default limit | 100 | $0.10 |
| Ten companies, 500 each | 5,000 | $4.95 |
| One large employer, every review | 20,561 | $20.36 |

Each figure adds the one-off $0.00399 start. Filters reduce what you receive and
you are only charged for rows actually delivered, so a narrow `textSearch` or
star band costs less than the same run unfiltered.

### FAQ

**Can I really get more than 200 reviews for one company?**
Yes. Glassdoor's website stops showing you reviews after about 200, but that is a
limit of the website, not of the data. Asked for every review Siemens AG has,
this scraper returned 20,561 of the 20,561 available, with no gaps and no
duplicates.

**Do I need a Glassdoor account, login or cookies?**
No. Provide companies and run.

**How do I join reviews to the companies they came from?**
You do not have to. Every review row already carries `employer_id` and
`company_reviews_url`. Keep `includeCompanyProfile` on and you also get one
profile row per company, joinable on the same `employer_id`.

**Which companies can I scrape?**
Any company with a Glassdoor profile. Pass a name, a Glassdoor URL from either
the reviews or profile page, or the numeric company ID.

**What happens if one company in my list cannot be found?**
That input is skipped with a warning and the run continues with the rest. You are
not charged for reviews that were never delivered.

**Can I detect new or edited reviews between runs?**
Yes. `review_posted_at` is when the review first appeared and
`review_updated_at` is when it last changed, so a scheduled run can tell the two
apart. Combine with `postedAfter` to keep watch runs small.

**Why does the star breakdown not add up to my reviews?**
`rating_distribution` and `ratings` are Glassdoor's own published figures for the
whole company, calculated over a narrower and more positive population than the
review list. They are included because they are what Glassdoor displays, not as a
summary of your rows.

**Is there a free tier?**
Apify free-plan 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.

**Can I get jobs, salaries or interview questions too?**
Not from this Actor. It is deliberately scoped to reviews and company profiles.

### 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.

# 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.

## `includeCompanyProfile` (type: `boolean`):

Add one row per company with headquarters, size, revenue, website, industry, founding year, average ratings, the 1 to 5 star breakdown and awards. Company profile rows are <b>never charged</b>.

## `textSearch` (type: `string`):

Only reviews mentioning this word or phrase, matched across the summary, pros, cons and advice.

## `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.

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

Exclude reviews written by former employees.

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

Only reviews from these employment types. Leave empty for all types.

## `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,
  "includeCompanyProfile": true,
  "sort": "RELEVANCE",
  "onlyCurrentEmployees": false
}
```

# 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,
    "textSearch": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/glassdoor-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,
    "textSearch": "",
}

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/glassdoor-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,
  "textSearch": ""
}' |
apify call zen-studio/glassdoor-scraper --silent --output-dataset

```

## MCP server setup

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