Glassdoor Jobs Scraper: Salaries, Ratings & Company Data
Pricing
Pay per event
Glassdoor Jobs Scraper: Salaries, Ratings & Company Data
Glassdoor scraper for jobs, salaries and company data. Scrape Glassdoor job listings with salary ranges (low / median / high), company ratings and sub-ratings, skills, Easy Apply and full company profiles. All 20 Glassdoor countries, 14 filters, no login. JSON, CSV, Excel. $0.40 per 1,000 jobs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Divya Raj
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Glassdoor Jobs Scraper extracts job listings from Glassdoor in seconds, with the data that makes Glassdoor worth scraping: salary ranges (low / median / high) and whether the employer stated them, company ratings, skills, Easy Apply, sponsored flags, Glassdoor awards, and with full details the complete company profile: size, revenue, industry, founded year, CEO and sub-ratings for culture, pay, work-life balance and more.
Use it as a Glassdoor scraper API, a Glassdoor jobs API, a Glassdoor salary scraper or a Glassdoor company data scraper: search any keyword in any city, state or country on every Glassdoor site (US, UK, India, Canada, Australia, Germany and more) and export the results to JSON, CSV, Excel or Google Sheets.
No login, no cookies, no browser. Plain HTTP against Glassdoor's own search API, which is why it is fast and cheap. From $0.40 per 1,000 jobs, no start fee.
1,000 jobs in 34 seconds. 300 jobs with full descriptions and company profiles in 47 seconds.
Also need a LinkedIn job scraper? The sister Actor LinkedIn Jobs Scraper + Glassdoor scrapes both sites in one run into one deduplicated dataset.
Why this one
| This Actor | valig/glassdoor-jobs-scraper | bebity/glassdoor-jobs-scraper | |
|---|---|---|---|
| Price per 1,000 jobs | $0.40, no start fee | $0.40 + $0.001 per run | $0.40 |
| Company profile (size, revenue, industry, CEO, sub-ratings) | included in $1.20 detailed | not offered | +$1.00 per 1,000 add-on |
| Salary low / median / high + employer-stated vs estimate | yes | - | - |
| Filter: only employer-stated salaries | yes | - | - |
| Filter: minimum salary | yes | - | yes |
| Filter: hide sponsored listings | yes | - | - |
| Filter: exclude companies | yes | - | yes |
| Filters: posted within, job type, remote, seniority, Easy Apply, rating, company size, radius | yes | most | yes |
| Several keywords x several locations in one run | yes | one of each | one of each |
| "Only new jobs" memory for scheduled runs | built in | manual id list | - |
| Skills | Glassdoor's tags + skills read from the description | - | - |
| Awards (Best Places to Work, Best-Led Companies, Top CEO) | yes | - | - |
Competitor columns are from their public input schemas and prices on 2026-10-22; "-" means the option is not in their input.
Who uses it
- Recruiters and staffing agencies: every company hiring for a role in a city, with the pay range to pitch against and the employer's rating.
- Salary and labour-market research: Glassdoor pay percentiles by title, location and
company, with
salarySourcetelling employer-published figures from estimates. - Job boards and job-alert apps: a daily feed of fresh postings with
onlyNewJobs, so you never pay twice for the same job. - Sales and lead generation: companies that are hiring have budget; with full details you get their size, revenue, industry, website and CEO.
- AI agents and LLM apps: structured job data through the Apify API or MCP server.
How to scrape Glassdoor jobs
- Enter keywords (e.g.
data analyst) and locations (e.g.New York,California,London,India), or paste a Glassdoor search URL. - Pick filters and how many jobs you want.
- Click Start. Download JSON, CSV or Excel, or fetch the results through the API.
Locations are matched to Glassdoor's own location ids, so India means the country (not
Indianapolis) and Bangalore finds Bengaluru. An over-specified name such as Austin, Texas, USA
falls back to its parts; a place Glassdoor does not know is skipped with a clear warning. Leave locations empty to search the whole US.
Glassdoor scraper for every country
Type any city, state or country, or paste a search URL from any Glassdoor site. Glassdoor runs 20 country domains, all supported:
| Region | Glassdoor sites |
|---|---|
| North America | glassdoor.com (United States), glassdoor.ca (Canada), glassdoor.com.mx (Mexico) |
| Europe | glassdoor.co.uk (UK), glassdoor.ie (Ireland), glassdoor.de (Germany), glassdoor.fr (France), glassdoor.es (Spain), glassdoor.it (Italy), glassdoor.nl (Netherlands), glassdoor.be (Belgium), glassdoor.at (Austria), glassdoor.ch (Switzerland) |
| Asia-Pacific | glassdoor.co.in (India), glassdoor.sg (Singapore), glassdoor.com.hk (Hong Kong), glassdoor.com.au (Australia), glassdoor.co.nz (New Zealand) |
| South America | glassdoor.com.br (Brazil), glassdoor.com.ar (Argentina) |
Locations are resolved through Glassdoor's own location ids, so you never have to pick a country
site: London, Zurich or Bengaluru in Locations is enough. Accents are optional
(Zurich finds Zürich, Sao Paulo finds São Paulo).
Tested on all 20 sites (2026-10-22, "data analyst", 20 jobs each from a search URL of that site): every run succeeded with 20/20 jobs in the right city. How often a salary is shown depends on the country, because it is Glassdoor's own data:
| Site | Salary shown | Rating | Site | Salary shown | Rating |
|---|---|---|---|---|---|
| .com (New York) | 100% | 100% | .ca (Toronto) | 100% | 95% |
| .com.au (Sydney) | 95% | 90% | .co.uk (London) | 90% | 90% |
| .co.in (Bengaluru) | 85% | 95% | .co.nz (Auckland) | 80% | 95% |
| .ie (Dublin) | 75% | 95% | .it (Milan) | 70% | 90% |
| .com.hk (Hong Kong) | 70% | 95% | .sg (Singapore) | 65% | 90% |
| .nl (Amsterdam) | 55% | 100% | .fr (Paris) | 30% | 100% |
| .es (Madrid) | 25% | 100% | .com.mx (Mexico) | 25% | 95% |
| .de (Berlin) | 10% | 90% | .be (Brussels) | 10% | 100% |
| .ch (Zürich) | 5% | 100% | .com.br (São Paulo) | 5% | 90% |
| .at (Vienna) | 0% | 95% | .com.ar (Buenos Aires) | 0% | 100% |
Job type and skill tags are read in the site's language too (Vollzeit, Tiempo completo, CDI,
全職 all become full-time).
Filters
Most filters are applied by Glassdoor itself, so you never pay for a job only for it to be thrown away, and a narrow search reaches deeper into the results.
| Option | What it does | Applied by |
|---|---|---|
postedWithin | 24 hours, 3 days, week, 14 days, month | Glassdoor |
jobType | full-time, part-time, contract, temporary, internship | Glassdoor (one choice), tags (several) |
workType | remote, hybrid, on-site | Glassdoor (remote only), tags (others) |
experienceLevel | internship, entry, mid-senior, director, executive | Glassdoor |
minCompanyRating | 1.0+ to 4.0+ | Glassdoor |
companySize | 1-200 up to 5,001+ employees | Glassdoor |
searchRadius | exact city up to 100 miles | Glassdoor |
easyApplyOnly | only jobs you apply to on Glassdoor | Glassdoor |
minSalary | yearly minimum in the job's currency; hourly and monthly pay converted | Glassdoor + exact check |
salaryOnly | only jobs that show pay | before charging |
employerSalaryOnly | only pay the employer published, not Glassdoor's estimate | before charging |
hideSponsored | drop paid listings | before charging |
excludeCompanies | e.g. staffing agencies, by name | before charging |
onlyNewJobs | skip jobs from your previous runs (60-day memory) | before charging |
Hybrid and on-site are matched on the tags Glassdoor gives a listing, which about a third of listings carry, so those two return fewer jobs. The run log lists how many jobs each option removed.
What you get for every job
Every field is always present (unknown values are null), so CSV and Excel columns never shift.
Salary fields are flat, one column each.
| Group | Fields |
|---|---|
| Job | id, url, title, jobFunction, jobType, workType, experienceLevel, skills[], education[], description |
| Pay | salaryMin (p10), salaryMedian (p50), salaryMax (p90), salaryCurrency, salaryPeriod, salarySource, salaryText |
| Timing & signals | ageInDays, postedAt, easyApply, isSponsored |
| Company | company, employerId, companyUrl, companyLogo, companyRating, awards[] |
| Full details | applyUrl, full description (+ descriptionHtml), yearsOfExperience, city, state, country, latitude, longitude, companySize, companyRevenue, companyIndustry, companySector, companyType, companyFounded, companyWebsite, companyHeadquarters, companyCeo, companyRatings |
| Provenance | searchKeyword, searchLocation, detailsFetched, scrapedAt |
salarySource is EMPLOYER_PROVIDED (published by the employer), ESTIMATED (Glassdoor's
estimate) or DESCRIPTION (read from the job text with full details). companyRatings holds
careerOpportunities, compensationAndBenefits, cultureAndValues, seniorManagement,
workLifeBalance (1-5) and recommendToFriend, ceoApproval (0-1 shares).
How often each field is filled
Measured on live runs, 2026-10-22:
| Field | New York, data analyst (50) | India, data analyst (50) | California, nurse (300) |
|---|---|---|---|
| title, company, location, url, postedAt, easyApply, isSponsored | 100% | 100% | 100% |
| salary (min / median / max) | 98-100% | 74% | 99% |
| companyRating | 98% | 90% | 72% |
| skills | 98% | 100% | 100% |
| jobType | 72-74% | 68% | 95% |
| experienceLevel | 100% | 0% (not tagged in India) | 100% |
| full details: companySize / industry / website | 92% / 88% / 98% | 90% / 80% / 90% | 60% / 60% / 78% |
| full details: companyRatings / CEO / founded | 98% / 86% / 72% | 90% / 72% / 78% | 71% / 48% / 38% |
| full details: yearsOfExperience | 78% | 76% | 64% |
Fields Glassdoor does not publish for a listing stay null. Nothing is guessed.
Example output
{"id": "1009613832416","url": "https://www.glassdoor.com/job-listing/sector-analyst-mi-data-point72-JV_IC1132348_KO0,22_KE23,30.htm","title": "Sector Analyst, MI-Data","company": "Point72 Asset Management, L.P","employerId": 1032703,"companyRating": 4,"location": "New York, NY","experienceLevel": "Mid-level","jobFunction": "data analyst","salaryMin": 95000,"salaryMedian": 105000,"salaryMax": 115000,"salaryCurrency": "USD","salaryPeriod": "year","salarySource": "EMPLOYER_PROVIDED","salaryText": "USD 95,000 - USD 115,000 per year","ageInDays": 236,"postedAt": "2026-02-28","easyApply": false,"isSponsored": false,"skills": ["Market research data", "Data visualization", "SQL", "Python"],"education": ["Bachelor's degree"],"awards": [],"searchKeyword": "data analyst","searchLocation": "New York"}
Pricing
Pay per result. You are charged for jobs you receive, nothing else: filtered-out jobs, duplicates
and jobs from previous runs (with onlyNewJobs) are free.
| Event | What it is | Free plan | Bronze | Silver | Gold and up |
|---|---|---|---|---|---|
job | job with salary, rating, skills, Easy Apply, sponsored flag, awards and link | $0.40 | $0.36 | $0.32 | $0.30 |
job-with-details | plus the full description, apply link and complete company profile | $1.20 | $1.08 | $0.96 | $0.90 |
Prices are per 1,000 jobs. No start fee, no monthly rent. If a job's details cannot be loaded it is delivered and charged as a basic job.
Set a max cost per run in the run options and the Actor stops the moment it is reached.
Input examples
Keywords and locations. Every keyword is searched in every location.
{"keywords": ["data analyst", "business analyst"],"locations": ["New York", "California"],"maxItems": 500,"postedWithin": "week","employerSalaryOnly": true,"hideSponsored": true,"fetchDetails": false}
Paste a search URL from any Glassdoor country site. The keyword and location are read from the URL; filters come from the options.
{"startUrls": ["https://www.glassdoor.co.in/Job/bengaluru-react-developer-jobs-SRCH_IL.0,9_IC2940587_KO10,25.htm"],"maxItems": 200}
Limits worth knowing
- Glassdoor repeats some listings across its result pages; duplicates are removed and never charged, and the log says how many.
experienceLevelcomes from Glassdoor's own tags, which US listings carry and Indian listings mostly do not.- An empty input runs a 20-job sample search ("data analyst" in the United States), so you can see the output before spending anything.
Integrations
The output is a standard Apify dataset:
- API:
GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json(alsocsv,xlsx,xml,rss) - Make, Zapier, n8n through the Apify connectors
- Scheduled runs: a daily schedule plus
onlyNewJobs: truegives you a feed of new postings - Webhooks on run completion to push results into your own system
FAQ
Do I need a Glassdoor account or cookies?
No. Only public job listings are read. You are never asked for a login, credentials or cookies.
How much does it cost to scrape 1,000 Glassdoor jobs?
$0.40, or $1.20 with full descriptions and company profiles. No start fee.
Can I get Glassdoor salary data?
Yes: low, median and high pay for most listings (98-100% of US data-analyst listings in our test),
with salarySource saying whether the employer published it or Glassdoor estimated it. Use
employerSalaryOnly to keep only employer-published pay.
Is there an official Glassdoor jobs API?
Glassdoor does not offer an open public jobs API. This Actor works as one: start it through the Apify API and get JSON back, with no Glassdoor account or API key.
Can I scrape Glassdoor company reviews and ratings?
Every job carries the employer's overall rating, and with full details the sub-ratings (culture, pay and benefits, work-life balance, career, management, CEO approval and recommend-to-friend). Individual review texts are not collected.
Which countries work?
All 20 Glassdoor country sites (see the table above): type a city, state or country, or paste a URL from any of them.
Is it legal to scrape Glassdoor jobs?
The Actor reads publicly available job postings only. It collects no personal data, reviews or candidate profiles. How you use the data is your responsibility, so check the rules that apply to your use case.
How do I get only new jobs every day?
Create a daily schedule and set onlyNewJobs: true. The Actor remembers every job it has returned
to you for 60 days and skips it next time, so you only pay for postings you have not seen.
Why is a field empty?
Because Glassdoor did not publish it for that listing. Nothing is inferred, so an empty field is information too.
Something is missing?
Tell us on the Issues tab. Requests decide what gets added next.