# Glassdoor Reviews & Jobs · No 200-Cap · AI Employer Intel (`excitable_pickle/glassdoor-salary-interview-scraper`) Actor

Glassdoor scraper that survives the anti-bot wall — no login, no 200-review cap: full reviews with sub-ratings, pros/cons, employer replies, plus jobs, salaries & interviews. New AI Employer Intelligence: complaint themes, attrition-risk signals & quick wins from real reviews.

- **URL**: https://apify.com/excitable\_pickle/glassdoor-salary-interview-scraper.md
- **Developed by:** [Pavan](https://apify.com/excitable_pickle) (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

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

<p align="center">
  <img src="https://cdn.simpleicons.org/glassdoor/0CAA41" width="90" height="90" alt="Glassdoor Reviews & Jobs · No 200-Cap · AI Employer Intel Logo" />
</p>

## Glassdoor Reviews & Jobs · No 200-Cap · AI Employer Intel

Access our Glassdoor.com Scraper with pay-per-result pricing, or explore our subscription version <a href="https://apify.com/excitable_pickle/apify-glassdoor-reviews-scraper">here</a>.

### 🧠 NEW: AI Employer Intelligence — reviews → attrition & culture signals

Flip on **`painPointAnalysis`** and the scraper doesn't just return reviews — it returns **what employees actually complain about, who's about to leave, and what the employer should fix first**. After scraping, one AI pass per employer clusters every review into ranked complaint themes (management, compensation, work-life balance, culture, career growth), each with severity and how often it recurs — plus standout strengths, attrition-risk signals, and quick wins:

> *BAT, 30 reviews (real run) →* **Toxic workplace culture & leadership credibility** (severity 5, 23% of reviews) · **Post-acquisition decline & operational pressure** (severity 5, 20%) · **Compensation below market** (severity 4, 17%) · attrition signal: *"turnover rate over last several years has been high" — current senior employee* · quick win: *fix vacation accrual claw-backs — punitive and a likely legal liability*.

One `painPointAnalysis` row per employer, straight from real employee reviews — no prompts, no second tool. Vet an employer before a hire or an investment, benchmark a competitor's culture, or feed recruiting-intel dashboards. Works on any reviews URL. Paid Apify plans only; billed per employer analyzed ($0.05).

### How it works

![How Glassdoor PPE Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-glassdoor.png)

Scrape **everything** from any Glassdoor company page — employee reviews, job postings, interview questions, salary bands, benefits, and the company overview — in one actor. The headline feature: it **bypasses Glassdoor's 200-result review cap**, so you get *full* review history, not the first ~200 the website shows. Pure HTTP, no browser, and no Glassdoor login.

### Why use this scraper

- **Bypasses the 200-review limit** — Glassdoor's own UI stops paginating at ~200 reviews per company. This actor pulls the **complete** review history, which is the #1 reason serious HR/market-research buyers need a scraper at all.
- **Six data types from one company URL** — reviews, jobs, interviews, salaries, benefits, and company overview. Pick what you want with the `command` input; mix companies freely in `startUrls`.
- **Full review depth** — every review carries the overall rating **plus 8 sub-ratings** (work-life balance, culture & values, diversity & inclusion, career opportunities, compensation & benefits, senior leadership, CEO approval, business outlook), pros/cons/advice, job title, employment length, location, language, and any employer response.
- **Company-level stats** — optional rollups: review stats, interview stats, benefits stats, aggregate ratings.
- **Filters & monitoring** — keyword filter on reviews, date cutoffs (only reviews/interviews/benefits newer than a date), sort order, and a monitoring mode that returns only *new* reviews since the last run.
- **Granular job search** — search jobs by keyword & location with filters for job type, salary band, company size, company rating, industry, job function, posting age, workplace type and radius — no need to hand-craft a Glassdoor URL. Flip `saveOnlyUniqueItems` on to drop duplicate postings automatically.
- **All languages & locales in one run** — flip one toggle and reviews (and salaries) come back in **every language Glassdoor holds** (eng, fra, deu, spa, por, ita, nld, …), not just the English slice most scrapers stop at. Essential for companies with large non-US workforces.
- **Newest-first sorting that actually works** — set `sortReviewsBy: DATE` and get the most recent reviews first, so a small `maxItems` run reliably captures what employees said *this month* instead of a relevance-ranked sample from years back.
- **Pure HTTP, no browser** — fast, low-memory, datacenter-proxy friendly.
- **No login or Glassdoor account needed** — point it at any public company URL and it pulls the data over plain HTTP. No cookies, no sign-in, no CAPTCHA to clear.
- **Reviews, not just job listings** — most Glassdoor scrapers only pull job postings. This one returns the full employee reviews with all 8 sub-ratings, pros/cons/advice and employer replies, with jobs/salaries/interviews as optional extras.

***

### Overview

Glassdoor is the largest employer-review and salary-transparency platform — but its website deliberately limits what you can see: reviews stop at ~200 per company, salaries and interviews are gated, and there's no bulk export. This actor lifts those limits and returns clean structured JSON/CSV for any company you point it at.

You provide one or more **Glassdoor company URLs** (the Reviews, Jobs, Salaries, Interviews, or Overview tab — any of them), choose what to extract via `command`, and the actor paginates through the full dataset.

***

### Supported inputs

| Input | What you get |
|---|---|
| **Company Reviews URL** — `/Reviews/{Company}-Reviews-E{id}.htm` | Every review (past the 200 cap) with overall + 8 sub-ratings, pros/cons/advice, employer responses |
| **Jobs URL** — `/Jobs/{Company}-Jobs-E{id}.htm` | Open job postings: title, location, salary estimate, posting age, apply link |
| **Salaries URL** — `/Salary/{Company}-Salaries-E{id}.htm` | Salary bands by role: base, total comp, percentiles, sample size |
| **Interviews URL** — `/Interview/{Company}-Interview-Questions-E{id}.htm` | Interview experiences: questions, difficulty, outcome, process |
| **Overview URL** — `/Overview/Working-at-{Company}-EI_IE{id}.htm` | Company profile: size, industry, HQ, founded, ratings summary |

Mix company URLs freely in `startUrls`; use `command` to choose the data type. JSON or CSV output.

> Pure HTTP. No browser, no CAPTCHA solver.

***

### Use cases

| Audience | Use it to… |
|---|---|
| **HR & People Analytics** | Benchmark employer reputation vs competitors using the *full* review history + sub-rating breakdown, not the truncated 200. |
| **Market & investment research** | Track sentiment trends (culture, leadership, outlook) over time for target companies; monitoring mode catches new reviews. |
| **Recruiting & employer branding** | Mine pros/cons + interview questions to position roles and prep candidates. |
| **Compensation benchmarking** | Pull salary bands across roles and companies for pay-equity and offer calibration. |
| **Competitive intelligence** | Combine reviews + jobs + salaries for a full read on how a rival hires, pays, and is perceived. |

***

1. **Point at a company** — paste any Glassdoor company tab URL (Reviews/Jobs/Salaries/Interviews/Overview). The actor resolves the company id.
2. **Choose the data** — `command` selects which dataset to pull; toggles add company-level stats; filters narrow by keyword, date, or sort order.
3. **Paginate past the cap** — the actor walks the full result set (well beyond the website's 200-review limit) over plain HTTP, then emits one clean row per review / job / salary / interview.

***

### Input configuration

Field | Type | Required | Notes
\--- | --- | --- | ---
`startUrls` | `array` | yes | One or more Glassdoor company URLs (any tab). Mix companies freely.
`command` | `string` | no | Which dataset to scrape (reviews / interviews / locations / salaries / jobs / overview / benefits / culture).
`includes` | `string[]` | no | Keyword filter — only reviews containing these terms.
`sortReviewsBy` | `string` | no | Sort reviews (e.g. most recent, most helpful).
`reviewsStartDate` | `string` | no | Only reviews newer than this date.
`monitoringModeForReviews` | `boolean` | no | Return only *new* reviews vs the previous run — ideal for scheduled monitoring.
`includeAllReviews` | `boolean` | no | Pull the complete review history (past the 200 cap).
`includeCompanyReviewStats` | `boolean` | no | Attach aggregate review stats.
`includeCompanyInterviewStats` / `interviewsStartDate` | `boolean` / `string` | no | Interview stats + date cutoff.
`includeCompanyBenefitsStats` / `benefitsStartDate` | `boolean` / `string` | no | Benefits stats + date cutoff.
`includeAllSalaries` | `boolean` | no | Pull the full salary dataset.
`maxItems` | `integer` | no | Cap rows **per input URL**.
`maxConcurrency` / `minConcurrency` / `maxRequestRetries` | `integer` | no | Throughput + resilience tuning.
`proxy` | `object` | no | Leave empty — the actor already routes traffic through its own built-in residential proxy at no extra cost. Set only to override with your own proxies.

#### Job search by keyword & filters

Turn on `searchJobsByKeyword` to search Glassdoor jobs directly — no Glassdoor URL needed. Fill a keyword and/or location, then narrow with the filters below.

Field | Type | Notes
\--- | --- | ---
`searchJobsByKeyword` | `boolean` | Turn ON to run a keyword/location/filter job search using the fields below.
`searchKeyword` / `searchLocation` | `string` | What and where to search.
`sortBy` | `string` | Sort the results.
`maxDaysOld` | `string` | Only jobs posted within N days.
`remoteWorkType` | `string` | Remote / hybrid / on-site.
`applicationType` | `string` | Easy Apply only.
`jobType` | `string` | Employment type (full-time, part-time, contract, internship, …).
`minSalary` / `maxSalary` | `string` | Estimated-salary band.
`minRating` | `string` | Minimum Glassdoor company rating.
`employerSize` | `string` | Company size band.
`radius` | `string` | Distance around the location (miles).
`industryNid` | `string` | Company industry.
`sgocId` | `string` | Job function / department.
`deepSearch` | `boolean` | Break past Glassdoor's single-search depth cap: harvests the related job titles Glassdoor returned and re-runs the search for each, merging + de-duplicating by job ID. Bounded by `maxItems`.
`expandKeywords` | `string[]` | Extra keywords (synonyms / adjacent roles) to also search and merge when `deepSearch` is on.
`resumeKeywords` | `array` | Profile match — paste your CV skills; each job gets `matchScore` (0–100), `matchedSkills`, `missingSkills`. Does not change which jobs are returned.
`saveOnlyUniqueItems` | `boolean` | Remove duplicate rows before saving (by job ID / review ID / content).

#### Example input

```json
{
  "startUrls": [
    { "url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm" }
  ],
  "command": "reviews",
  "includeAllReviews": true,
  "includeCompanyReviewStats": true,
  "sortReviewsBy": "DATE",
  "maxItems": 1000
}
```

Job search with deep search + profile match:

```json
{
  "searchJobsByKeyword": true,
  "searchKeyword": "registered nurse",
  "searchLocation": "Chicago, IL",
  "jobType": "CF3CP",
  "minSalary": "70000",
  "deepSearch": true,
  "expandKeywords": ["nurse practitioner"],
  "resumeKeywords": [{ "keyword": "ICU" }, { "keyword": "pediatrics" }],
  "saveOnlyUniqueItems": true,
  "maxItems": 500
}
```

***

### Output

The actor emits one clean, flat row per item — review, job, salary, interview, benefit, location, or company overview. The `command` input selects which dataset you get. Below is a complete sample object **and** a field reference for every supported data type.

#### Review Data Structure

```json
{
    "__typename": "EmployerReviewRG",
    "advice": null,
    "adviceOriginal": null,
    "cons": "No much competition, which means being laid back most of the time",
    "consOriginal": null,
    "countHelpful": 0,
    "countNotHelpful": 0,
    "employer": {
      "__typename": "Employer",
      "id": 10052,
      "largeLogoUrl": "https://media.glassdoor.com/sqll/10052/reliance-industries-squarelogo.png",
      "regularLogoUrl": "https://media.glassdoor.com/sql/10052/reliance-industries-squarelogo.png",
      "shortName": "Reliance Industries"
    },
    "employerResponses": [],
    "employmentStatus": "REGULAR",
    "featured": false,
    "flaggingDisabled": null,
    "isCurrentJob": true,
    "jobTitle": {
      "__typename": "JobTitle",
      "id": 1185487,
      "text": "Private Sector Specialist"
    },
    "languageId": "eng",
    "lengthOfEmployment": 1,
    "location": {
      "__typename": "City",
      "id": 1138213,
      "name": "Washington, DC",
      "type": "CITY"
    },
    "originalLanguageId": null,
    "pros": "Friendly environment, good salary scale",
    "prosOriginal": null,
    "ratingBusinessOutlook": "POSITIVE",
    "ratingCareerOpportunities": 5,
    "ratingCeo": "APPROVE",
    "ratingCompensationAndBenefits": 5,
    "ratingCultureAndValues": 5,
    "ratingDiversityAndInclusion": 5,
    "ratingOverall": 5,
    "ratingRecommendToFriend": "POSITIVE",
    "ratingSeniorLeadership": 5,
    "ratingWorkLifeBalance": 5,
    "reviewDateTime": "2023-12-17T11:56:29.123",
    "reviewId": 82665673,
    "summary": "Amazing",
    "summaryOriginal": null,
    "translationMethod": null,
    "companyReviewStats": {
        "demographicRatingsRG": [
            {
                "__typename": "DemographicRatings",
                "category": "gender",
                "categoryRatings": [
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "man",
                        "ratings": null
                    },
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "woman",
                        "ratings": {
                            "__typename": "EmployerRatings",
                            "businessOutlookRating": 0.17,
                            "careerOpportunitiesRating": 2.9,
                            "ceoRating": -1,
                            "compensationAndBenefitsRating": 2.3,
                            "cultureAndValuesRating": 3.7,
                            "diversityAndInclusionRating": 3.9,
                            "overallRating": 3.6,
                            "recommendToFriendRating": 0.8,
                            "reviewCount": 10
                        }
                    },
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "nonBinary",
                        "ratings": null
                    }
                ]
            },
            {
                "__typename": "DemographicRatings",
                "category": "raceEthnicity",
                "categoryRatings": [
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "white",
                        "ratings": {
                            "__typename": "EmployerRatings",
                            "businessOutlookRating": 0.17,
                            "careerOpportunitiesRating": 2.9,
                            "ceoRating": -1,
                            "compensationAndBenefitsRating": 2.3,
                            "cultureAndValuesRating": 3.7,
                            "diversityAndInclusionRating": 3.9,
                            "overallRating": 3.6,
                            "recommendToFriendRating": 0.79,
                            "reviewCount": 11
                        }
                    }
                ]
            },
            {
                "__typename": "DemographicRatings",
                "category": "sexualOrientation",
                "categoryRatings": [
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "yes",
                        "ratings": null
                    },
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "no",
                        "ratings": {
                            "__typename": "EmployerRatings",
                            "businessOutlookRating": 0,
                            "careerOpportunitiesRating": 2.4,
                            "ceoRating": -1,
                            "compensationAndBenefitsRating": 2.4,
                            "cultureAndValuesRating": 4.1,
                            "diversityAndInclusionRating": 4.3,
                            "overallRating": 3.4,
                            "recommendToFriendRating": 0.75,
                            "reviewCount": 6
                        }
                    }
                ]
            },
            {
                "__typename": "DemographicRatings",
                "category": "disability",
                "categoryRatings": [
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "yes",
                        "ratings": null
                    },
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "no",
                        "ratings": {
                            "__typename": "EmployerRatings",
                            "businessOutlookRating": 0.11,
                            "careerOpportunitiesRating": 2.8,
                            "ceoRating": -1,
                            "compensationAndBenefitsRating": 2,
                            "cultureAndValuesRating": 3.6,
                            "diversityAndInclusionRating": 3.7,
                            "overallRating": 3.4,
                            "recommendToFriendRating": 0.77,
                            "reviewCount": 9
                        }
                    }
                ]
            },
            {
                "__typename": "DemographicRatings",
                "category": "parentOrCaregiver",
                "categoryRatings": [
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "parentOrGuardian",
                        "ratings": null
                    },
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "caregiver",
                        "ratings": null
                    },
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "no",
                        "ratings": {
                            "__typename": "EmployerRatings",
                            "businessOutlookRating": 0.5,
                            "careerOpportunitiesRating": 3.3,
                            "ceoRating": -1,
                            "compensationAndBenefitsRating": 2.4,
                            "cultureAndValuesRating": 3.3,
                            "diversityAndInclusionRating": 3.3,
                            "overallRating": 3.5,
                            "recommendToFriendRating": 0.96,
                            "reviewCount": 7
                        }
                    }
                ]
            },
            {
                "__typename": "DemographicRatings",
                "category": "veteranStatus",
                "categoryRatings": [
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "yes",
                        "ratings": null
                    },
                    {
                        "__typename": "DemographicCategoryValueRatings",
                        "categoryValue": "no",
                        "ratings": {
                            "__typename": "EmployerRatings",
                            "businessOutlookRating": 0.13,
                            "careerOpportunitiesRating": 2.6,
                            "ceoRating": -1,
                            "compensationAndBenefitsRating": 2.5,
                            "cultureAndValuesRating": 3.8,
                            "diversityAndInclusionRating": 3.9,
                            "overallRating": 3.2,
                            "recommendToFriendRating": 0.58,
                            "reviewCount": 11
                        }
                    }
                ]
            }
        ],
        "employerReviewsRG": {
            "__typename": "EmployerReviewsRG",
            "allReviewsCount": 47,
            "currentPage": 0,
            "filteredReviewsCount": 45,
            "filteredReviewsCountByLang": [
                {
                    "__typename": "ReviewsCountByLanguage",
                    "count": 45,
                    "isoLanguage": "eng"
                }
            ],
            "numberOfPages": 1,
            "queryJobTitle": null,
            "ratingCountDistribution": {
                "__typename": "RatingCountDistribution",
                "overall": {
                    "_1": 5,
                    "_2": 5,
                    "_3": 6,
                    "_4": 12,
                    "_5": 17,
                    "__typename": "FiveStarRatingCountDistribution"
                }
            },
            "ratings": {
                "__typename": "EmployerRatings",
                "careerOpportunitiesRating": 3.4,
                "ceoRating": 1,
                "compensationAndBenefitsRating": 3.1,
                "cultureAndValuesRating": 4.3,
                "diversityAndInclusionRating": 4.2,
                "overallRating": 3.9,
                "ratedCeo": {
                    "__typename": "Ceo",
                    "name": "Rachelle Rutherford",
                    "photoUrl": "https://media.glassdoor.com/people/sql/839181/kids-on-the-move-ceo1707094358919.png",
                    "title": "Chief Executive Officer"
                },
                "recommendToFriendRating": 0.82,
                "seniorManagementRating": 3.9,
                "workLifeBalanceRating": 3.9
            },
            "reviews": [
                {
                    "__typename": "EmployerReviewRG",
                    "advice": null,
                    "cons": "not a ton of downsides",
                    "countHelpful": 0,
                    "employer": {
                        "__typename": "Employer",
                        "id": 839181,
                        "name": "Kids on the Move",
                        "squareLogoUrl": "https://media.glassdoor.com/sql/839181/kids-on-the-move-squarelogo-1499250691084.png"
                    },
                    "employerResponses": [],
                    "featured": false,
                    "hasEmployerResponse": false,
                    "isCurrentJob": true,
                    "jobTitle": {
                        "__typename": "JobTitle",
                        "text": "VP of Grant Strategy and Operations"
                    },
                    "lengthOfEmployment": 9,
                    "location": {
                        "__typename": "City",
                        "id": 1128244,
                        "name": "Orem, UT",
                        "type": "CITY"
                    },
                    "pros": "Most employees working for Kids on the Move are here because they love what they do. \nThe culture is amazing, they really do care about their employees.\nmaking huge strides to fill the service gaps for families in the community.\ndedicated executive team.",
                    "ratingBusinessOutlook": "POSITIVE",
                    "ratingCareerOpportunities": 5,
                    "ratingCeo": "APPROVE",
                    "ratingCompensationAndBenefits": 5,
                    "ratingCultureAndValues": 5,
                    "ratingDiversityAndInclusion": 5,
                    "ratingOverall": 5,
                    "ratingRecommendToFriend": "POSITIVE",
                    "ratingSeniorLeadership": 5,
                    "ratingWorkLifeBalance": 5,
                    "reviewDateTime": "2024-12-13T15:00:29.823",
                    "reviewId": 93656313,
                    "summary": "Great culture very rewarding"
                }
            ],
            "sortCriteria": {
                "__typename": "SortCriteria2",
                "isAscending": false,
                "sortType": "RELEVANCE"
            }
        }
    }
}
```

#### Review Field Descriptions:

- `__typename`: Type of the object (indicates it's an employer review).
- `advice`: Advice given to the company by the reviewer (if any).
- `adviceOriginal`: Original version of the advice if translation is used.
- `cons`: Negative aspects mentioned by the reviewer.
- `consOriginal`: Original version of the cons if translation is used.
- `countHelpful`: Number of users who found the review helpful.
- `countNotHelpful`: Number of users who found the review not helpful.
- `employer`: Information about the employer.
  - `id`: Unique identifier for the employer.
  - `largeLogoUrl`: URL to the large version of the employer's logo.
  - `regularLogoUrl`: URL to the regular version of the employer's logo.
  - `shortName`: Short name of the employer.
- `employerResponses`: Company's responses to the review (if any).
- `employmentStatus`: Employment status of the reviewer (e.g., "REGULAR").
- `featured`: Indicates if the review is featured.
- `flaggingDisabled`: Indicates if flagging the review is disabled.
- `isCurrentJob`: Boolean indicating if the reviewer is a current employee.
- `jobTitle`: Information about the reviewer's job title.
  - `id`: Unique identifier for the job title.
  - `text`: The job title text.
- `languageId`: Language identifier of the review.
- `lengthOfEmployment`: Duration of employment in years.
- `location`: Location of the reviewer.
  - `id`: Unique identifier for the location.
  - `name`: Name of the location.
  - `type`: Type of location (e.g., "CITY").
- `originalLanguageId`: Original language of the review if translation is used.
- `pros`: Positive aspects mentioned by the reviewer.
- `prosOriginal`: Original version of the pros if translation is used.
- `ratingBusinessOutlook`: Business outlook rating (e.g., "POSITIVE").
- `ratingCareerOpportunities`: Rating for career opportunities (1-5 scale).
- `ratingCeo`: CEO approval rating (e.g., "APPROVE").
- `ratingCompensationAndBenefits`: Rating for compensation and benefits (1-5 scale).
- `ratingCultureAndValues`: Rating for culture and values (1-5 scale).
- `ratingDiversityAndInclusion`: Rating for diversity and inclusion (1-5 scale).
- `ratingOverall`: Overall rating of the company (1-5 scale).
- `ratingRecommendToFriend`: Whether the reviewer would recommend the company to a friend (e.g., "POSITIVE").
- `ratingSeniorLeadership`: Rating for senior leadership (1-5 scale).
- `ratingWorkLifeBalance`: Rating for work-life balance (1-5 scale).
- `reviewDateTime`: Date and time when the review was posted.
- `reviewId`: Unique identifier for the review.
- `summary`: Summary or title of the review.
- `summaryOriginal`: Original version of the summary if translation is used.
- `translationMethod`: Method of translation used (if applicable).

##### `companyReviewStats` Field Descriptions:

- `demographicRatingsRG`: Array of demographic ratings grouped by categories such as gender, race/ethnicity, sexual orientation, disability, etc.
  - `category`: The demographic category (e.g., "gender", "raceEthnicity").
  - `categoryRatings`: Array of ratings for specific demographic values within the category.
    - `categoryValue`: The specific demographic value (e.g., "man", "woman").
    - `ratings`: Ratings for the demographic value, including:
      - `businessOutlookRating`: Rating for business outlook (0-5 scale).
      - `careerOpportunitiesRating`: Rating for career opportunities (0-5 scale).
      - `ceoRating`: CEO approval rating (0-5 scale).
      - `compensationAndBenefitsRating`: Rating for compensation and benefits (0-5 scale).
      - `cultureAndValuesRating`: Rating for culture and values (0-5 scale).
      - `diversityAndInclusionRating`: Rating for diversity and inclusion (0-5 scale).
      - `overallRating`: Overall rating for the demographic value (0-5 scale).
      - `recommendToFriendRating`: Percentage of respondents recommending the company to a friend (0-1 scale).
      - `reviewCount`: Number of reviews for the demographic value.

- `employerReviewsRG`: Object containing aggregated review statistics for the employer.
  - `allReviewsCount`: Total number of reviews for the employer.
  - `currentPage`: Current page of reviews being displayed.
  - `filteredReviewsCount`: Number of reviews after applying filters.
  - `filteredReviewsCountByLang`: Array of review counts grouped by language.
    - `count`: Number of reviews in the specific language.
    - `isoLanguage`: ISO code of the language (e.g., "eng").
  - `numberOfPages`: Total number of pages of reviews.
  - `queryJobTitle`: Job title used to filter reviews (if applicable).
  - `ratingCountDistribution`: Distribution of overall ratings (1-5 stars).
    - `_1`, `_2`, `_3`, `_4`, `_5`: Count of reviews for each star rating.
  - `ratings`: Aggregated ratings for the employer, including:
    - `careerOpportunitiesRating`: Rating for career opportunities (0-5 scale).
    - `ceoRating`: CEO approval rating (0-5 scale).
    - `compensationAndBenefitsRating`: Rating for compensation and benefits (0-5 scale).
    - `cultureAndValuesRating`: Rating for culture and values (0-5 scale).
    - `diversityAndInclusionRating`: Rating for diversity and inclusion (0-5 scale).
    - `overallRating`: Overall rating for the employer (0-5 scale).
    - `recommendToFriendRating`: Percentage of respondents recommending the company to a friend (0-1 scale).
    - `seniorManagementRating`: Rating for senior management (0-5 scale).
    - `workLifeBalanceRating`: Rating for work-life balance (0-5 scale).
    - `ratedCeo`: Information about the CEO.
      - `name`: Name of the CEO.
      - `photoUrl`: URL to the CEO's photo.
      - `title`: Title of the CEO.
  - `reviews`: Array of individual reviews for the employer.
    - Each review contains fields such as `summary`, `pros`, `cons`, `ratingOverall`, etc.
  - `sortCriteria`: Sorting criteria for the reviews.
    - `isAscending`: Boolean indicating if the sorting is in ascending order.
    - `sortType`: Type of sorting applied (e.g., "RELEVANCE").

#### Interview Data Structure

Here's a sample of the interview data structure:

```json
{
    "__typename": "InterviewIG",
    "id": 92624279,
    "advice": null,
    "countHelpful": 0,
    "countNotHelpful": 0,
    "currentJobFlag": true,
    "declinedReason": null,
    "difficulty": "AVERAGE",
    "durationDays": null,
    "employerResponses": [],
    "experience": "POSITIVE",
    "featured": false,
    "interviewDateTime": null,
    "jobTitle": {
      "__typename": "JobTitle",
      "text": "Software Engineer"
    },
    "location": {
      "__typename": "Country",
      "type": "COUNTRY",
      "name": "Kuwait"
    },
    "negotiationDescription": null,
    "otherSource": null,
    "otherSteps": null,
    "outcome": "NO_OFFER",
    "processDescription": "Two round of technical interview. Asked basic technical questions on first round and application level questions on second round. There were coding questions which we have to show output. Second round was more about analytical questions.",
    "reviewDateTime": "2024-11-07T09:06:33.793",
    "source": null,
    "userQuestions": [
      {
        "__typename": "InterviewUserQuestionIG",
        "answerCount": 0,
        "id": 7753896,
        "question": "Basic technical questions and coding questions "
      }
    ],
    "companyInterviewStats": {
        "employerInterviews": {
            "__typename": "EmployerInterviewsIG",
            "difficultySubmissionCount": 4,
            "difficultySum": 10,
            "interviewExperienceCounts": [
                {
                    "__typename": "InterviewExperienceCount",
                    "count": 3,
                    "percentage": 75,
                    "type": "POSITIVE"
                },
                {
                    "__typename": "InterviewExperienceCount",
                    "count": 1,
                    "percentage": 25,
                    "type": "NEGATIVE"
                }
            ],
            "interviewObtainedChannelCounts": [
                {
                    "__typename": "InterviewObtainedChannelCount",
                    "count": 1,
                    "percentage": 100,
                    "type": "APPLIED_ONLINE"
                }
            ],
            "totalInterviewCount": 4
        }
    }
}
```

#### Interview Field Descriptions:

- `__typename`: Type of the object (indicates it's an interview).
- `id`: Unique identifier for the interview.
- `advice`: Advice given to the company by the interviewee (if any).
- `countHelpful`: Number of users who found the interview review helpful.
- `countNotHelpful`: Number of users who found the interview review not helpful.
- `currentJobFlag`: Boolean indicating if the interviewee is a current employee.
- `declinedReason`: Reason for declining the offer (if applicable).
- `difficulty`: Difficulty level of the interview (e.g., "AVERAGE").
- `durationDays`: Duration of the interview process in days (if applicable).
- `employerResponses`: Company's responses to the interview review (if any).
- `experience`: Overall experience of the interview (e.g., "POSITIVE").
- `featured`: Indicates if the interview review is featured.
- `interviewDateTime`: Date and time when the interview took place.
- `jobTitle`: Information about the job title for which the interview was conducted.
  - `text`: The job title text.
- `location`: Location of the interview.
  - `type`: Type of location (e.g., "COUNTRY").
  - `name`: Name of the location.
- `negotiationDescription`: Description of any negotiation that took place (if applicable).
- `otherSource`: Other sources of information for the interview (if applicable).
- `otherSteps`: Other steps involved in the interview process (if applicable).
- `outcome`: Outcome of the interview (e.g., "NO\_OFFER").
- `processDescription`: Description of the interview process, including rounds and types of questions asked.
- `reviewDateTime`: Date and time when the interview review was posted.
- `source`: Source of the interview information (if applicable).
- `userQuestions`: Questions asked during the interview.
  - `answerCount`: Number of answers provided for the question.
  - `question`: The interview question text.

##### `companyInterviewStats` Field Descriptions:

- `employerInterviews`: Object containing aggregated interview statistics for the employer.
  - `difficultySubmissionCount`: Total number of difficulty ratings submitted by interviewees.
  - `difficultySum`: Sum of all difficulty ratings submitted (used to calculate average difficulty).
  - `interviewExperienceCounts`: Array of counts for different types of interview experiences.
    - `count`: Number of interviewees who reported this type of experience.
    - `percentage`: Percentage of interviewees who reported this type of experience.
    - `type`: Type of experience (e.g., "POSITIVE", "NEGATIVE", "NEUTRAL").
  - `interviewObtainedChannelCounts`: Array of counts for different channels through which interviews were obtained.
    - `count`: Number of interviewees who reported obtaining the interview through this channel.
    - `percentage`: Percentage of interviewees who reported obtaining the interview through this channel.
    - `type`: Type of channel (e.g., "APPLIED\_ONLINE", "RECRUITER", "EMPLOYEE\_REFERRAL").
  - `totalInterviewCount`: Total number of interviews reported for the employer.

#### Location Data Structure

Here's a sample of the location data structure:

```json
{
    "__typename": "EmployerOfficeAddressEG",
    "addressLine1": "",
    "addressLine2": "",
    "administrativeAreaName1": "VA",
    "city": { "__typename": "City", "longName": "Herndon" },
    "cityId": 1130374,
    "cityName": "Herndon",
    "country": {
        "__typename": "Country",
        "continent": {
            "__typename": "Continent",
            "code": "NA",
            "id": 5,
            "name": "North America"
        }
    },
    "countryId": 1,
    "countryName": "US",
    "id": 328086,
    "latitude": 38.9694405,
    "longitude": -77.3863907,
    "metroId": 911,
    "officeLocationId": 417894,
    "postalCode": "",
    "stateId": 323
}
```

#### Location Field Descriptions:

- `__typename`: Type of the object (indicates it's an employer office address).
- `addressLine1`: First line of the office address (if applicable).
- `addressLine2`: Second line of the office address (if applicable).
- `administrativeAreaName1`: Administrative area name (e.g., state or region).
- `city`: Information about the city.
  - `longName`: Full name of the city.
- `cityId`: Unique identifier for the city.
- `cityName`: Name of the city.
- `country`: Information about the country.
  - `continent`: Continent information.
    - `code`: Continent code (e.g., "NA" for North America).
    - `id`: Unique identifier for the continent.
    - `name`: Name of the continent.
- `countryId`: Unique identifier for the country.
- `countryName`: Name of the country.
- `id`: Unique identifier for the location.
- `latitude`: Latitude of the office location.
- `longitude`: Longitude of the office location.
- `metroId`: Identifier for the metropolitan area.
- `officeLocationId`: Unique identifier for the office location.
- `postalCode`: Postal code of the office location (if applicable).
- `stateId`: Unique identifier for the state.

#### Salary Data Structure

Here's a sample of the salary data structure:

```json
{
    "__typename": "AggregatedSalaryEstimatesResult",
    "currency": {
        "__typename": "Currency",
        "code": "USD"
    },
    "jobTitle": {
        "__typename": "JobTitle",
        "id": 30330,
        "text": "Software Development Engineer I"
    },
    "salaryCount": 59651,
    "basePayStatistics": {
        "__typename": "StatisticsResult",
        "percentiles": [
            { "__typename": "Percentile", "ident": "P10", "value": 81706.74 },
            { "__typename": "Percentile", "ident": "P25", "value": 89902.5 },
            { "__typename": "Percentile", "ident": "P50", "value": 99985.34 },
            { "__typename": "Percentile", "ident": "P75", "value": 111199.01 },
            { "__typename": "Percentile", "ident": "P90", "value": 122353.05 }
        ]
    },
    "cashBonusStatistics": {
        "__typename": "StatisticsResult",
        "percentiles": [
            { "__typename": "Percentile", "ident": "P10", "value": 7701.77 },
            { "__typename": "Percentile", "ident": "P25", "value": 9959.19 },
            { "__typename": "Percentile", "ident": "P50", "value": 13278.91 },
            { "__typename": "Percentile", "ident": "P75", "value": 18590.48 },
            { "__typename": "Percentile", "ident": "P90", "value": 24300.41 }
        ]
    },
    "profitSharingStatistics": {
        "__typename": "StatisticsResult",
        "percentiles": []
    },
    "salesCommissionStatistics": {
        "__typename": "StatisticsResult",
        "percentiles": []
    },
    "stockBonusStatistics": {
        "__typename": "StatisticsResult",
        "percentiles": [
            { "__typename": "Percentile", "ident": "P10", "value": 9009.69 },
            { "__typename": "Percentile", "ident": "P25", "value": 11650.46 },
            { "__typename": "Percentile", "ident": "P50", "value": 15533.94 },
            { "__typename": "Percentile", "ident": "P75", "value": 21747.52 },
            { "__typename": "Percentile", "ident": "P90", "value": 28427.12 }
        ]
    },
    "tipsStatistics": {
        "__typename": "StatisticsResult",
        "percentiles": []
    },
    "totalAdditionalPayStatistics": {
        "__typename": "StatisticsResult",
        "percentiles": [
            { "__typename": "Percentile", "ident": "P10", "value": 16711.45 },
            { "__typename": "Percentile", "ident": "P25", "value": 21609.64 },
            { "__typename": "Percentile", "ident": "P50", "value": 28812.85 },
            { "__typename": "Percentile", "ident": "P75", "value": 40337.99 },
            { "__typename": "Percentile", "ident": "P90", "value": 52727.52 }
        ]
    },
    "totalPayStatistics": {
        "__typename": "StatisticsResult",
        "percentiles": [
            { "__typename": "Percentile", "ident": "P10", "value": 98418.19 },
            { "__typename": "Percentile", "ident": "P25", "value": 111512.14 },
            { "__typename": "Percentile", "ident": "P50", "value": 128798.19 },
            { "__typename": "Percentile", "ident": "P75", "value": 151537 },
            { "__typename": "Percentile", "ident": "P90", "value": 175080.57 }
        ]
    }
}
```

#### Salary Field Descriptions:

- `__typename`: Type of the object (indicates it's a salary estimate result).
- `currency`: Information about the currency.
  - `code`: Currency code (e.g., "USD").
- `jobTitle`: Information about the job title.
  - `id`: Unique identifier for the job title.
  - `text`: The job title text.
- `salaryCount`: Number of salary reports used to calculate the estimate.
- `basePayStatistics`: Base pay statistics, with percentiles.
  - `percentiles`: List of percentiles, each containing:
    - `ident`: Percentile identifier (e.g., "P10").
    - `value`: Salary value for that percentile.
- `cashBonusStatistics`: Cash bonus statistics, with percentiles.
- `profitSharingStatistics`: Profit sharing statistics, with percentiles.
- `salesCommissionStatistics`: Sales commission statistics, with percentiles.
- `stockBonusStatistics`: Stock bonus statistics, with percentiles.
- `tipsStatistics`: Tips statistics, with percentiles.
- `totalAdditionalPayStatistics`: Total additional pay statistics, with percentiles.
- `totalPayStatistics`: Total pay statistics, with percentiles.

#### Job Data Structure

Here's a sample of the job data structure:

```json
{
    "__typename": "JobViewHeader",
    "adOrderId": 1136043,
    "advertiserType": "GENERAL",
    "ageInDays": 0,
    "easyApply": false,
    "jobCountryId": 3,
    "jobLink": "/partner/jobListing.htm?pos=101&ao=1136043&s=21&guid=0000019325cb3bb8a1a66253ff87831b&src=GD_JOB_AD&t=ESR&vt=w&cs=1_a9ea494a&cb=1731505896766&jobListingId=1009525751372&jrtk=5-yul1-0-1icismf4vk3en805-5a9bb757085da551&rdserp=true",
    "jobResultTrackingKey": "5-yul1-0-1icismf4vk3en805-5a9bb757085da551",
    "jobTitleText": "Administrative Support III",
    "locationName": "Edson",
    "needsCommission": false,
    "payCurrency": "CAD",
    "payPeriod": "HOURLY",
    "payPeriodAdjustedPay": {
        "__typename": "PayPercentile",
        "p10": 23.529808,
        "p90": 28.6
    },
    "salarySource": "EMPLOYER_PROVIDED",
    "savedJobId": 0,
    "seoJobLink": "https://www.glassdoor.ca/job-listing/administrative-support-iii-alberta-health-services-JV_IC2274362_KO0,26_KE27,50.htm?jl=1009525751372",
    "sponsored": false
}
```

#### Job Field Descriptions:

- `__typename`: Type of the object (indicates it's a job posting).
- `adOrderId`: Advertisement order ID associated with the job.
- `advertiserType`: Type of advertiser for the job (e.g., "GENERAL").
- `ageInDays`: Age of the job posting in days.
- `easyApply`: Indicates if the job has an "Easy Apply" option.
- `jobCountryId`: Identifier for the country where the job is located.
- `jobLink`: Link to the job listing on Glassdoor.
- `jobResultTrackingKey`: Tracking key for the job result.
- `jobTitleText`: Title of the job.
- `locationName`: Name of the job location.
- `needsCommission`: Boolean indicating if the job requires commission.
- `payCurrency`: Currency of the job pay (e.g., "CAD").
- `payPeriod`: Pay period for the job (e.g., "HOURLY").
- `payPeriodAdjustedPay`: Adjusted pay for the job, containing percentile data.
  - `p10`: Pay at the 10th percentile.
  - `p90`: Pay at the 90th percentile.
- `salarySource`: Source of the salary information (e.g., "EMPLOYER\_PROVIDED").
- `savedJobId`: Identifier for the saved job.
- `seoJobLink`: SEO-optimized link to the job listing.
- `sponsored`: Indicates if the job is sponsored.

#### Overview/Company Data Structure

Here's a complete sample of the overview/company details data structure:

```json
{
    "__typename": "Employer",
    "activeStatus": "INACTIVE",
    "approvalStatus": "APPROVED",
    "headquarters": "Leeds, United Kingdom",
    "id": 2437366,
    "shortName": "Glean",
    "size": "51 to 200 Employees",
    "firstNotReassignedEmployerId": 2437366,
    "bestProfile": {
        "__typename": "EmployerProfile",
        "id": 2135934,
        "rowProfile": false
    },
    "legalActionBadges": [],
    "competitors": [],
    "profileByTld": {
        "__typename": "EmployerProfile",
        "id": 2135934,
        "rowProfile": false
    },
    "restOfWorldProfile": {
        "__typename": "EmployerProfile",
        "id": 8404956
    },
    "primaryIndustry": {
        "__typename": "EmployerIndustry",
        "industryId": 200060,
        "industryName": "Computer Hardware Development",
        "sectorId": 10013,
        "sectorName": "Information Technology"
    },
    "awards": [],
    "certifications": [],
    "employerManagedContent": [
        {
            "__typename": "EmployerManagedContent",
            "employerId": 2437366,
            "divisionProfileId": 2135934,
            "isContentPaidForTld": false,
            "featuredVideoLink": null,
            "profileCoverPhoto": null,
            "diversityContent": {
                "__typename": "DiversityAndInclusionContent",
                "programsAndInitiatives": null
            }
        }
    ],
    "website": "https://glean.co/",
    "type": "Company - Private",
    "revenue": "Unknown / Non-Applicable",
    "yearFounded": 2007,
    "officeAddresses": [
        {
            "__typename": "EmployerOfficeAddressEG",
            "id": 154288
        }
    ],
    "overview": {
        "__typename": "EmployerOverview",
        "description": null,
        "mission": null
    },
    "bestPlacesToWork": [],
    "bestLedCompanies": [],
    "coverPhoto": {
        "__typename": "EmployerCoverPhoto",
        "hiResUrl": null
    },
    "counts": {
        "__typename": "EmployerCounts",
        "benefitCount": 4,
        "globalJobCount": {
            "__typename": "EmployerJobCountHolder",
            "jobCount": 1
        },
        "interviewCount": 13,
        "photoCount": 4,
        "reviewCount": 16,
        "salaryCount": 76
    },
    "requirementsComplete": false,
    "parent": null,
    "ratings": {
        "__typename": "DefaultEmployerRatings",
        "diversityAndInclusionRatingCount": 10,
        "overallRating": 4.1
    },
    "squareLogoUrl": "https://media.glassdoor.com/sql/2437366/glean-squareLogo-1658933866089.png",
    "subsidiaries": [],
    "siblings": []
}
```

#### Overview Field Descriptions:

- `__typename`: Type of the object (indicates it's an employer)
- `activeStatus`: Current status of the company (e.g., "ACTIVE", "INACTIVE")
- `approvalStatus`: Approval status on Glassdoor
- `headquarters`: Company headquarters location
- `id`: Unique identifier for the company
- `shortName`: Short name or common name of the company
- `size`: Company size range in employees
- `firstNotReassignedEmployerId`: Primary employer ID if company has been reassigned
- `bestProfile`: Best profile information for the company
  - `id`: Profile identifier
  - `rowProfile`: Boolean indicating if it's a row profile
- `legalActionBadges`: Array of legal actions or badges
- `competitors`: Array of competitor companies
- `profileByTld`: Profile information by top-level domain
  - `id`: Profile identifier
  - `rowProfile`: Boolean indicating if it's a row profile
- `restOfWorldProfile`: Profile information for rest of world
  - `id`: Profile identifier
- `primaryIndustry`: Industry classification information
  - `industryId`: Unique identifier for the industry
  - `industryName`: Name of the industry
  - `sectorId`: Unique identifier for the sector
  - `sectorName`: Name of the sector
- `awards`: Array of company awards
- `certifications`: Array of company certifications
- `employerManagedContent`: Content managed by the employer
  - `employerId`: Employer identifier
  - `divisionProfileId`: Division profile identifier
  - `isContentPaidForTld`: Boolean indicating if content is paid
  - `featuredVideoLink`: Link to featured video
  - `profileCoverPhoto`: Cover photo information
  - `diversityContent`: Diversity and inclusion content
    - `programsAndInitiatives`: Programs and initiatives information
- `website`: Official company website URL
- `type`: Company type (e.g., "Company - Private", "Company - Public")
- `revenue`: Company revenue information
- `yearFounded`: Year the company was established
- `officeAddresses`: Array of office locations
  - `id`: Office location identifier
- `overview`: Company overview information
  - `description`: Company description
  - `mission`: Company mission statement
- `bestPlacesToWork`: Array of best places to work awards
- `bestLedCompanies`: Array of best-led company awards
- `coverPhoto`: Company cover photo information
  - `hiResUrl`: High-resolution photo URL
- `counts`: Various counts related to company presence on Glassdoor
  - `benefitCount`: Number of reported benefits
  - `globalJobCount`: Number of active job listings
  - `interviewCount`: Number of interview reviews
  - `photoCount`: Number of company photos
  - `reviewCount`: Number of company reviews
  - `salaryCount`: Number of salary reports
- `requirementsComplete`: Boolean indicating if company requirements are complete
- `parent`: Parent company information (if any)
- `ratings`: Company ratings information
  - `diversityAndInclusionRatingCount`: Number of diversity and inclusion ratings
  - `overallRating`: Overall company rating (out of 5)
- `squareLogoUrl`: URL to company's square logo
- `subsidiaries`: Array of subsidiary companies
- `siblings`: Array of sibling companies

#### Salaries Data Structure

Here's a sample of the salaries data structure:

```json
{
  "__typename": "AggregatedSalaryEstimatesResult",
  "basePayStatistics": {
    "__typename": "StatisticsResult",
    "mean": 111291.67,
    "percentiles": [
      {
        "__typename": "Percentile",
        "ident": "P95",
        "value": 169000
      },
      {
        "__typename": "Percentile",
        "ident": "P50",
        "value": 104000
      }
    ]
  },
  "cashBonusStatistics": {
    "__typename": "StatisticsResult",
    "mean": 13285.71,
    "percentiles": [
      {
        "__typename": "Percentile",
        "ident": "P50",
        "value": 15000
      }
    ]
  },
  "stockBonusStatistics": {
    "__typename": "StatisticsResult",
    "mean": 13285.71,
    "percentiles": [
      {
        "__typename": "Percentile",
        "ident": "P50",
        "value": 15000
      }
    ]
  },
  "currency": {
    "__typename": "Currency",
    "code": "USD",
    "symbol": "$"
  },
  "employer": {
    "__typename": "Employer",
    "id": 1234,
    "name": "Company Name",
    "primaryIndustryId": 200063
  },
  "jobTitle": {
    "__typename": "JobTitle",
    "id": 4279,
    "text": "Software Engineer"
  },
  "payPeriod": "ANNUAL",
  "salaryCount": 120,
  "totalPayStatistics": {
    "__typename": "StatisticsResult",
    "mean": 169184.56,
    "percentiles": [
      {
        "__typename": "Percentile",
        "ident": "P50",
        "value": 145000
      }
    ]
  }
}
```

#### Salaries Field Descriptions:

- `__typename`: Type of the object.
- `basePayStatistics`: Statistics on base pay. Includes `mean` and an array of `percentiles` (e.g. `P10`, `P25`, `P50`, `P75`, `P90`).
- `cashBonusStatistics`: Statistics on cash bonus pay, formatted like base pay.
- `stockBonusStatistics`: Statistics on stock bonus pay, formatted like base pay.
- `currency`: Information about the currency.
  - `code`: Currency code (e.g., "USD").
  - `symbol`: Currency symbol (e.g., "$").
- `employer`: Information about the employer.
  - `id`: Unique identifier for the employer.
  - `name`: Name of the employer.
  - `primaryIndustryId`: ID of the primary industry for the employer.
- `jobTitle`: Information about the job title.
  - `id`: Unique identifier for the job title.
  - `text`: Name of the job title.
- `payPeriod`: Pay period for the salary (e.g., "ANNUAL", "HOURLY").
- `salaryCount`: Total number of salaries submitted for this estimate.
- `totalPayStatistics`: Statistics on total pay. Includes `mean` and `percentiles`.

#### Detailed Salary Data Structure

Returned **in addition** to the aggregated salary item above, but **only when the input URL targets a specific job title** (via the `_KO` slug or `?jobTitleText=`). It is the verbatim payload of Glassdoor's `SalaryDetails_iOS` mobile-graph operation, flattened with the filters that produced it.

```json
{
  "operation": "SalaryDetails_iOS",
  "startingUrl": "https://www.glassdoor.co.in/Salary/Tucows-Customer-Service-Representative-Canada-Salaries-EJI_IE6018.0,6_KO7,38_IL.39,45_IN3.htm?experienceLevel=ONE_TO_THREE",
  "filters": {
    "employerID": 6018,
    "employerName": "Tucows",
    "jobTitleText": "Customer Service Representative",
    "location": { "countryId": 3 },
    "locationID": 3,
    "locationType": "COUNTRY",
    "yearsOfExperience": "ONE_TO_THREE"
  },
  "salaryEstimates": {
    "mostRecent": "2026-04-15",
    "estimateSourceName": "TPE",
    "estimateSourceVersion": "v3",
    "salaryCount": 412,
    "queryLocation": { "id": 3, "name": "Canada", "type": "COUNTRY" },
    "results": [
      {
        "__typename": "AggregatedSalaryEstimatesResult",
        "confidence": "HIGH",
        "currency": { "code": "CAD" },
        "employer": { "id": 6018, "name": "Tucows" },
        "jobTitle": { "id": 12345, "gocId": 6789, "text": "Customer Service Representative" },
        "payPeriod": "ANNUAL",
        "basePayStatistics":   { "percentiles": [{ "ident": "P50", "value": 49000 }] },
        "totalPayStatistics":  { "percentiles": [{ "ident": "P50", "value": 53000 }] }
      }
    ]
  },
  "individualSalariesForJobTitle": {
    "totalNumberOfPages": 1,
    "totalNumberOfRecords": 5,
    "currentPageNumber": 1,
    "results": [
      {
        "jobTitle": "Customer Service Representative",
        "annualBasePayAmount": 48500,
        "annualCashBonusAmount": 1200,
        "annualStockBonusAmount": 0,
        "payPeriod": "ANNUAL",
        "reviewDate": "2025-08-12",
        "yearsOfExperience": "ONE_TO_THREE",
        "city":    { "id": 1138227, "name": "Toronto, ON" },
        "country": { "id": 3, "name": "Canada" }
      }
    ]
  },
  "individualSalariesForGoc": { "totalNumberOfRecords": 5, "results": [/* same shape, scoped by GOC */] },
  "relatedJobTitles": [
    {
      "jobTitle": { "id": 23456, "gocId": 6789, "text": "Customer Service Specialist" },
      "totalCompPercentiles": [{ "ident": "P50", "value": 56000 }],
      "payPeriod": "ANNUAL"
    }
  ],
  "demographics": [
    {
      "demographicType": "gender",
      "results": [
        { "demographicValue": "woman", "payPeriod": "ANNUAL", "basePayStatistics": { "count": 23, "mean": 47800 } }
      ]
    }
  ],
  "availableCountries": [{ "id": 1, "name": "United States" }, { "id": 3, "name": "Canada" }],
  "countOnlySearches": 412
}
```

#### Detailed Salary Field Descriptions:

- `operation`: Always `"SalaryDetails_iOS"` — distinguishes this item from the standard aggregated salary item above.
- `startingUrl`: The original input URL that produced this record.
- `filters`: Echo of the filters actually sent to Glassdoor.
  - `employerID` / `employerName`: Resolved company identifiers.
  - `jobTitleText`: The job title harvested from the `_KO` slug or `jobTitleText` query param.
  - `location` / `locationID` / `locationType`: Resolved location filter.
  - `yearsOfExperience`: One of `LESS_THAN_ONE`, `ONE_TO_THREE`, `FOUR_TO_SIX`, `SEVEN_TO_NINE`, `TEN_TO_FOURTEEN`, `FIFTEEN_PLUS`, or `null` if not set.
- `salaryEstimates`: Aggregated estimates returned by the `aggregatedSalaryEstimates` sub-query, scoped to this job title + experience bucket. Same percentile/statistics shape as the standard salary item.
- `individualSalariesForJobTitle`: Up to 5 most-recent **individual salary submissions** for this exact job title, with city/state/metro/country, base + bonus + stock amounts, and the submitter's experience bucket.
- `individualSalariesForGoc`: Same shape as above but matched on the Glassdoor Occupation Category (broader than the job title — useful for adjacent roles).
- `relatedJobTitles`: Up to 5 related job titles in the same GOC for this employer, with their median total-comp percentile.
- `demographics`: Salary breakdown by demographic dimension (gender, race/ethnicity, etc.) where Glassdoor has enough submissions to report.
- `availableCountries`: Countries where Glassdoor has salary data for this employer × job-title combination — useful for follow-up runs in other geographies.
- `countOnlySearches`: Total number of salary submissions matching the search context (sanity-check counter).

#### Benefits Data Structure

Here's a sample of the job data structure:

```json
{
    "__typename": "BenefitReview",
    "benefitComments": [
        {
            "__typename": "BenefitComment",
            "benefitCommentResponses": [],
            "benefitReviewId": 10568023,
            "comment": "Decent benefits, 3% match on 401k",
            "createDate": "2024-08-12T21:44:56.127",
            "helpfulVotes": 0,
            "id": 10550093
        }
    ],
    "city": {
        "__typename": "City",
        "name": "Orem, UT"
    },
    "createDate": "2024-08-12T21:44:56.36",
    "currentJob": true,
    "id": 10568023,
    "rating": 4,
    "state": {
        "__typename": "State",
        "name": "Utah"
    },
    "updateDate": "2024-08-12T21:57:03.257",
    "userEnteredJobTitle": "Board Certified Behavior Analyst (BCBA)",
    "companyBenefitStats": {
        "__typename": "BenefitsOverview",
        "benefitsCategoryToStatisticAggregates": [
            {
                "__typename": "BenefitsCategoryToStatisticAggregates",
                "benefitCategory": {
                    "__typename": "BenefitCategory",
                    "id": 0,
                    "name": "Overview"
                },
                "benefitStatisticAggregateList": [
                    {
                        "__typename": "EmployerBenefitStatisticAggregate",
                        "benefit": {
                            "__typename": "Benefit",
                            "id": 0,
                            "name": ""
                        },
                        "benefitRatingDenominator": 3,
                        "benefitRatingNumerator": 11,
                        "verified": false
                    }
                ]
            },
            {
                "__typename": "BenefitsCategoryToStatisticAggregates",
                "benefitCategory": {
                    "__typename": "BenefitCategory",
                    "id": 1,
                    "name": "Insurance, Health & Wellness"
                },
                "benefitStatisticAggregateList": [
                    {
                        "__typename": "EmployerBenefitStatisticAggregate",
                        "benefit": {
                            "__typename": "Benefit",
                            "id": 1,
                            "name": "Health Insurance"
                        },
                        "benefitRatingDenominator": 0,
                        "benefitRatingNumerator": 0,
                        "verified": true
                    }
                ]
            },
            {
                "__typename": "BenefitsCategoryToStatisticAggregates",
                "benefitCategory": {
                    "__typename": "BenefitCategory",
                    "id": 2,
                    "name": "Financial & Retirement"
                },
                "benefitStatisticAggregateList": [
                    {
                        "__typename": "EmployerBenefitStatisticAggregate",
                        "benefit": {
                            "__typename": "Benefit",
                            "id": 14,
                            "name": "Pension Plan"
                        },
                        "benefitRatingDenominator": 0,
                        "benefitRatingNumerator": 0,
                        "verified": false
                    }
                ]
            },
            {
                "__typename": "BenefitsCategoryToStatisticAggregates",
                "benefitCategory": {
                    "__typename": "BenefitCategory",
                    "id": 3,
                    "name": "Family & Parenting"
                },
                "benefitStatisticAggregateList": [
                    {
                        "__typename": "EmployerBenefitStatisticAggregate",
                        "benefit": {
                            "__typename": "Benefit",
                            "id": 23,
                            "name": "Maternity & Paternity Leave"
                        },
                        "benefitRatingDenominator": 1,
                        "benefitRatingNumerator": 2,
                        "verified": false
                    }
                ]
            },
            {
                "__typename": "BenefitsCategoryToStatisticAggregates",
                "benefitCategory": {
                    "__typename": "BenefitCategory",
                    "id": 4,
                    "name": "Vacation & Time Off"
                },
                "benefitStatisticAggregateList": [
                    {
                        "__typename": "EmployerBenefitStatisticAggregate",
                        "benefit": {
                            "__typename": "Benefit",
                            "id": 29,
                            "name": "Vacation & Paid Time Off"
                        },
                        "benefitRatingDenominator": 0,
                        "benefitRatingNumerator": 0,
                        "verified": true
                    }
                ]
            },
            {
                "__typename": "BenefitsCategoryToStatisticAggregates",
                "benefitCategory": {
                    "__typename": "BenefitCategory",
                    "id": 5,
                    "name": "Perks & Discounts"
                },
                "benefitStatisticAggregateList": [
                    {
                        "__typename": "EmployerBenefitStatisticAggregate",
                        "benefit": {
                            "__typename": "Benefit",
                            "id": 34,
                            "name": "Employee Discount"
                        },
                        "benefitRatingDenominator": 0,
                        "benefitRatingNumerator": 0,
                        "verified": false
                    }
                ]
            },
            {
                "__typename": "BenefitsCategoryToStatisticAggregates",
                "benefitCategory": {
                    "__typename": "BenefitCategory",
                    "id": 21,
                    "name": "Professional Support"
                },
                "benefitStatisticAggregateList": [
                    {
                        "__typename": "EmployerBenefitStatisticAggregate",
                        "benefit": {
                            "__typename": "Benefit",
                            "id": 123,
                            "name": "Diversity Program"
                        },
                        "benefitRatingDenominator": 0,
                        "benefitRatingNumerator": 0,
                        "verified": false
                    }
                ]
            }
        ],
        "employerBenefitSummary": null,
        "overallBenefitRating": 3.7,
        "totalBenefitReviews": 4
    }
}
```

#### Benefits Field Descriptions:

- `__typename`: Type of the object (indicates it's a benefit review).
- `benefitComments`: Array of comments related to the benefits.
  - `benefitCommentResponses`: Array of responses to the benefit comment (if any).
  - `benefitReviewId`: Unique identifier for the benefit review.
  - `comment`: Text of the benefit comment.
  - `createDate`: Date and time when the comment was created.
  - `helpfulVotes`: Number of users who found the comment helpful.
  - `id`: Unique identifier for the comment.
- `city`: Information about the city where the benefit review was posted.
  - `name`: Name of the city.
- `createDate`: Date and time when the benefit review was created.
- `currentJob`: Boolean indicating if the reviewer is a current employee.
- `id`: Unique identifier for the benefit review.
- `rating`: Overall rating of the benefits (1-5 scale).
- `state`: Information about the state where the benefit review was posted.
  - `name`: Name of the state.
- `updateDate`: Date and time when the benefit review was last updated.
- `userEnteredJobTitle`: Job title entered by the reviewer (if any).

##### `companyBenefitStats` Field Descriptions:

- `__typename`: Type of the object (indicates it's a benefits overview).
- `benefitsCategoryToStatisticAggregates`: Array of benefit categories and their statistics.
  - `benefitCategory`: Information about the benefit category.
    - `id`: Unique identifier for the benefit category.
    - `name`: Name of the benefit category (e.g., "Insurance, Health & Wellness").
  - `benefitStatisticAggregateList`: Array of statistics for specific benefits within the category.
    - `benefit`: Information about the specific benefit.
      - `id`: Unique identifier for the benefit.
      - `name`: Name of the benefit (e.g., "Health Insurance").
    - `benefitRatingDenominator`: Denominator used to calculate the benefit rating.
    - `benefitRatingNumerator`: Numerator used to calculate the benefit rating.
    - `verified`: Boolean indicating if the benefit is verified.
- `employerBenefitSummary`: Summary of the employer's benefits (if available).
- `overallBenefitRating`: Overall rating of the benefits (1-5 scale).
- `totalBenefitReviews`: Total number of benefit reviews.

#### Culture/Diversity Data Structure

Here's a sample of the job data structure:

```json
{
    "__typename": "DemographicRatings",
    "category": "gender",
    "categoryRatings": [
        {
            "__typename": "DemographicCategoryValueRatings",
            "categoryValue": "man",
            "ratings": null
        },
        {
            "__typename": "DemographicCategoryValueRatings",
            "categoryValue": "woman",
            "ratings": {
                "__typename": "EmployerRatings",
                "reviewCount": 10,
                "overallRating": 3.6,
                "ceoRating": -1,
                "ceoRatingsCount": 0,
                "recommendToFriendRating": 0.8,
                "businessOutlookRating": 0.17,
                "cultureAndValuesRating": 3.7,
                "careerOpportunitiesRating": 2.9,
                "workLifeBalanceRating": 3.7,
                "seniorManagementRating": 3.1,
                "compensationAndBenefitsRating": 2.3,
                "diversityAndInclusionRating": 3.9,
                "diversityAndInclusionRatingCount": 8,
                "ratedCeoId": 1283677,
                "ratedCeo": {
                    "__typename": "Ceo",
                    "id": 1283677,
                    "title": "Chief Executive Officer",
                    "name": "Rachelle Rutherford"
                }
            }
        },
        {
            "__typename": "DemographicCategoryValueRatings",
            "categoryValue": "nonBinary",
            "ratings": null
        }
    ]
}
```

#### Culture/Diversity Field Descriptions:

- `__typename`: Type of the object (indicates it's a demographic rating).
- `category`: The demographic category being rated (e.g., "gender", "raceEthnicity", "sexualOrientation", etc.).
- `categoryRatings`: Array of ratings for specific demographic values within the category.
  - `__typename`: Type of the object (indicates it's a demographic category value rating).
  - `categoryValue`: The specific demographic value (e.g., "man", "woman", "nonBinary").
  - `ratings`: Ratings for the demographic value (if available), including:
    - `reviewCount`: Number of reviews for the demographic value.
    - `overallRating`: Overall rating for the demographic value (0-5 scale).
    - `ceoRating`: CEO approval rating (0-5 scale).
    - `ceoRatingsCount`: Number of CEO ratings submitted.
    - `recommendToFriendRating`: Percentage of respondents recommending the company to a friend (0-1 scale).
    - `businessOutlookRating`: Rating for business outlook (0-5 scale).
    - `cultureAndValuesRating`: Rating for culture and values (0-5 scale).
    - `careerOpportunitiesRating`: Rating for career opportunities (0-5 scale).
    - `workLifeBalanceRating`: Rating for work-life balance (0-5 scale).
    - `seniorManagementRating`: Rating for senior management (0-5 scale).
    - `compensationAndBenefitsRating`: Rating for compensation and benefits (0-5 scale).
    - `diversityAndInclusionRating`: Rating for diversity and inclusion (0-5 scale).
    - `diversityAndInclusionRatingCount`: Number of diversity and inclusion ratings submitted.
    - `ratedCeoId`: Unique identifier for the rated CEO.
    - `ratedCeo`: Information about the CEO being rated.
      - `__typename`: Type of the object (indicates it's a CEO).
      - `id`: Unique identifier for the CEO.
      - `title`: Title of the CEO (e.g., "Chief Executive Officer").
      - `name`: Name of the CEO.

To scrape company overviews, set the `command` parameter to `"overview"`.

***

### Pricing

Pay-per-result (PPE): you're charged per row emitted (review, job, salary, interview, etc.) plus a small per-run start fee. No subscription — pay only for what you pull, and cap spend anytime with `maxItems`.

**Cheap for small and targeted runs.** There's no large minimum-per-run charge — a quick 20-job pull or a single company's reviews costs cents. Use the job-search filters (job type, salary band, company size, rating, industry, function, radius) and `saveOnlyUniqueItems` to fetch only the rows you actually need, instead of paying to scrape-then-discard.

**One actor, the whole of Glassdoor.** Reviews (past the 200 cap), jobs, salaries, interviews, benefits and company overview are all billed at the same per-row rate — no need to rent a separate scraper per data type.

***

### FAQ

**How is this different from the Glassdoor website?**
The site stops showing reviews at ~200 per company and gates salaries/interviews. This actor returns the **complete** dataset, structured, exportable to JSON/CSV.

**Can I get only new reviews on a schedule?**
Yes — enable `monitoringModeForReviews` and run on a schedule; each run returns only reviews added since the last one.

**Do I need login cookies?**
No. The actor handles access over plain HTTP — no Glassdoor account, no sign-in, no cookies to paste.

**Does it scrape company reviews or only job listings?**
Full employee reviews — every one past the ~200-review cap, each with all 8 sub-ratings (work-life balance, culture, D\&I, career, comp, leadership, CEO approval, outlook), pros/cons/advice and any employer reply. Jobs, salaries, interviews and benefits are optional extras, not the only thing it pulls.

**Can I scrape multiple companies at once?**
Yes — add multiple company URLs to `startUrls`. `maxItems` caps rows per URL.

**Which proxy should I use?**
None — the actor already routes all traffic through its own built-in residential proxy at no extra cost. Only set `proxy` if you want to override it with your own proxies.

**Can I filter reviews?**
Yes — `includes` (keyword), `reviewsStartDate` (date cutoff), and `sortReviewsBy` (order).

**Does it cover non-US Glassdoor?**
Yes — pass the relevant country's Glassdoor company URL.

***

### Support

- **Bugs & feature requests** — open an issue on the actor's Apify page or email below.
- **Custom builds** — see Additional Services.
- **Email** — `info@apifyscraper.com`

***

### Additional services

Need a custom employer-data or reviews scraper (Indeed, Comparably, Kununu, Trustpilot, etc.), or this one extended with sentiment scoring, dedup across companies, or scheduled delivery to your warehouse? Reach out — most custom builds ship in 3-5 business days.

***

### Explore more scrapers

- [Trustpilot Reviews Scraper](https://apify.com/excitable_pickle/trustpilot-scraper-ppe)
- [Indeed Reviews Scraper](https://apify.com/excitable_pickle/apify-indeed-reviews-ppr)
- [Capterra Software & Reviews Scraper](https://apify.com/excitable_pickle/capterra-scraper)
- [TrustRadius Software Reviews Scraper](https://apify.com/excitable_pickle/trustradius-scraper)
- [Stepstone Jobs Scraper](https://apify.com/excitable_pickle/stepstone-search-cheerio-ppr)

***

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `excitable_pickle/glassdoor-scraper-ppr`).

**Purpose:** Extracts Glassdoor company data — reviews (past the ~200-review cap), jobs, salaries, interviews, benefits, locations, and company overviews — one row per item, selected by the `command` input.

**Minimal input:**

```json
{
  "startUrls": [{ "url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm" }],
  "command": "reviews",
  "maxItems": 50
}
```

Keyword job-search variant (no URL needed): `{ "searchJobsByKeyword": true, "searchKeyword": "Software Developer", "searchLocation": "New York", "maxItems": 50 }`.

**Output:** with `command: "reviews"`, one dataset row per review — reviewId, summary, pros, cons, advice, ratingOverall, ratingWorkLifeBalance, ratingCultureAndValues, ratingDiversityAndInclusion, ratingCareerOpportunities, ratingCompensationAndBenefits, ratingSeniorLeadership, ratingCeo, ratingBusinessOutlook, ratingRecommendToFriend, jobTitle {id, text}, location {name, type}, employmentStatus, isCurrentJob, lengthOfEmployment, languageId, reviewDateTime, employer {id, shortName}, employerResponses. Other `command` values emit their own row shapes (jobs, salaries, interviews, benefits, overview, locations, culture) — see the field references above.

**Behaviors an agent should know:**

- `command` picks the dataset: `reviews`, `interviews`, `locations`, `salaries`, `jobs`, `overview`, `benefits`, or `culture`. All `startUrls` entries are Glassdoor company-tab URLs (any country's Glassdoor domain).
- `maxItems` caps rows **per input URL**, not per run (3 URLs × maxItems 100 = up to 300 rows). Default is 20000 — always set it.
- Mode priority: when `searchJobsByKeyword: true`, the keyword/location/filter job search runs and `startUrls`/`command` are ignored; when it is false (default), the search fields are ignored.
- `includeAllReviews: true` pulls the complete review history past Glassdoor's ~200-review UI cap, across all languages; `monitoringModeForReviews: true` returns only reviews new since the previous run.
- Billing: pay-per-event — charged per row emitted plus a small per-run start fee; optional `enrichEmails` bills per contact email found, never for misses. See the Pricing tab on the actor page for rates.
- Leave `proxy` empty — the actor routes traffic through its own built-in residential proxy; no login cookies are needed.

***

### ⚠️ Disclaimer

This Actor accesses publicly available data on Glassdoor for legitimate research, HR analytics, market intelligence, and competitive-analysis purposes. Use of this Actor must comply with Glassdoor's Terms of Service and all applicable laws including data-protection regulations (GDPR, CCPA, etc.). The Actor's authors are not affiliated with, endorsed by, or sponsored by Glassdoor, Inc.; "Glassdoor" is a trademark of its owner. Users must:

- Respect rate limits and avoid overloading Glassdoor's infrastructure.
- Treat reviewer content as personal data — do not use it to de-anonymise, harass, or identify individual reviewers.
- Use the data in compliance with applicable jurisdictions and employment/privacy law.
- Not republish scraped review text in violation of copyright.

We do not store any scraped data; the Actor returns it directly to your Apify dataset for your authorized use.

***

### SEO Keywords

glassdoor scraper, glassdoor reviews scraper, glassdoor api, glassdoor data extraction, glassdoor jobs scraper, glassdoor salaries scraper, glassdoor interviews scraper, employer reviews scraper, company reviews api, bypass glassdoor 200 review limit, glassdoor reviews export, employee reviews data, employer branding data, hr analytics scraper, compensation benchmarking data, glassdoor ratings scraper, glassdoor company overview, glassdoor monitoring, glassdoor csv export, glassdoor json export, glassdoor reviews all languages, glassdoor reviews by locale, glassdoor most recent reviews, glassdoor recent reviews first, glassdoor review limit bypass, glassdoor full review history, glassdoor reviews without login, glassdoor no login scraper, glassdoor scraper no account, glassdoor sub ratings scraper, glassdoor company reviews not jobs, scrape glassdoor company reviews, web scraping, apify scraper, no-code scraper

***

### 🤖 Related MCP servers for AI agents

Building an AI agent, or using Claude, Cursor or ChatGPT? Skip the scraping setup — connect our hosted **MCP servers** (no API keys, billed per call):

- **[Reviews MCP Server](https://apify.com/excitable_pickle/reviews-mcp-server)** — search companies, read real Trustpilot review texts, and pull multi‑platform ratings (Trustpilot + App Store + Google Play) straight from your assistant.
- **[Reddit MCP Server](https://apify.com/excitable_pickle/reddit-mcp-server)** — search Reddit, browse subreddits, read comment threads.
- **[Email Finder & Verifier MCP](https://apify.com/excitable_pickle/email-mcp-server)** — find and verify company emails.
- **[Video Transcripts MCP](https://apify.com/excitable_pickle/transcripts-mcp-server)** — full YouTube & TikTok transcripts.

### Connect to Claude / AI Agent (MCP)

Connect this Actor directly to Claude Desktop, Cursor, or any MCP client via the Model Context Protocol endpoint:

```text
https://mcp.apify.com/?token=YOUR_APIFY_TOKEN_HERE&tools=actors,docs,excitable_pickle/glassdoor-salary-interview-scraper
```

#### Claude Copy-Paste Prompt

```text
MCP Server URL: https://mcp.apify.com/?token=YOUR_APIFY_TOKEN_HERE&tools=actors,docs,excitable_pickle/glassdoor-salary-interview-scraper
Apify Token: YOUR_APIFY_TOKEN_HERE

Execute Actor: excitable_pickle/glassdoor-salary-interview-scraper
Task: "Execute search with parameters, extract structured results, and present key intelligence in a markdown table."
```

# Actor input Schema

## `startUrls` (type: `array`):

URLs to start with. Glassdoor company-page URLs from any tab (Reviews, Jobs, Salaries, Interviews, Overview) and any country's Glassdoor domain, e.g. https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm. The 'command' field selects which dataset is scraped from them.

## `command` (type: `string`):

Choose which data to scrape (reviews or interviews or locations or salaries or jobs) for the links(s) you provided. Also supports 'overview' (company profile), 'benefits' and 'culture' (diversity ratings). Default: reviews.

## `searchJobsByKeyword` (type: `boolean`):

Turn this ON to run a keyword/location/filter job search using the fields below. When OFF, these fields are ignored and the actor uses the Start URLs / command above.

## `searchKeyword` (type: `string`):

Job title or keyword to search for (e.g. "Software Developer", "Registered Nurse"). Requires the toggle above to be ON.

## `searchLocation` (type: `string`):

City, state, or country to search in (e.g. "New York", "United States", "London"). Optional — omit for a nationwide/global search.

## `sortBy` (type: `string`):

Order of the returned jobs.

## `matchKeywordInTitle` (type: `boolean`):

Glassdoor matches your keyword anywhere in a posting (title, description, department names), so a search like "dean" also returns professor or teacher roles that merely mention a dean. Turn this ON to keep only jobs whose TITLE contains the keyword. Applies to keyword job searches (URL or field based); ignored when there is no keyword.

## `maxDaysOld` (type: `string`):

Only return jobs posted within this many days.

## `remoteWorkType` (type: `string`):

Filter by remote / hybrid / on-site.

## `applicationType` (type: `string`):

Restrict to Glassdoor Easy Apply jobs.

## `jobType` (type: `string`):

Filter jobs by employment type.

## `minSalary` (type: `string`):

Only return jobs with an estimated salary at or above this amount (e.g. "80000"). Annual, in the location's currency.

## `maxSalary` (type: `string`):

Only return jobs with an estimated salary at or below this amount (e.g. "150000").

## `minRating` (type: `string`):

Only return jobs at companies with at least this Glassdoor rating.

## `employerSize` (type: `string`):

Filter jobs by employer size band.

## `radius` (type: `string`):

Distance around the search location to include.

## `industryNid` (type: `string`):

Filter jobs by company industry.

## `sgocId` (type: `string`):

Filter jobs by job function / department.

## `resumeKeywords` (type: `array`):

Optional. Paste your resume/CV skills to score every job against your profile. Each entry is {"keyword":"Python","aliases":\["py"]} (aliases optional). Adds matchScore (0–100), matchedSkills and missingSkills to each job row. This does NOT change which jobs are returned — it's a triage aid so you can skip jobs you're not qualified for.

## `deepSearch` (type: `boolean`):

Go beyond Glassdoor's single-search depth cap: after the base search, the actor harvests the related job titles Glassdoor returned and re-runs the search for each, merging results and removing duplicates by job ID. Best for keyword searches expecting many results. Increases run time and result count; still bounded by Max items.

## `expandKeywords` (type: `array`):

Optional extra keywords to also search and merge in when Deep search is on (e.g. synonyms or adjacent roles). Each runs as its own search; duplicates across searches are removed.

## `saveOnlyUniqueItems` (type: `boolean`):

Remove duplicate rows before they are saved. Deduplicates by job ID (jobs) or review ID (reviews), falling back to full-content matching. Useful for job searches, which can return the same posting across multiple pages. On pay-per-result billing this also means you are not charged twice for the same item.

## `includes` (type: `array`):

Only include reviews that contain at least one of the specified keywords. For now keywords are use only on 'Cons' property of the review.

## `includeCompanyReviewStats` (type: `boolean`):

Include company review stats in the output.

## `includeAllReviews` (type: `boolean`):

Include all possible reviews in the output from all available languages like: 'eng', 'fra', 'por', 'spa', 'ita', 'nld', 'deu'.

## `monitoringModeForReviews` (type: `boolean`):

If checked, it will only scrape newly reviews compared to what has been scraped in previous runs. Please turn on or check 'Include posts' setting above in case you want this feature.

## `sortReviewsBy` (type: `string`):

Sort reviews by criteria

## `reviewsStartDate` (type: `string`):

Format should be YYYY-MM-DD, e.g., 2025-02-20

## `includeCompanyInterviewStats` (type: `boolean`):

Include company interview stats in the output.

## `interviewsStartDate` (type: `string`):

Format should be YYYY-MM-DD, e.g., 2025-02-20

## `includeCompanyBenefitsStats` (type: `boolean`):

Include company benefits stats in the output.

## `benefitsStartDate` (type: `string`):

Format should be YYYY-MM-DD, e.g., 2025-02-20

## `includeAllSalaries` (type: `boolean`):

Include all possible salaries in the output from all available languages like: 'eng', 'fra', 'por', 'spa', 'ita', 'nld', 'deu'.

## `enrichEmails` (type: `boolean`):

If enabled, reads the company's own website (shown on its Glassdoor profile) for contact emails (e.g. info@, press@), or discovers it from the company name. Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object to company/overview records. Best-effort, billed per contact email found; only charged when an email is returned, never for misses.

## `qualifyByPayment` (type: `boolean`):

Requires "Enrich with contact emails". Scans each business's website — reusing the pages already fetched for email discovery, so no extra cost or time — for payment processors and e-commerce platforms (Stripe, Shopify, PayPal, Paddle, Lemon Squeezy, WooCommerce, Square, Chargebee and more). Adds takesPayments (is this a real paying business?), paymentProcessors (which stack), stripeLiveKey (the public key if exposed) and paymentConfidence. Turn raw contacts into monetization-qualified leads. No extra charge — included with each enriched company.

## `reviewInsights` (type: `boolean`):

Adds one `review_insights` row per employer: rating breakdown & sentiment split, the recurring workplace complaint themes (management, pay, work-life balance, culture, career growth, job security…), top negative-review terms, and advice-to-management snippets. Deterministic — instant, no AI credits or keys required. Billed per employer analyzed.

## `painPointAnalysis` (type: `boolean`):

Adds a single `painPointAnalysis` row per employer alongside the reviews: top complaint themes (each with severity + how often it recurs), standout strengths, attrition-risk signals, quick wins, overall sentiment and a short summary — the 'what should this employer fix' teardown, straight from real Glassdoor employee reviews. Requires a paid Apify plan; billed per employer analyzed.

## `maxItems` (type: `integer`):

Maximum number of items (like reviews, salaries, interviews and etc) that will be scraped FROM EACH input URL independently. If you provide 3 URLs and set maxItems to 100, you can get up to 300 total items (100 from each URL).

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

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

Number of times the crawler will retry a failed request before giving up.

## `proxy` (type: `object`):

Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.glassdoor.fr/Avis/Aza%C3%A9-Avis-E1360610.htm"
    }
  ],
  "command": "reviews",
  "searchJobsByKeyword": false,
  "searchKeyword": "Software Developer",
  "searchLocation": "New York",
  "sortBy": "relevant_desc",
  "matchKeywordInTitle": false,
  "maxDaysOld": "any",
  "remoteWorkType": "any",
  "applicationType": "any",
  "jobType": "any",
  "minRating": "any",
  "employerSize": "any",
  "radius": "any",
  "industryNid": "any",
  "sgocId": "any",
  "resumeKeywords": [
    {
      "keyword": "Python",
      "aliases": [
        "py"
      ]
    },
    {
      "keyword": "React"
    },
    {
      "keyword": "AWS",
      "aliases": [
        "Amazon Web Services"
      ]
    }
  ],
  "deepSearch": false,
  "expandKeywords": [],
  "saveOnlyUniqueItems": false,
  "includes": [],
  "includeCompanyReviewStats": false,
  "includeAllReviews": false,
  "monitoringModeForReviews": false,
  "sortReviewsBy": "RELEVANCE",
  "includeCompanyInterviewStats": false,
  "includeCompanyBenefitsStats": false,
  "includeAllSalaries": false,
  "enrichEmails": false,
  "qualifyByPayment": false,
  "reviewInsights": false,
  "painPointAnalysis": false,
  "maxItems": 20000,
  "maxConcurrency": 7,
  "minConcurrency": 1,
  "maxRequestRetries": 100
}
```

# Actor output Schema

## `records` (type: `string`):

No description

## `summary` (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 = {
    "startUrls": [
        {
            "url": "https://www.glassdoor.fr/Avis/Aza%C3%A9-Avis-E1360610.htm"
        }
    ],
    "resumeKeywords": [
        {
            "keyword": "Python",
            "aliases": [
                "py"
            ]
        },
        {
            "keyword": "React"
        },
        {
            "keyword": "AWS",
            "aliases": [
                "Amazon Web Services"
            ]
        }
    ],
    "expandKeywords": [],
    "includes": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("excitable_pickle/glassdoor-salary-interview-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 = {
    "startUrls": [{ "url": "https://www.glassdoor.fr/Avis/Aza%C3%A9-Avis-E1360610.htm" }],
    "resumeKeywords": [
        {
            "keyword": "Python",
            "aliases": ["py"],
        },
        { "keyword": "React" },
        {
            "keyword": "AWS",
            "aliases": ["Amazon Web Services"],
        },
    ],
    "expandKeywords": [],
    "includes": [],
}

# Run the Actor and wait for it to finish
run = client.actor("excitable_pickle/glassdoor-salary-interview-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 '{
  "startUrls": [
    {
      "url": "https://www.glassdoor.fr/Avis/Aza%C3%A9-Avis-E1360610.htm"
    }
  ],
  "resumeKeywords": [
    {
      "keyword": "Python",
      "aliases": [
        "py"
      ]
    },
    {
      "keyword": "React"
    },
    {
      "keyword": "AWS",
      "aliases": [
        "Amazon Web Services"
      ]
    }
  ],
  "expandKeywords": [],
  "includes": []
}' |
apify call excitable_pickle/glassdoor-salary-interview-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,excitable_pickle/glassdoor-salary-interview-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/IWmjOfB7Knhinag6U/builds/nijkXWP7ICk5orJak/openapi.json
