Glassdoor Reviews Scraper - Most Comprehensive
Pricing
from $0.05 / 1,000 reviews
Glassdoor Reviews Scraper - Most Comprehensive
🔥 ~$0.05/1K reviews 🔥 Extract structured company review data from Glassdoor. Get ratings, pros/cons, employment details, translation data, and employer responses, all in one scrape.
Pricing
from $0.05 / 1,000 reviews
Rating
0.0
(0)
Developer
Kai
Maintained by CommunityActor stats
3
Bookmarked
284
Total users
80
Monthly active users
2.7 hours
Issues response
10 days ago
Last modified
Categories
Share
Glassdoor Reviews Scraper
Collect reviews from Glassdoor employer review pages. The default Dataset holds
one item per review, and the optional COMPANY Dataset holds one company
summary per employer.
Review rows include the written review, category ratings, recommendation, outlook, job and location context, tenure, votes, and employer responses. A company row can add aggregate ratings, profile data, offices, demographics, benefits, and photos.
Choose review and company output
| Need | Set | Dataset |
|---|---|---|
| Employee reviews | Always returned for each valid employer | default |
| Company ratings and profile sections | includeCompanyData: true | COMPANY |
| Reviews without company summaries | includeCompanyData: false | default only |
Review and company records have different shapes. Use the Dataset that matches your task.
Collect the newest reviews
{"urls": ["https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm"]}
This uses the defaults: 20 newest reviews per employer and company data enabled.
Collect reviews without company summaries
This example orders reviews by rating and keeps five reviews:
{"urls": ["https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm"],"maxReviews": 5,"sort": "RATING","includeCompanyData": false}
Collect reviews from several employers
maxReviews applies to each employer separately.
{"urls": ["https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm","https://www.glassdoor.com/Reviews/Meta-Reviews-E40772.htm"],"maxReviews": 100}
Each employer is processed once, in the order of its first occurrence.
Collect all available reviews
Use maxReviews: 0 to remove the result limit for each employer:
{"urls": ["https://www.glassdoor.com/Reviews/Nucor-Reviews-E489.htm"],"maxReviews": 0,"includeCompanyData": false}
Input reference
| Field | Type | Default | Behavior |
|---|---|---|---|
urls | string[] | required | Glassdoor employer review or overview URLs that contain an -E489/_E489 (Reviews, Salaries, ...) or EI_IE489 (Overview) employer marker. Invalid entries are skipped; each employer is processed once in first-occurrence order. |
maxReviews | integer, 0 or greater | 20 | Maximum reviews per employer. Use 0 for no limit within Glassdoor's default review criteria. |
sort | DATE or RATING | DATE | Sort by newest review or highest overall rating. |
includeCompanyData | boolean | true | Write one company summary when Glassdoor returns aggregate review statistics. |
proxyConfiguration | object | {"useApifyProxy":true} | Optional connection settings for the run. |
A malformed URL does not invalidate other URLs. The run fails only when none of the entries contains a usable employer marker.
Complete input example
This reference example covers every input field. It limits the result to 10 reviews and includes a company summary.
Review Dataset reference
Each review object contains reviewId, url, postedAt, content, ratings,
employment, engagement, employer, and meta. Optional values remain
present as null or as an empty array.
Retained review projection
This selected-field projection matches the retained output fixture captured on 11 April 2026. The shown values are unchanged. The projection omits fields that were not retained in the public fixture; the reference below gives their types and nullability.
Review field reference
| Path | Type and nullability |
|---|---|
reviewId | number |
url, postedAt | string |
content.summary, pros, cons, advice | string or null |
content.languageId | string |
content.originalLanguageId, summaryOriginal, prosOriginal, consOriginal, adviceOriginal | string or null |
ratings.overall | number |
ratings.workLifeBalance, cultureAndValues, seniorLeadership, compensationAndBenefits, careerOpportunities, diversityAndInclusion | number or null |
ratings.ceo, outlook, recommendation | string or null |
employment.isCurrentJob | boolean |
employment.status, divisionName, divisionLink | string or null |
employment.employmentLength, jobEndingYear | number or null |
employment.jobTitle | { id: number, text: string } or null |
employment.location | { id: number, name: string, type: string } or null |
engagement.helpful, unhelpful | number |
engagement.featured | boolean |
employer.id | number |
employer.shortName | string |
employer.name, logoUrl | string or null |
employer.hasResponse | boolean |
employer.responses | response object array; can be empty |
employer.responses[].id, helpful, unhelpful | number |
employer.responses[].response, responseDateTime | string |
employer.responses[].userJobTitle, responseOriginal, languageId, originalLanguageId, translationMethod | string or null |
meta.isLegal, isCovid19 | boolean |
meta.translationMethod, reviewDetailUrl | string or null |
meta.flaggingDisabled, isLanguageMismatch | boolean or null |
meta.relatedStructures | source-defined object array; can be empty |
meta.topLevelDomainId | number or null |
meta.scrapedAt | string |
The Actor keeps the review order returned by Glassdoor. A finite maxReviews
value limits the rows for each employer. If no more pages are available, the
Actor returns the reviews collected so far. The Actor does not deduplicate
review rows. If source pages overlap or repeat a review ID, the Dataset keeps
the repeated rows in source order.
Company Dataset reference
When includeCompanyData is true, the named COMPANY dataset receives one
row for each employer that has aggregate review statistics. The Actor can add
profile, office, demographic, review-location, benefit, and photo data.
Optional company sections keep the shape returned by Glassdoor. The Actor does
not deduplicate their arrays or calculate new rating values.
Company record
This field-shape projection contains point-in-time values dated 16 August 2026.
It includes profile, rating, office, demographic, benefit, and photo data. Long
arrays keep a small number of items, so this is not a complete COMPANY
record.
dataStatus is complete when all optional company sections are available. It
is partial when one or more sections were unavailable. failedSections lists
those sections. Company objects can gain new fields, so new keys can appear in
later runs.
Each COMPANY row also carries a reviewCompletion object. It reports whether
the review pull for that employer was complete, the stopReason, the stated
review and page counts, the saved and unique review counts, the last accepted
page, and the failed page when there was one. Read reviewCompletion.complete
to verify a pull in code without comparing counts by hand.
Employer and result behaviour
- A valid employer with no reviews succeeds and writes no review records.
- The run reports review completeness. It finishes with a
SUCCEEDEDstatus only when every employer reached Glassdoor's stated review count for the request. If any employer stops early, the run finishes with aFAILEDstatus and a non-zero exit code. Review records saved before the stop remain available, so a failed run can still hold partial data. - Completeness uses the same query's own
filteredReviewsCountand page count, not the public website total. Glassdoor's backends can disagree on that count by a few units, which repeats or skips rows at page edges. The Actor drops repeated rows before it saves them, so no row is billed twice.completemeans the Actor fetched every page up to the stated count.uniqueReviewCountcan sit a few units understatedReviewCountbecause of that drift. - URL entries without an employer marker are skipped. A mixed batch continues with its valid entries, and each employer is processed once in first-occurrence order. The Actor attempts every employer before it reports a failure.
- When every employer acquisition fails, the run saves no review records and reports a failure. When none of the entries contains a usable employer marker, the run fails before acquisition.
- With Apify Proxy, the Actor uses one proxy session per connection and names each session with the run id. Apify keeps a datacenter session on the same IP address for 26 hours, so this keeps a new run off the IP addresses that an earlier run left blocked.
- When Glassdoor blocks a session, the Actor reconnects through a fresh session. A reconnect that fails moves on to another session. The Actor stops only when the reconnect budget for the employer is spent (10 reconnects in 5 minutes, or 30 in total). That employer is then reported as incomplete.
- If the Actor cannot save a review or a
COMPANYrecord, the run stops. Records saved before the failure remain available. - A company row is absent when Glassdoor does not return aggregate statistics.
- Glassdoor can return translated text with original-language fields. Use
content.languageId,content.originalLanguageId, and the*Originalfields to distinguish them. A field can benullwhen the reviewer did not provide a value. maxReviews: 0has no set result limit. Large runs take longer and produce more Dataset items. Company photos are limited to the first 100 values that Glassdoor returns.