Glassdoor Salaries Universal Scraper
Pricing
from $2.04 / 1,000 results
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
Maintained by CommunityActor 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.
π― 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?
| Field | Description |
|---|---|
employerId, employerName | Glassdoor employer id and company name |
url | Link to the company's salaries page on Glassdoor |
jobTitle, jobTitleId | Job title and its Glassdoor id |
location | Region the figures cover (for example United States) |
payPeriod | annual, monthly or hourly |
currency | Currency code (for example USD) |
salaryCount | Number of salaries reported for this job title |
mostRecent | Date of the most recent salary report (ISO 8601) |
basePayMin, basePayMedian, basePayMax | Base pay at the 10th percentile (low), median and 90th percentile (high) |
totalPayMin, totalPayMedian, totalPayMax | Total pay (base plus additional) at the 10th percentile, median and 90th percentile |
additionalPayMedian | Median 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, totalPayPercentiles | Full 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
- Open the Actor and type one or more company names in
companyNames(for exampleGoogle,Microsoft,Airbnb), or paste Glassdoor company URLs (the Salaries page or any company page) instartUrls. - Pick the pay period:
annual,monthlyorhourly. Every figure in the run is reported in that period. - Choose the Glassdoor domain in
countryif 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. - Set Max job titles per company.
100is the default;0collects every job title Glassdoor reports for the company. - Click Start. The Actor collects salary rows 20 job titles per request.
- 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
| Field | Key | Type | Default | Description |
|---|---|---|---|---|
| Glassdoor company URLs | startUrls | array of URLs | none | Glassdoor 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 names | companyNames | array of strings | ["Google"] | Company names resolved automatically on the chosen Glassdoor domain (for example Google, Microsoft, Airbnb). |
| Max job titles per company | maxSalariesPerCompany | integer | 100 | Job-title salary rows to collect per company. 0 = every job title Glassdoor reports. |
| Pay period | payPeriod | select | annual | annual (per year), monthly or hourly. |
| Glassdoor domain (for company names) | country | select | www | www (glassdoor.com), co.uk, ca, com.au, co.in or ie. Sets the region and currency of the figures. |
| Include full percentile breakdown | includePercentiles | boolean | true | Add the full percentile range (10th, 25th, 50th, 75th, 90th) for base and total pay next to the low/median/high summary. |
| Include additional pay breakdown | includeAdditionalPay | boolean | true | Add the median cash bonus, stock, profit sharing, sales commission and tips. |
| Flat columns (CSV-friendly) | flatten | boolean | false | Drop the nested percentile and additional-pay objects for clean CSV and Excel exports. |
| Report empty inputs | emitInputStatus | boolean | true | Write an input_status report (which input returned nothing and why) to the run's OUTPUT record. |
| Page load retries | maxChallengeRetries | integer | 6 | Retries when a page fails to load. Increase only if runs report being blocked. |
| Proxy | proxyConfiguration | object | off | Leave 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.
0inmaxSalariesPerCompanycollects 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 thelocationandcurrencyof every row. Six domains are available:www,co.uk,ca,com.au,co.in,ie. - Deduplication: rows are deduplicated by
jobTitleIdwithin 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 getsno_employer_id, and a company with no salary data getsemptyininput_status. If the site cannot be reached at all, the OUTPUT record carries anerror; retry later or raisemaxChallengeRetries. - 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.
π Related scrapers
- Glassdoor Jobs Scraper: job listings by keyword and location, with salary estimates.
- Glassdoor Reviews Scraper: employee reviews with ratings, pros, cons, advice and company responses.
- Glassdoor Interviews Scraper: interview experiences and the questions asked, by company.
- Glassdoor Company Overview Scraper: the full company profile (ratings, CEO approval, size, HQ, revenue) by name or URL.
- Glassdoor Company Search Scraper: find companies by location, industry, minimum rating and size.
- Welcome to the Jungle Jobs Scraper: jobs and company profiles in France and Europe.
π¬ 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.