Glassdoor Jobs Scraper: Salary Estimates, Ratings, Monitor avatar

Glassdoor Jobs Scraper: Salary Estimates, Ratings, Monitor

Pricing

from $0.80 / 1,000 result items

Go to Apify Store
Glassdoor Jobs Scraper: Salary Estimates, Ratings, Monitor

Glassdoor Jobs Scraper: Salary Estimates, Ratings, Monitor

Get a scheduled feed of new Glassdoor jobs for any title and location, with employer rating and salary estimate (min/median/max, source) on every row — no login. Run it daily on a schedule for only new listings since the last check, or run it once for a one-off salary benchmark.

Pricing

from $0.80 / 1,000 result items

Rating

0.0

(0)

Developer

Viktor Dubnytskiy

Viktor Dubnytskiy

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Categories

Share

Get a scheduled feed of new Glassdoor jobs for any title and location, with employer rating and salary estimate (min/median/max, source) on every row — no account, no cookies.

What you get

Real rows from the example dataset (searches: [{"keyword": "python developer", "location": "Austin, TX"}]):

titlecompanyemployerRatingsalaryMin / salaryMedian / salaryMaxsalarySourceeasyApply
Sr Software EngineerCox Automotive, Inc.3.8101500 / 135300 / 169100EMPLOYER_PROVIDEDfalse
Data Platform Engineer with Kubernetes & Python experienceInfosys Limited3.697467 / 120486 / 148941ESTIMATEDtrue

Full row: listingId, title, company, companyShort, employerId, employerRating, location, locationType, salaryMin, salaryMedian, salaryMax, salaryPeriod, salaryCurrency, salarySource, easyApply, sponsored, ageInDays, postedAt, descriptionSnippet, attributes, occupation, normalizedTitle, logoUrl, url, keyword, searchLocation, page, rank, scrapedAt.

Use cases

  • Daily job alerts for a title + location — schedule monitor mode on a role/city search; each run returns only the listings that are new since the last one, so you build a feed instead of re-pulling the same 30 jobs every day.
  • Salary tracking over time — run the same monitor-mode search weekly and watch salaryMin/salaryMedian/salaryMax and salarySource (employer-provided vs. estimated) drift for a role and city, without re-collecting the whole list by hand.
  • One-off market snapshot — a single run for one role and city when you just need today's list of employers, ratings and salary estimates, nothing recurring.

Try it in 10 seconds

One-off list — hit Start/Try it, the input already works: searches: [{"keyword": "python developer", "location": "Austin, TX"}], maxPages: 1, maxItems: 20, nothing required.

Monitor mode (daily new-jobs feed) — save the task, then set:

{
"mode": "monitor",
"monitorStateId": "python-developer-austin-watch",
"searches": [{"keyword": "python developer", "location": "Austin, TX"}],
"webhookUrl": "https://your-endpoint.example.com/hook",
"telegramBotToken": "",
"telegramChatId": ""
}

and put it on a schedule (Apify → Schedules → cron 0 7 * * * for daily). Each monitor run charges one monitor-check event ($0.005) and returns only jobs that are new or changed since the previous run, each billed as one change event ($0.001) — a run with nothing new charges only the check.

How it works

  1. Each searches entry is turned into a Glassdoor search URL (the location name is resolved through Glassdoor's own location lookup); searchUrls are used as-is with their filters.
  2. The search result page is fetched through a US residential proxy with a browser fingerprint, and the embedded job-search payload is parsed — no browser is started, so runs are fast.
  3. Rows are deduplicated on the Glassdoor listing id, so overlapping searches never charge twice.
  4. In monitor mode the run compares against the previous run of the same task and returns only new or changed listings, optionally posting a summary to a webhook or Telegram chat.

Input

FieldMeaningDefault
searches[{"keyword": "python developer", "location": "Austin, TX"}]; location optionalthat example
searchUrlsGlassdoor search URLs copied from the site, filters preservedempty
maxPagesResult pages per search, 1–5 (30 jobs per page)1
remoteOnlyKeyword searches: keep only remote jobsfalse
postedWithinDaysKeyword searches: 1, 3, 7, 14 or 30empty (any age)
maxItemsStop after this many listings20
modescrape or monitor (only new/changed since the previous run)scrape
monitorStateIdState key for monitor mode outside a saved taskempty
webhookUrlHTTPS endpoint for the monitor-mode change summaryempty
telegramBotToken / telegramChatIdSend the monitor-mode summary to Telegramempty

Pricing

EventPrice
result$0.001 per job ($1 per 1,000)
monitor-check$0.005 per monitor run
change$0.001 per new/changed job

Charged only for jobs actually pushed. Glassdoor serves search pages only to residential IPs; Apify bills that proxy traffic on top (about 1 MB per page of 30 jobs).

Found it useful? A short review on the Store page helps other people find this actor and tells us what to improve. If a search comes back wrong, open an issue on the actor page — issues are answered within a day.

Why this actor

  • Salary percentiles and employer rating on the same row as the job — no second lookup.
  • salarySource tells you whether the number came from the employer or from Glassdoor's estimate.
  • No login, no cookies, no account of yours is used.
  • You pay per pushed row; an empty run costs nothing beyond platform usage, and RUN_SUMMARY records why it was empty (no_matches, blocked, rate_limited, invalid_input, upstream_error).
  • Honest about the 30-results ceiling below instead of pretending to paginate.
  • Monitor mode with webhook and Telegram alerts.

Limits

  • 30 jobs per search. Glassdoor's deeper pages are loaded client-side for logged-in sessions only; logged-out page 2 repeats page 1. Run several narrower searches (location, postedWithinDays, remoteOnly, title variants) instead — duplicates across searches are never charged.
  • Job detail pages are not opened: the full description and apply link are not included (the url opens the listing on Glassdoor).
  • Company reviews are not included.
  • Salary fields are empty for listings where Glassdoor shows no estimate.
  • keyword and searchLocation are null on rows that came from a pasted searchUrls entry.

FAQ

Can I scrape Glassdoor jobs without logging in? Yes — this actor only reads public search results, through a US residential proxy. You never provide Glassdoor credentials.

Does it return Glassdoor salary data? It returns the salary estimate attached to each job listing: minimum, median and maximum, with the period, currency and whether the employer provided the figure. Standalone company salary pages are a different dataset and are not covered.

Why do I get only 30 results per search? Glassdoor serves 30 listings per search to logged-out visitors and loads the rest client-side for signed-in sessions. Split one broad search into several narrower ones (by city, by posting age, by title variant); duplicates across searches are deduplicated and never charged.

Changelog

  • 0.1: initial release — search, salary estimates, monitor mode.

If this actor was useful, please leave a review on its Apify Store page — it is the main way other people find it. For bugs or a field you need, open a ticket on the Issues tab of this actor.