Back to Glassdoor
Apify·Glassdoor

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

/memo23/glassdoor-scraper-pprasync$0.0119 / result

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

Input
  • startUrlsarray

    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.

  • commandstring

    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")

    reviews, interviews, locations, salaries, jobs, overview, benefits, culture

  • searchJobsByKeywordboolean

    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)

  • searchKeywordstring

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

  • searchLocationstring

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

  • sortBystring

    Order of the returned jobs. (default "relevant_desc")

    relevant_desc, date_desc

  • matchKeywordInTitleboolean

    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)

  • maxDaysOldstring

    Only return jobs posted within this many days. (default "any")

    any, 1, 3, 7, 14, 30

  • remoteWorkTypestring

    Filter by remote / hybrid / on-site. (default "any")

    any, 1, 2, 3

  • applicationTypestring

    Restrict to Glassdoor Easy Apply jobs. (default "any")

    any, 1

  • jobTypestring

    Filter jobs by employment type. (default "any")

    any, CF3CP, 5QWDV, 75GKK, NJXCK, T9BXE, VDTG7

  • minSalarystring

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

  • maxSalarystring

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

  • minRatingstring

    Only return jobs at companies with at least this Glassdoor rating. (default "any")

    any, 1, 2, 3, 4

  • employerSizestring

    Filter jobs by employer size band. (default "any")

    any, 1, 2, 3, 4, 5

  • radiusstring

    Distance around the search location to include. (default "any")

    any, 10, 20, 30, 50, 100, 200

  • industryNidstring

    Filter jobs by company industry. (default "any")

    any, 10002, 10019, 10010, 10012, 10026, 10013, 10014, …

  • sgocIdstring

    Filter jobs by job function / department. (default "any")

    any, 1003, 1004, 1007, 1011, 1016, 1017, 1018, …

  • resumeKeywordsarray

    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

  • deepSearchboolean

    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)

  • expandKeywordsarray

    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.

  • saveOnlyUniqueItemsboolean

    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)

  • includesarray

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

  • includeCompanyReviewStatsboolean

    Include company review stats in the output. (default false)

  • includeAllReviewsboolean

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

  • monitoringModeForReviewsboolean

    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)

  • sortReviewsBystring

    Sort reviews by criteria (default "RELEVANCE")

    RELEVANCE, DATE, RATING, RATING_ASC

  • reviewsStartDatestring

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

  • includeCompanyInterviewStatsboolean

    Include company interview stats in the output. (default false)

  • interviewsStartDatestring

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

  • includeCompanyBenefitsStatsboolean

    Include company benefits stats in the output. (default false)

  • benefitsStartDatestring

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

  • includeAllSalariesboolean

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

  • enrichEmailsboolean

    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)

  • qualifyByPaymentboolean

    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)

  • reviewInsightsboolean

    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)

  • painPointAnalysisboolean

    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)

  • maxItemsinteger

    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)

  • maxConcurrencyinteger

    Maximum number of pages that can be processed at the same time. (default 7)

  • minConcurrencyinteger

    Minimum number of pages that will be processed at the same time. (default 1)

  • maxRequestRetriesinteger

    Number of times the crawler will retry a failed request before giving up. (default 100)

  • proxyobject

    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

curl -s https://sooma.dev/v1/run \ -H "Authorization: Bearer $SOOMA_API_KEY" \ -H "Content-Type: application/json" \ -d '{"provider":"apify","endpoint":"/memo23/glassdoor-scraper-ppr","input":{}}'

Or ask your agent: it will call inspect for this schema and run it over MCP.