Glassdoor Reviews & Jobs · No 200-Cap · AI Employer Intel
/memo23/glassdoor-scraper-pprasync$0.0119 / resultGlassdoor scraper that survives the anti-bot wall — no 200-review cap: full reviews with sub-ratings, pros/cons, employer replies, plus jobs, salaries & interviews. New AI Employer Intelligence: per-employer complaint themes, attrition-risk signals & quick wins from real reviews. Runs as an Apify actor (20–120 s); results are dataset rows.
Charged per returned row plus the flat fee.
startUrlsarrayURLs 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.
commandstringChoose 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. (default "reviews")
reviews, interviews, locations, salaries, jobs, overview, benefits, culture
searchJobsByKeywordbooleanTurn 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. (default false)
searchKeywordstringJob title or keyword to search for (e.g. "Software Developer", "Registered Nurse"). Requires the toggle above to be ON.
searchLocationstringCity, state, or country to search in (e.g. "New York", "United States", "London"). Optional — omit for a nationwide/global search.
sortBystringOrder of the returned jobs. (default "relevant_desc")
relevant_desc, date_desc
matchKeywordInTitlebooleanGlassdoor 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 base (default false)
maxDaysOldstringOnly return jobs posted within this many days. (default "any")
any, 1, 3, 7, 14, 30
remoteWorkTypestringFilter by remote / hybrid / on-site. (default "any")
any, 1, 2, 3
applicationTypestringRestrict to Glassdoor Easy Apply jobs. (default "any")
any, 1
jobTypestringFilter jobs by employment type. (default "any")
any, CF3CP, 5QWDV, 75GKK, NJXCK, T9BXE, VDTG7
minSalarystringOnly return jobs with an estimated salary at or above this amount (e.g. "80000"). Annual, in the location's currency.
maxSalarystringOnly return jobs with an estimated salary at or below this amount (e.g. "150000").
minRatingstringOnly return jobs at companies with at least this Glassdoor rating. (default "any")
any, 1, 2, 3, 4
employerSizestringFilter jobs by employer size band. (default "any")
any, 1, 2, 3, 4, 5
radiusstringDistance around the search location to include. (default "any")
any, 10, 20, 30, 50, 100, 200
industryNidstringFilter jobs by company industry. (default "any")
any, 10002, 10019, 10010, 10012, 10026, 10013, 10014, …
sgocIdstringFilter jobs by job function / department. (default "any")
any, 1003, 1004, 1007, 1011, 1016, 1017, 1018, …
resumeKeywordsarrayOptional. 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
deepSearchbooleanGo 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 (default false)
expandKeywordsarrayOptional 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.
saveOnlyUniqueItemsbooleanRemove 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 (default false)
includesarrayOnly include reviews that contain at least one of the specified keywords. For now keywords are use only on 'Cons' property of the review.
includeCompanyReviewStatsbooleanInclude company review stats in the output. (default false)
includeAllReviewsbooleanInclude all possible reviews in the output from all available languages like: 'eng', 'fra', 'por', 'spa', 'ita', 'nld', 'deu'. (default false)
monitoringModeForReviewsbooleanIf 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. (default false)
sortReviewsBystringSort reviews by criteria (default "RELEVANCE")
RELEVANCE, DATE, RATING, RATING_ASC
reviewsStartDatestringFormat should be YYYY-MM-DD, e.g., 2025-02-20
includeCompanyInterviewStatsbooleanInclude company interview stats in the output. (default false)
interviewsStartDatestringFormat should be YYYY-MM-DD, e.g., 2025-02-20
includeCompanyBenefitsStatsbooleanInclude company benefits stats in the output. (default false)
benefitsStartDatestringFormat should be YYYY-MM-DD, e.g., 2025-02-20
includeAllSalariesbooleanInclude all possible salaries in the output from all available languages like: 'eng', 'fra', 'por', 'spa', 'ita', 'nld', 'deu'. (default false)
enrichEmailsbooleanIf 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 (default false)
qualifyByPaymentbooleanRequires "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 tak (default false)
reviewInsightsbooleanAdds 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 (default false)
painPointAnalysisbooleanAdds 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 (default false)
maxItemsintegerMaximum 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). (default 20000)
maxConcurrencyintegerMaximum number of pages that can be processed at the same time. (default 7)
minConcurrencyintegerMinimum number of pages that will be processed at the same time. (default 1)
maxRequestRetriesintegerNumber of times the crawler will retry a failed request before giving up. (default 100)
proxyobjectLeave 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.
| Field | Type | Required | Description |
|---|---|---|---|
| startUrls | 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 | string (reviews, interviews, locations, salaries, jobs, overview, benefits, culture) | — | 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. (default "reviews") |
| searchJobsByKeyword | 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. (default false) |
| searchKeyword | string | — | Job title or keyword to search for (e.g. "Software Developer", "Registered Nurse"). Requires the toggle above to be ON. |
| searchLocation | string | — | City, state, or country to search in (e.g. "New York", "United States", "London"). Optional — omit for a nationwide/global search. |
| sortBy | string (relevant_desc, date_desc) | — | Order of the returned jobs. (default "relevant_desc") |
| matchKeywordInTitle | 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 base (default false) |
| maxDaysOld | string (any, 1, 3, 7, 14, 30) | — | Only return jobs posted within this many days. (default "any") |
| remoteWorkType | string (any, 1, 2, 3) | — | Filter by remote / hybrid / on-site. (default "any") |
| applicationType | string (any, 1) | — | Restrict to Glassdoor Easy Apply jobs. (default "any") |
| jobType | string (any, CF3CP, 5QWDV, 75GKK, NJXCK, T9BXE, VDTG7) | — | Filter jobs by employment type. (default "any") |
| minSalary | string | — | Only return jobs with an estimated salary at or above this amount (e.g. "80000"). Annual, in the location's currency. |
| maxSalary | string | — | Only return jobs with an estimated salary at or below this amount (e.g. "150000"). |
| minRating | string (any, 1, 2, 3, 4) | — | Only return jobs at companies with at least this Glassdoor rating. (default "any") |
| employerSize | string (any, 1, 2, 3, 4, 5) | — | Filter jobs by employer size band. (default "any") |
| radius | string (any, 10, 20, 30, 50, 100, 200) | — | Distance around the search location to include. (default "any") |
| industryNid | string (any, 10002, 10019, 10010, 10012, 10026, 10013, 10014, …) | — | Filter jobs by company industry. (default "any") |
| sgocId | string (any, 1003, 1004, 1007, 1011, 1016, 1017, 1018, …) | — | Filter jobs by job function / department. (default "any") |
| resumeKeywords | 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 |
| deepSearch | 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 (default false) |
| expandKeywords | 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 | 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 (default false) |
| includes | 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 | boolean | — | Include company review stats in the output. (default false) |
| includeAllReviews | boolean | — | Include all possible reviews in the output from all available languages like: 'eng', 'fra', 'por', 'spa', 'ita', 'nld', 'deu'. (default false) |
| monitoringModeForReviews | 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. (default false) |
| sortReviewsBy | string (RELEVANCE, DATE, RATING, RATING_ASC) | — | Sort reviews by criteria (default "RELEVANCE") |
| reviewsStartDate | string | — | Format should be YYYY-MM-DD, e.g., 2025-02-20 |
| includeCompanyInterviewStats | boolean | — | Include company interview stats in the output. (default false) |
| interviewsStartDate | string | — | Format should be YYYY-MM-DD, e.g., 2025-02-20 |
| includeCompanyBenefitsStats | boolean | — | Include company benefits stats in the output. (default false) |
| benefitsStartDate | string | — | Format should be YYYY-MM-DD, e.g., 2025-02-20 |
| includeAllSalaries | boolean | — | Include all possible salaries in the output from all available languages like: 'eng', 'fra', 'por', 'spa', 'ita', 'nld', 'deu'. (default false) |
| enrichEmails | 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 (default false) |
| qualifyByPayment | 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 tak (default false) |
| reviewInsights | 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 (default false) |
| painPointAnalysis | 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 (default false) |
| maxItems | 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). (default 20000) |
| maxConcurrency | integer | — | Maximum number of pages that can be processed at the same time. (default 7) |
| minConcurrency | integer | — | Minimum number of pages that will be processed at the same time. (default 1) |
| maxRequestRetries | integer | — | Number of times the crawler will retry a failed request before giving up. (default 100) |
| proxy | 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. |
Run it
Or ask your agent: it will call inspect for this schema and run it over MCP.