Glassdoor Scraper: Reviews, Salaries & Company Ratings
Pricing
from $3.20 / 1,000 reviews
Glassdoor Scraper: Reviews, Salaries & Company Ratings
Get Glassdoor company ratings, CEO approval, employee reviews with pros and cons, and salaries by job title for lists such as Microsoft and Google. $0.005 per company plus $0.004 per review or salary: 100 reviews cost $0.40. Anonymous interviews too. No login.
For HR analysts, recruiting teams, compensation researchers and investors who need structured employer data for a known list of companies. Enter company names or Glassdoor company links and export company profiles, anonymous employee reviews, annual US salary benchmarks and interview experiences.
A company profile costs $0.005. Each review, salary benchmark or interview costs $0.004 before plan discounts. For example, one company profile and 100 employee reviews cost $0.405, plus the small platform start charge. No Glassdoor login, account cookies or API key are required.
What you get
| Record | Data supplied |
|---|---|
| Company | Employer ID, name, website, industry, size, headquarters, founding year, overall rating, six workplace ratings, CEO approval, recommendation percentage and review/salary counts |
| Review | Stable review ID, overall score, headline, full pros and cons, six category ratings, job title, employment status, current/former status, location, source date and helpful votes |
| Salary | Job title, annual US total-pay range, median, currency, sample size, base-pay range, base-pay median and outer pay percentiles |
| Interview | Stable interview ID, role, location, experience, outcome, difficulty, process text, supplied questions and source dates |
| Summary | Free coverage record with counts, each company's outcome, source-access notes and whether the spending limit stopped collection |
Choose the data you need with include. A profile is a separate company row. Selecting only reviews does not add a company charge. Selecting only salaries does not add a review charge. Failed requests, duplicate records within a run and summary records have no useful-record charge.
Start in three steps
- Enter exact employer names in Companies, such as
Microsoft,GoogleorAdobe. Alternatively, paste Glassdoor company URLs in Company URLs. - Choose overview, reviews, salaries and/or interviews. Set the maximum records per company and choose newest-first or highest-rating-first reviews.
- Click Start. Open the dataset, select the relevant view, and export JSON, CSV, Excel or XML. Read the summary for any unavailable sections or unmatched names.
The prefilled input requests one Microsoft company profile and ten recent reviews. Residential US proxy settings are supplied because direct and datacenter requests were challenged in the source-access tests. The Actor keeps only its own anonymous visitor session. It does not accept Glassdoor account cookies.
Use with AI agents (MCP)
Connect an AI client to Apify MCP and select moggedhq/glassdoor-reviews-scraper. Give the agent a company list, the required data types and a record limit. For example:
Get the newest ten employee reviews and company ratings for Microsoft and Google. Include the headline, pros, cons, role, location and review date. Use a maximum of ten reviews per company.
For compensation work, ask for annual US salary benchmarks and specify how many job titles to return. payMin and payMax are the 25th and 75th percentiles of total pay. They are not the lowest and highest individual salaries. Have the agent retain the currency, pay period, location and sample size alongside the numbers.
Example inputs
Company ratings and newest reviews:
{"companies": ["Microsoft", "Google"],"include": ["overview", "reviews"],"maxReviewsPerCompany": 10,"reviewSort": "newest"}
Salary benchmarking from a known company link:
{"startUrls": [{"url": "https://www.glassdoor.com/Salary/Microsoft-Salaries-E1651.htm"}],"include": ["salaries"],"maxSalariesPerCompany": 20}
Reviews, salaries and interview experiences in one run:
{"companies": ["Adobe", "Salesforce"],"include": ["overview", "reviews", "salaries", "interviews"],"maxReviewsPerCompany": 20,"maxSalariesPerCompany": 10,"maxInterviewsPerCompany": 5,"reviewSort": "newest"}
Company entries can also contain complete Glassdoor URLs. startUrls accepts both plain URL strings and objects containing a url property. The employer ID in a URL determines the company. Overview, review, salary and interview URLs are accepted. Regional company URLs resolve to the same global employer ID; collection uses the US public data surface, English reviews and annual US salary benchmarks.
Input reference
| Input | Default | Meaning |
|---|---|---|
companies | Prefill: Microsoft | Exact employer names or Glassdoor company URLs. At most 200 entries across companies and URLs |
startUrls | Empty | Optional public Glassdoor company URLs |
include | overview, reviews | Any combination of overview, reviews, salaries and interviews |
maxReviewsPerCompany | 10 | Maximum unique English-language reviews per employer, from 0 to 5,000 |
reviewSort | newest | newest uses source date descending; rating uses highest overall rating first |
maxSalariesPerCompany | 10 | Maximum annual US job-title salary benchmarks per employer, from 0 to 2,000 |
maxInterviewsPerCompany | 10 | Maximum interview experiences per employer, from 0 to 1,000 |
proxyConfiguration | US residential | Apify proxy configuration. Keep the default unless you have a tested alternative |
An ambiguous company name is not silently mapped to the first suggestion. The Actor looks for an exact normalized company-name match. If it cannot choose precisely, the free summary asks for a company URL. This is useful for subsidiaries, businesses with similar names and employers that have several country-specific profiles.
A zero record limit disables that content type. Invalid names, unsupported URLs or invalid settings produce free notes rather than fabricated records. Do not send personal reviewer information, login details or account cookies in input.
Company output fields
| Field | Meaning |
|---|---|
type | company |
key | Stable record key used to prevent duplicate delivery in the run |
verdict | Short readable company-rating statement |
companyId, name, companyName | Glassdoor employer identity |
website, industry, size, headquarters, founded | Source company context; missing values are null |
overallRating | Source overall star rating |
ratings | Culture, work-life balance, management, pay and benefits, career growth, diversity |
ceoName, ceoApproval | Public company leader and approval percentage when supplied |
recommendToFriend | Whole-number recommendation percentage |
reviewCount | Total reviews from the company profile, across its source count scope |
filteredReviewCount | Reviews in the requested English-language review slice |
ratingReviewCount | Count attached to the source rating aggregate |
salaryCount | Salary-report count shown in the company profile |
reviewLanguage | eng |
url, scrapedAt | Public source link and observation time |
The review-count fields can differ. Glassdoor maintains separate counts for all reviews, the filtered language slice and the population used for an aggregate rating. They are preserved separately rather than forced to agree. The interface may display one of these filtered counts while a company profile exposes another total.
Review output fields
Each review row includes companyId, companyName, reviewId, rating, title, pros, cons, jobTitle, employmentStatus, isCurrentJob, location, date, helpful, ratings, reviewSort, url and scrapedAt.
The six category scores use the same names as company ratings, but they describe that review. They are separate from the employer's aggregate scores. employmentStatus is the source classification; isCurrentJob tells you whether the reviewer marked the role as current. Dates are preserved as supplied by Glassdoor. A source date without a timezone is not silently assigned one.
Reviews remain anonymous. The Actor does not retrieve reviewer names, profile URLs, contact information or identities. It returns only the employment context that accompanies the public review. A missing location or category rating remains null.
Salary output fields and interpretation
Each salary row represents one job-title benchmark for annual United States pay. Roles are ordered using the source's salary-report-count order.
| Field | Meaning |
|---|---|
jobTitle, jobTitleId | Source role text and identifier |
payMin, payMax | 25th and 75th percentiles of annual total pay |
payMedian | 50th percentile of annual total pay |
payRangePercentiles | [25, 75], making the range definition explicit |
payP10, payP90 | Outer total-pay percentiles, when supplied |
basePayMin, basePayMax, basePayMedian | Matching base-pay statistics |
payType, payPeriod | total and ANNUAL |
currency | Source currency code |
sampleSize | Source salary-report count for that role |
location | Source benchmark location, normally United States |
mostRecent | Most recent source salary-report timestamp, when supplied |
A real source check on 29 October 2026 returned a Microsoft Software Engineer annual total-pay range of $198,004.68 to $279,286.82, a median of $232,934.71 and 44,806 salary reports. The base-pay median was $174,722.12. These are observed source statistics, not an estimate calculated by this Actor. Values change as the source updates.
These benchmarks are not a promise of an offer, a specific employee's salary or a complete compensation survey. Total pay and base pay are kept separate. No currency conversion, annualization of hourly records or replacement of missing salary values is performed. The US scope is deliberate; a UK or Canadian company URL does not change the salary dataset into local-country pay.
Interview output
An interview row includes the anonymous source ID, role, location, review and interview dates, process description, difficulty, experience, outcome, helpful votes and any supplied questions. Glassdoor may return no questions even when the experience itself is available. Empty question lists remain empty. The Actor does not generate interview questions or infer an outcome from the text.
Pricing examples
| Requested and delivered records | Price before plan discounts and start charge |
|---|---|
| 1 company profile | $0.005 |
| 1 company and 10 reviews | $0.045 |
| 1 company and 100 reviews | $0.405 |
| 10 company profiles and 100 reviews | $0.45 |
| 100 salary benchmarks | $0.40 |
| 100 interview experiences | $0.40 |
Bronze receives 5% off useful-record prices, Silver 10% and Gold 20%. The platform start charge is $0.00005 per GB, with a minimum of one start event. The default dataset-item charge is not used. Only the company, review, salary and interview events represent useful records.
The Actor checks the run's maximum charge, reduces the work to what fits and stops cleanly when no further requested records fit. A successful final charge still keeps its saved row. The dataset is the durable delivery ledger, so a migrated or rebooted run resumes saved results without deliberately delivering or charging the same record twice.
A first private priced cloud run returned one company, ten reviews, three salaries and two interviews from six source requests in one anonymous session. It delivered 16 useful records with complete source coverage. It finished in 17.8 seconds; settled platform usage was about $0.0018, or about $0.00011 per useful record. These platform costs are included in the useful-record prices, not an extra platform-usage bill for buyers.
Observed cloud validation
On 29 October 2026, 32 varied private cloud inputs completed with useful data and complete requested source coverage: 23 company profiles, 153 reviews, 98 salary benchmarks and 41 interviews. Each useful row had exactly one settled record charge. The matrix included company names, URL strings, URL objects, repeated inputs, five regional URL domains, both review orders and multiple review, salary and interview pages. Regional URLs still use the documented English-review and US-salary scope.
The prefilled company-plus-ten-reviews case finished in 14.7 seconds. Median run time across the matrix was 12.4 seconds, with the longest at 24.9 seconds. Eight source attempts needed fresh visitor sessions; all 32 inputs recovered. Ten salary rows were manually checked against the signed-out live salary page, including displayed ranges, exact embedded medians and sample counts. All ten matched. These are measured results from that test date, not a guarantee of future availability.
Monitor employer reputation every day
Create an Apify task with a stable company list and reviewSort set to newest. Keep a small review limit initially, then use the task's schedule settings to run daily or weekly. Export the results to your database or spreadsheet and compare observations over time.
Use companyId plus reviewId as the review identity. Company ratings can change between observations even when no review in your chosen page is new. Store scrapedAt alongside the source review date so your analysis can distinguish collection time from publication time.
Deduplication is within a run, including repeated company names and links. Scheduled runs are independent snapshots: a review returned again in a later run is a delivered record again. This Actor does not maintain an account-wide "only new since yesterday" watch list. Keep that history in your destination and choose a review limit appropriate to your schedule.
Connect completed runs to Make, Zapier, n8n, Google Sheets or a webhook. Keep the free summary with each export. It distinguishes an empty source result, an unmatched name, a refused section and a run stopped by your spending limit.
API use
Set an Apify API token in your own environment. It is used only for Apify access, not for Glassdoor login.
curl -X POST \'https://api.apify.com/v2/acts/moggedhq~glassdoor-reviews-scraper/run-sync-get-dataset-items' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"companies":["Microsoft"],"include":["overview","reviews"],"maxReviewsPerCompany":10}'
Python:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('moggedhq/glassdoor-reviews-scraper').call(run_input={'companies': ['Microsoft'],'include': ['overview', 'reviews'],'maxReviewsPerCompany': 10,})for row in client.dataset(run['defaultDatasetId']).iterate_items():print(row)
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('moggedhq/glassdoor-reviews-scraper').call({companies: ['Microsoft'],include: ['salaries'],maxSalariesPerCompany: 10});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
For larger jobs, start an asynchronous run and retrieve its dataset when it finishes. A synchronous HTTP client can time out while a long Actor run continues successfully. Filter type in your destination if you need only one record type; the free SUMMARY remains in the dataset and key-value store.
What Glassdoor hides from signed-out visitors
The signed-out website is restricted. In the live access checks, a reviews page embedded only three review cards and declared one free page view before its login gate. Salary and interview pages can show a sign-in overlay or a security challenge. Full browsing history, unlimited page views, account features, user identities and content that requires an authenticated session are not supplied by this Actor.
Glassdoor's own anonymous JSON calls can return a larger review page, company aggregates, role-level salary bands and interview experiences than the initially rendered signed-out page. The Actor reads that public anonymous surface. It does not log in, reuse account cookies, solve CAPTCHAs or call a paid unblocking service. It does not promise that every record, every field or a company's complete lifetime history is available without authentication.
If the source refuses a session, the Actor retries with a fresh anonymous session and ordinary pacing. Persistent refusals become free coverage notes. A technically successful run can therefore contain a partial result; always inspect SUMMARY.status and the per-company section outcomes before treating a run as a complete export.
Limits
- English-language employee reviews only. There is no review date cutoff, keyword filter or all-language mode.
- Annual United States salary aggregates only. The returned location, currency and range definition must travel with exported amounts.
- Exact employer-name resolution. Use a company URL when names are ambiguous or the employer's public name differs from your spelling.
- No jobs feed, benefits dataset, individual salary reports, reviewer identities, private account features or company contact enrichment.
- No guarantee of every historical review. Source pagination, deletions, filters, restrictions and changing access rules affect coverage.
- Ratings and counts are source observations. Different source populations and display rounding can produce different-looking totals.
- Empty or unavailable data is reported without inventing values. Null is meaningful and should be retained in analysis.
FAQ
Do I need a Glassdoor account?
No. This Actor uses a fresh anonymous visitor session and does not accept login cookies or credentials. If the source requires authentication for a particular item, that item remains unavailable.
Can I paste a salary or interview page instead of a review page?
Yes. A supported company URL supplies the employer ID. include controls which data is collected; the tab in the pasted URL does not override your selection.
Why did a company name return a note?
The Actor could not identify an exact normalized employer match. Paste the company's Glassdoor page to select the intended employer. This avoids silently returning a subsidiary or unrelated business.
Why are there fewer reviews than my maximum?
A maximum is a ceiling. The selected language, source availability, pagination and access restrictions can return fewer records. The summary reports unavailable sections and empty results without charging for missing rows.
Are salary ranges minimum and maximum individual pay?
No. They are the source's 25th-to-75th-percentile annual total-pay band. The median, base-pay statistics and 10th/90th percentiles are separate fields. Keep those definitions in downstream dashboards.
Does a regional URL switch salary country?
No. Regional links resolve employer identity; this version deliberately returns annual US salary benchmarks. Company reviews can describe employment locations around the world.
Does the Actor charge duplicates?
A company, review, salary role or interview is delivered and charged once per run. Repeated company inputs and links are deduplicated. A later scheduled run is a new snapshot and may return the same source record again.
What happens at the spending limit or after a reboot?
The Actor saves results before their useful-record charge, uses stable charge keys and recovers its durable ledger. It stops when further requested records do not fit the maximum charge. The free summary explains the stop.
Which exports work best for mixed record types?
JSON preserves nested ratings and interview questions. CSV and Excel are useful for flatter company, review and salary views. Keep type, companyId and source record IDs when joining exports.
Glassdoor company reviews scraper, Glassdoor ratings, Glassdoor salary benchmarks and anonymous interview experiences in one structured export.