Glassdoor Reviews Scraper - Most Comprehensive avatar

Glassdoor Reviews Scraper - Most Comprehensive

Pricing

from $0.05 / 1,000 reviews

Go to Apify Store
Glassdoor Reviews Scraper - Most Comprehensive

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

Kai

Maintained by Community

Actor stats

3

Bookmarked

284

Total users

80

Monthly active users

2.7 hours

Issues response

10 days ago

Last modified

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

NeedSetDataset
Employee reviewsAlways returned for each valid employerdefault
Company ratings and profile sectionsincludeCompanyData: trueCOMPANY
Reviews without company summariesincludeCompanyData: falsedefault 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

FieldTypeDefaultBehavior
urlsstring[]requiredGlassdoor 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.
maxReviewsinteger, 0 or greater20Maximum reviews per employer. Use 0 for no limit within Glassdoor's default review criteria.
sortDATE or RATINGDATESort by newest review or highest overall rating.
includeCompanyDatabooleantrueWrite one company summary when Glassdoor returns aggregate review statistics.
proxyConfigurationobject{"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

PathType and nullability
reviewIdnumber
url, postedAtstring
content.summary, pros, cons, advicestring or null
content.languageIdstring
content.originalLanguageId, summaryOriginal, prosOriginal, consOriginal, adviceOriginalstring or null
ratings.overallnumber
ratings.workLifeBalance, cultureAndValues, seniorLeadership, compensationAndBenefits, careerOpportunities, diversityAndInclusionnumber or null
ratings.ceo, outlook, recommendationstring or null
employment.isCurrentJobboolean
employment.status, divisionName, divisionLinkstring or null
employment.employmentLength, jobEndingYearnumber or null
employment.jobTitle{ id: number, text: string } or null
employment.location{ id: number, name: string, type: string } or null
engagement.helpful, unhelpfulnumber
engagement.featuredboolean
employer.idnumber
employer.shortNamestring
employer.name, logoUrlstring or null
employer.hasResponseboolean
employer.responsesresponse object array; can be empty
employer.responses[].id, helpful, unhelpfulnumber
employer.responses[].response, responseDateTimestring
employer.responses[].userJobTitle, responseOriginal, languageId, originalLanguageId, translationMethodstring or null
meta.isLegal, isCovid19boolean
meta.translationMethod, reviewDetailUrlstring or null
meta.flaggingDisabled, isLanguageMismatchboolean or null
meta.relatedStructuressource-defined object array; can be empty
meta.topLevelDomainIdnumber or null
meta.scrapedAtstring

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 SUCCEEDED status only when every employer reached Glassdoor's stated review count for the request. If any employer stops early, the run finishes with a FAILED status 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 filteredReviewsCount and 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. complete means the Actor fetched every page up to the stated count. uniqueReviewCount can sit a few units under statedReviewCount because 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 COMPANY record, 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 *Original fields to distinguish them. A field can be null when the reviewer did not provide a value.
  • maxReviews: 0 has 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.