Glassdoor Salaries Universal Scraper avatar

Glassdoor Salaries Universal Scraper

Pricing

from $2.04 / 1,000 results

Go to Apify Store
Glassdoor Salaries Universal Scraper

Glassdoor Salaries Universal Scraper

πŸ’° Scrape Glassdoor salary estimates by company name or URL. Get base pay (low/median/high), total pay, bonus, stock & profit sharing per job title, with the number of reported salaries, currency & pay period. No login and no proxy needed.

Pricing

from $2.04 / 1,000 results

Rating

5.0

(1)

Developer

Scrapifier

Scrapifier

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

6

Monthly active users

5 days ago

Last modified

Categories

Share

Glassdoor Salaries Scraper

Scrape salary estimates from Glassdoor by company name or Glassdoor URL and export them as JSON, CSV or Excel, or pull them straight from the API.

⚑ For every job title reported at a company you get the base pay low, median and high, the total pay range, the additional pay median with its breakdown (cash bonus, stock, profit sharing, sales commission, tips), the number of reported salaries, the most recent report date, the currency, the pay period (annual, monthly or hourly), the region the figures cover and an optional full percentile range for base and total pay. Works with no login, no cookies and no proxy, on six Glassdoor domains (.com, .co.uk, .ca, .com.au, .co.in, .ie). You pay per job-title row.

Apify Actor

🎯 Why scrape Glassdoor salaries?

  • Compensation benchmarking: compare your pay bands with the base and total pay Glassdoor reports for the same job titles at competitors, in one spreadsheet instead of dozens of pages.
  • Recruiting and offers: check the median and the 90th percentile for a role before you write an offer, so the package lands where candidates expect it.
  • Job search and negotiation: pull every job title at a target employer with the number of reported salaries behind each figure, and walk into the interview with numbers.
  • Market research and consulting: build salary tables by company, region and pay period for a whole sector, refreshed on a schedule.
  • Investing and due diligence: compensation structure (how much of total pay is stock, bonus or commission) says a lot about how a company retains people. Pull it for a portfolio of employers.
  • Research and journalism: assemble datasets of reported salaries per job title across companies for pay-gap or labor-market analysis.

πŸ“Š What data does Glassdoor Salaries Scraper extract?

FieldDescription
employerId, employerNameGlassdoor employer id and company name
urlLink to the company's salaries page on Glassdoor
jobTitle, jobTitleIdJob title and its Glassdoor id
locationRegion the figures cover (for example United States)
payPeriodannual, monthly or hourly
currencyCurrency code (for example USD)
salaryCountNumber of salaries reported for this job title
mostRecentDate of the most recent salary report (ISO 8601)
basePayMin, basePayMedian, basePayMaxBase pay at the 10th percentile (low), median and 90th percentile (high)
totalPayMin, totalPayMedian, totalPayMaxTotal pay (base plus additional) at the 10th percentile, median and 90th percentile
additionalPayMedianMedian additional pay (bonus, stock, profit sharing and other cash on top of base)
additionalPay.*Median breakdown: cashBonus, stockBonus, profitSharing, salesCommission, tips (when includeAdditionalPay is on)
basePayPercentiles, totalPayPercentilesFull percentile range keyed P10, P25, P50, P75, P90 (when includePercentiles is on)

With flatten enabled the three nested objects (additionalPay, basePayPercentiles, totalPayPercentiles) are dropped so every row is a flat line for CSV and Excel.

πŸš€ How to scrape Glassdoor salaries

  1. Open the Actor and type one or more company names in companyNames (for example Google, Microsoft, Airbnb), or paste Glassdoor company URLs (the Salaries page or any company page) in startUrls.
  2. Pick the pay period: annual, monthly or hourly. Every figure in the run is reported in that period.
  3. Choose the Glassdoor domain in country if you want figures for the UK, Canada, Australia, India or Ireland instead of the United States. It sets the region and the currency of the results.
  4. Set Max job titles per company. 100 is the default; 0 collects every job title Glassdoor reports for the company.
  5. Click Start. The Actor collects salary rows 20 job titles per request.
  6. Open the Storage tab to preview the rows and export them as JSON, CSV, Excel or XML, or read them from the dataset API.

The same run can be started from the Apify API, the Python or JavaScript client, or put on a schedule for monthly benchmarking.

πŸ“₯ Input parameters

FieldKeyTypeDefaultDescription
Glassdoor company URLsstartUrlsarray of URLsnoneGlassdoor company URLs, the Salaries page (for example https://www.glassdoor.com/Salary/Google-Salaries-E9079.htm) or any company page, from any Glassdoor domain. Leave empty to use company names.
Company namescompanyNamesarray of strings["Google"]Company names resolved automatically on the chosen Glassdoor domain (for example Google, Microsoft, Airbnb).
Max job titles per companymaxSalariesPerCompanyinteger100Job-title salary rows to collect per company. 0 = every job title Glassdoor reports.
Pay periodpayPeriodselectannualannual (per year), monthly or hourly.
Glassdoor domain (for company names)countryselectwwwwww (glassdoor.com), co.uk, ca, com.au, co.in or ie. Sets the region and currency of the figures.
Include full percentile breakdownincludePercentilesbooleantrueAdd the full percentile range (10th, 25th, 50th, 75th, 90th) for base and total pay next to the low/median/high summary.
Include additional pay breakdownincludeAdditionalPaybooleantrueAdd the median cash bonus, stock, profit sharing, sales commission and tips.
Flat columns (CSV-friendly)flattenbooleanfalseDrop the nested percentile and additional-pay objects for clean CSV and Excel exports.
Report empty inputsemitInputStatusbooleantrueWrite an input_status report (which input returned nothing and why) to the run's OUTPUT record.
Page load retriesmaxChallengeRetriesinteger6Retries when a page fails to load. Increase only if runs report being blocked.
ProxyproxyConfigurationobjectoffLeave off. A proxy usually makes Glassdoor runs fail; only add one if you own clean, ISP-grade IPs.

Example input:

{
"companyNames": ["Google"],
"payPeriod": "annual",
"country": "www",
"maxSalariesPerCompany": 100,
"includePercentiles": true,
"includeAdditionalPay": true
}

A pasted URL only needs to contain the employer id (the -E9079 part of Google-Salaries-E9079.htm); the Salaries, Overview or Reviews page of the company all work. The region and currency of the figures always follow the country setting, so pair a URL with the domain you want the salaries reported for.

πŸ“€ Output example

Each job title is one dataset item, exportable as JSON, CSV, Excel or via the API.

{
"employerId": 9079,
"employerName": "Google",
"url": "https://www.glassdoor.com/Salary/Employer-Salaries-E9079.htm",
"jobTitle": "Software Engineer",
"jobTitleId": 4279,
"location": "United States",
"payPeriod": "annual",
"currency": "USD",
"salaryCount": 111,
"basePayMin": 50000,
"basePayMedian": 70000,
"basePayMax": 110000,
"totalPayMedian": 80000,
"additionalPayMedian": 39000,
"additionalPay": { "cashBonus": 10000, "stockBonus": 22000, "profitSharing": 15000 }
}

The run's OUTPUT record also holds the run statistics (companies, unique rows, duplicates, requests, errors) and, per input, an input_status entry (ok, empty, not_found or no_employer_id) so you can see at a glance which company produced nothing.

πŸ’‘ Ready-to-run examples

Annual salaries of one company, full detail

{ "companyNames": ["Google"], "payPeriod": "annual", "country": "www", "maxSalariesPerCompany": 100, "includePercentiles": true, "includeAdditionalPay": true }

Monthly figures for several companies side by side

{ "companyNames": ["Google", "Microsoft", "Airbnb"], "payPeriod": "monthly", "maxSalariesPerCompany": 100 }

Hourly pay on the UK domain

{ "companyNames": ["Google"], "country": "co.uk", "payPeriod": "hourly", "maxSalariesPerCompany": 100 }

Every job title from a Glassdoor URL, flat rows for Excel

{ "startUrls": [{ "url": "https://www.glassdoor.com/Salary/Google-Salaries-E9079.htm" }], "maxSalariesPerCompany": 0, "flatten": true }

πŸ’° Pricing: how much does it cost to scrape Glassdoor salaries?

From $3.00 per 1,000 job-title rows on the free plan, with automatic volume discounts down to $2.04 per 1,000 on higher Apify plans. You pay only for the results you receive, there is no subscription and no start fee. New Apify accounts get free monthly platform credits to try it.

Cost is driven purely by the number of job-title rows returned: use maxSalariesPerCompany to cap each company. Rows arrive sorted by number of reported salaries, so a cap of 100 keeps the 100 most-reported job titles. The optional percentile and additional-pay blocks do not change the price, they are part of the same row.

βš™οΈ Performance, proxies and limits

  • No proxy needed, and not recommended. The Actor runs best without a proxy, and adding one usually makes runs fail. If you do add one, keep it to clean, ISP-grade IPs.
  • Speed: rows are fetched 20 job titles per request and pushed to the dataset in batches of 200. The first request per run warms up the session; the rest are fast.
  • Order and cap: Glassdoor returns job titles sorted by number of reported salaries, descending. 0 in maxSalariesPerCompany collects every job title; any other value stops at that count.
  • Region and currency: the salary API runs on the domain chosen in country (glassdoor.com by default), which decides the location and currency of every row. Six domains are available: www, co.uk, ca, com.au, co.in, ie.
  • Deduplication: rows are deduplicated by jobTitleId within a company; the duplicate count is reported in the OUTPUT statistics.
  • Session expiry: if the session expires mid-run, the Actor renews it once and resumes.
  • Empty inputs: a company name that Glassdoor does not know gets not_found, a URL without an employer id gets no_employer_id, and a company with no salary data gets empty in input_status. If the site cannot be reached at all, the OUTPUT record carries an error; retry later or raise maxChallengeRetries.
  • Run options: the default run configuration is 4 GB of memory and a 60-minute timeout.

πŸ”Œ Integrations and API

Run Glassdoor Salaries Scraper from the Apify API, the Python or JavaScript client, or on a schedule. Connect it to Make, Zapier, n8n, Google Sheets, Slack or any webhook through Apify integrations. Every run's dataset is available as JSON, CSV, Excel or XML from the dataset API.

curl -X POST "https://api.apify.com/v2/acts/scrapifier~glassdoor-salaries-universal-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "companyNames": ["Google"], "payPeriod": "annual", "country": "www", "maxSalariesPerCompany": 100 }'

❓ FAQ

Is it legal to scrape Glassdoor salaries?

The Actor only reads salary estimates that Glassdoor publishes to anyone without logging in. The figures are aggregated per job title, not tied to a person, but the dataset may still fall under GDPR and other privacy laws depending on how you combine it, so respect Glassdoor's terms of use and stay responsible for how you use the data. This is not legal advice.

Do I need a Glassdoor account, login or cookies?

No. Nothing to log in to, no cookies to paste, no proxy to configure.

Where do the salary figures come from?

They are Glassdoor's own aggregated estimates, computed from the salaries employees report for each job title. salaryCount tells you how many reports stand behind each row and mostRecent when the last one came in.

Can I export Glassdoor salaries to Excel or Google Sheets?

Yes. Every run's dataset downloads as CSV, XLSX, JSON or XML from the Storage tab, and the Google Sheets integration can push new rows to a sheet automatically. Turn on flatten for a clean one-line-per-job-title export.

How many job titles can I scrape per company?

As many as Glassdoor reports (set maxSalariesPerCompany to 0). Since rows come sorted by number of reported salaries, a cap keeps the best-documented job titles and controls the cost of the run.

How do I get salaries for a specific country?

Pick the matching domain in country: www for the United States, co.uk, ca, com.au, co.in or ie. The region and currency of every row follow that domain, whether the company came from a name or a pasted URL.

Which Glassdoor URLs are supported?

Any Glassdoor company URL that carries the employer id: the Salaries page (.../Salary/Company-Salaries-E12345.htm) or the company Overview or Reviews page, pasted from any Glassdoor domain. The Actor reads the id and queries salaries on the domain set in country.

How fresh is the data?

Every run scrapes Glassdoor live. Schedule the Actor monthly or quarterly to keep a history of pay per job title.

πŸ’¬ Support

Questions, bugs or a feature request? Open an issue in the Issues tab of this Actor, I answer quickly. If Glassdoor Salaries Scraper saves you time, a rating on the Store helps others find it.