Glassdoor Salary Scraper – Salary Data & Pay Percentiles avatar

Glassdoor Salary Scraper – Salary Data & Pay Percentiles

Pricing

from $6.00 / 1,000 dataset items

Go to Apify Store
Glassdoor Salary Scraper – Salary Data & Pay Percentiles

Glassdoor Salary Scraper – Salary Data & Pay Percentiles

Scrape Glassdoor salary data at scale: base and total pay percentiles (P10–P90), additional pay and company ratings, by job title or keyword, filtered by location, employer and experience. Clean JSON for salary benchmarking and HR analytics. Pay only for the results you get.

Pricing

from $6.00 / 1,000 dataset items

Rating

0.0

(0)

Developer

axly

axly

Maintained by Community

Actor stats

0

Bookmarked

28

Total users

19

Monthly active users

34 minutes ago

Last modified

Categories

Share

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

FieldTypeDescription
query / query_typestringThe title/keyword searched and how it was matched
location_namestringLocation scope (null = US nationwide)
years_of_experiencestringExperience band applied to the estimate (title + company searches only), else null
company_id / company_nameint / stringGlassdoor employer id + name
company_ratingnumberEmployer overall rating (1–5)
company_global_job_countintOpen jobs for this employer
job_title / job_title_id / goc_idstring / intNormalized title + Glassdoor ids
pay_period / currencystringe.g. ANNUAL / USD
base_pay_meannumberMean base pay (keyword mode)
base_pay_median / _p10 / _p25 / _p75 / _p90numberBase-pay percentiles (title mode)
total_pay_median / _p10 / _p25 / _p75 / _p90numberTotal pay (base + bonus/stock) percentiles
additional_pay_meannumberMean additional pay (bonus, stock, tips)
confidencestringGlassdoor confidence level, when provided
scraped_atstringUTC ISO-8601 timestamp

High-value use cases

  1. Salary benchmarking — pull "Software Engineer" across the top 200 employers in a metro to build a percentile pay band in minutes.
  2. Offer calibration — compare a candidate's target title + experience band at a specific employer (e.g. Software Engineer at Google, 1–3 years) against its P25/P50/P75.
  3. Competitive pay intelligence — track how a rival's pay for a role compares to yours over time.
  4. Product data — feed a compensation dashboard or "salary insights" feature with a stable JSON schema.
  5. Labor-market research — distributions of pay by occupation cluster (goc_id) and geography.

Input parameters

FieldTypeDefaultDescription
queriesarray["Software Engineer"]Job titles or keywords; each paginated separately
searchByenumtitletitle (exact match) or keyword (broad)
locationstring—Place name, e.g. "San Francisco"; empty = US nationwide
locationTypeenumcitycity / state / country
companystring—Restrict to one employer by name
yearsOfExperienceenum—LESS_THAN_ONE, ONE_TO_THREE, FOUR_TO_SIX, SEVEN_TO_NINE, TEN_TO_FOURTEEN. Applied only with searchBy: "title" plus a company: you get one experience-adjusted row for that title at that employer. Otherwise ignored (noted in the run status)
maxResultsPerQueryinteger200Cap 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",
"years_of_experience": null,
"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.