Glassdoor Jobs Scraper: Salary Estimates, Ratings, Monitor
Pricing
from $0.80 / 1,000 result items
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
Maintained by CommunityActor 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"}]):
| title | company | employerRating | salaryMin / salaryMedian / salaryMax | salarySource | easyApply |
|---|---|---|---|---|---|
| Sr Software Engineer | Cox Automotive, Inc. | 3.8 | 101500 / 135300 / 169100 | EMPLOYER_PROVIDED | false |
| Data Platform Engineer with Kubernetes & Python experience | Infosys Limited | 3.6 | 97467 / 120486 / 148941 | ESTIMATED | true |
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/salaryMaxandsalarySource(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.
Related actors
- Career Site Jobs Monitor: Greenhouse, Lever, Ashby, Workday — need every open role straight from a company's own career site instead of Glassdoor's listing.
- Wellfound Startup Jobs Scraper (role, location, remote, salary) — focused on funded startups, with company stage and pitch on every row.
- Remote Jobs Scraper: RemoteOK, Remotive +4 (dedup, alerts) — six public remote-job boards in one schema when the role does not have to be tied to Glassdoor.
- HiringCafe Jobs Scraper (ATS-sourced jobs, filters, alerts) — a daily feed of brand-new ATS-sourced postings across hundreds of companies, not a single search.
How it works
- Each
searchesentry is turned into a Glassdoor search URL (the location name is resolved through Glassdoor's own location lookup);searchUrlsare used as-is with their filters. - 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.
- Rows are deduplicated on the Glassdoor listing id, so overlapping searches never charge twice.
- In
monitormode 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
| Field | Meaning | Default |
|---|---|---|
searches | [{"keyword": "python developer", "location": "Austin, TX"}]; location optional | that example |
searchUrls | Glassdoor search URLs copied from the site, filters preserved | empty |
maxPages | Result pages per search, 1–5 (30 jobs per page) | 1 |
remoteOnly | Keyword searches: keep only remote jobs | false |
postedWithinDays | Keyword searches: 1, 3, 7, 14 or 30 | empty (any age) |
maxItems | Stop after this many listings | 20 |
mode | scrape or monitor (only new/changed since the previous run) | scrape |
monitorStateId | State key for monitor mode outside a saved task | empty |
webhookUrl | HTTPS endpoint for the monitor-mode change summary | empty |
telegramBotToken / telegramChatId | Send the monitor-mode summary to Telegram | empty |
Pricing
| Event | Price |
|---|---|
| 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.
salarySourcetells 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_SUMMARYrecords 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
urlopens the listing on Glassdoor). - Company reviews are not included.
- Salary fields are empty for listings where Glassdoor shows no estimate.
keywordandsearchLocationarenullon rows that came from a pastedsearchUrlsentry.
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.