Glassdoor Salary Scraper — Pay Data & Percentiles
Pricing
from $6.00 / 1,000 dataset items
Glassdoor Salary Scraper — Pay Data & Percentiles
Scrape Glassdoor salary estimates — base + total pay percentiles (P10–P90) per employer, by job title or keyword, filtered by location, company and experience. Reliable mobile-API backend, no anti-bot. Pay only for the results you get.
Glassdoor Salary Scraper
Extract Glassdoor salary estimates at scale as clean, flat JSON — base and total-pay percentiles (P10–P90), additional pay, currency and company ratings — for any job title or keyword, filtered by location, employer and years of experience.
Built on Glassdoor's mobile API, which is anonymous and has no anti-bot wall, so runs are reliable and don't break when Glassdoor rotates its web protection.
Who it's for
- Compensation & HR analysts — build pay bands by title, company, location and experience; calibrate offers and salary ranges against the market.
- Recruiters & talent-market intelligence — benchmark competitor pay to win candidates.
- PropTech / HR-SaaS developers — a stable, documented salary schema to power compensation features, webhooks and dashboards.
- Researchers & economists — labor-market pay distributions across employers and geographies.
What you get — output fields
| Field | Type | Description |
|---|---|---|
query / query_type | string | The title/keyword searched and how it was matched |
location_name | string | Location scope (null = US nationwide) |
company_id / company_name | int / string | Glassdoor employer id + name |
company_rating | number | Employer overall rating (1–5) |
company_global_job_count | int | Open jobs for this employer |
job_title / job_title_id / goc_id | string / int | Normalized title + Glassdoor ids |
pay_period / currency | string | e.g. ANNUAL / USD |
base_pay_mean | number | Mean base pay (keyword mode) |
base_pay_median / _p10 / _p25 / _p75 / _p90 | number | Base-pay percentiles (title mode) |
total_pay_median / _p10 / _p25 / _p75 / _p90 | number | Total pay (base + bonus/stock) percentiles |
additional_pay_mean | number | Mean additional pay (bonus, stock, tips) |
confidence | string | Glassdoor confidence level, when provided |
scraped_at | string | UTC ISO-8601 timestamp |
High-value use cases
- Salary benchmarking — pull "Software Engineer" across the top 200 employers in a metro to build a percentile pay band in minutes.
- Offer calibration — compare a candidate's target title + experience band against real market P25/P50/P75.
- Competitive pay intelligence — track how a rival's pay for a role compares to yours over time.
- Product data — feed a compensation dashboard or "salary insights" feature with a stable JSON schema.
- Labor-market research — distributions of pay by occupation cluster (
goc_id) and geography.
Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
queries | array | ["Software Engineer"] | Job titles or keywords; each paginated separately |
searchBy | enum | title | title (exact match) or keyword (broad) |
location | string | — | Place name, e.g. "San Francisco"; empty = US nationwide |
locationType | enum | city | city / state / country |
company | string | — | Restrict to one employer by name |
yearsOfExperience | enum | — | LESS_THAN_ONE, ONE_TO_THREE, FOUR_TO_SIX, SEVEN_TO_NINE, TEN_TO_FOURTEEN |
maxResultsPerQuery | integer | 200 | Cap salary rows per query |
Example input
{"queries": ["Software Engineer", "Product Manager"],"searchBy": "title","location": "San Francisco","locationType": "city","maxResultsPerQuery": 200}
Example output row
{"query": "Software Engineer","query_type": "title","location_name": "San Francisco","company_id": 575263,"company_name": "Uber","company_rating": 3.7,"job_title": "Software Engineer","pay_period": "ANNUAL","currency": "USD","base_pay_mean": 177373.92,"total_pay_median": 286865.03,"total_pay_p10": 205654.54,"total_pay_p90": 421695.31,"additional_pay_mean": 109491.11,"scraped_at": "2026-09-09T02:33:34Z"}
Scheduling & integrations
- Schedule runs (daily/weekly) from the Apify Console to keep pay bands fresh.
- Webhooks fire on run completion — push new rows to your app, Make or Zapier.
- Export to JSON, CSV, Excel or Google Sheets, or pull from the dataset API.
Use with AI assistants (MCP)
Apify Actors are callable from AI assistants via the Model Context Protocol, so an agent can fetch live salary benchmarks on demand (e.g. "get median total pay for a Senior Data Scientist at the top 20 employers in New York"). Point your MCP client at this Actor and pass the same input schema.
FAQ
How many salary rows can I get? Each title returns up to ~100k rows (one per
employer/title estimate); set maxResultsPerQuery to cap it. numPages in the
API bounds the real total.
How fresh is the data? Live — every run queries Glassdoor's current salary estimates at request time.
Keyword vs title mode? title matches an exact Glassdoor job title and reports
base-pay percentiles; keyword is a broader match and reports mean base pay. Both
return full total-pay percentiles.
Do I need a proxy? Yes — use Residential proxy (the default). Glassdoor's mobile API serves residential IPs only and blocks datacenter IPs, so runs without residential proxy return no data. No login or credentials are needed.
Is scraping this legal? You are responsible for your use. The Actor collects only publicly available, aggregate salary estimates (no personal data) and is intended for market research and analytics; comply with Glassdoor's terms and applicable law.
Reliability? The mobile API is a stable JSON/GraphQL backend with no Cloudflare JS challenge, so this Actor does not break on web anti-bot rotations; transient network errors are retried automatically. It does require Residential proxy (the default) because the API blocks datacenter IPs.
