Glassdoor Reviews Scraper avatar

Glassdoor Reviews Scraper

Pricing

from $10.00 / 1,000 glassdoor review scrapeds

Go to Apify Store
Glassdoor Reviews Scraper

Glassdoor Reviews Scraper

Scrape public Glassdoor employee reviews for company reputation research. Extract ratings, pros, cons, job title, employment status, dates, employer replies, and company context in structured JSON for HR analytics, competitive intelligence, SEO, and AI agents. MCP/API-ready.

Pricing

from $10.00 / 1,000 glassdoor review scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

10 days ago

Last modified

Share

What is Glassdoor Reviews Scraper?

Glassdoor Reviews Scraper extracts public employee reviews from Glassdoor company review pages into one dataset row per review. Each row returns the company name, overall company rating and review total, the review title, pros and cons text, review date, the reviewer's role line, a link to the review, and any sub-ratings, recommendation signals and employer replies that Glassdoor shows on the page. HR analysts, employer-brand teams, recruiters, investors researching culture and AI agents use it to turn what employees write about a company into structured employee-sentiment data.

Why employer-brand and HR teams use it

  • Pros and cons as text. pros and cons hold the review body, ready for theme tagging or sentiment scoring.
  • Company context on every row. companyName, companyRating and companyReviewCount let you compare employers side by side.
  • Two ways in. Paste Glassdoor review page URLs, or list company names and let the Actor find each review page.
  • Recent or popular first. sortBy pulls the newest feedback for monitoring, or the most helpful reviews for a culture read.
  • Concise or detailed rows. responseFormat: "concise" keeps the core fields for AI agents; detailed adds every available field.
  • Honest run outcomes. Every run writes OUTPUT and RUN_SUMMARY with an outcome and a plain message. If Glassdoor shows a security check on every page and no review is saved, the run ends as failed with UPSTREAM_FAILED, no dataset rows and no review charges.

Best fit for this Actor

  • Best fit for reputation research on specific employers, starting from their Glassdoor /Reviews/...-Reviews-E....htm page.
  • Use direct review URLs for the most predictable runs, and companyNames when you only know the company.
  • Designed for public review content; each row is one review.
  • When you also want the open roles at the same companies, continue with Glassdoor Jobs Scraper and join on companyName.

Example workflow: a quarterly employer-brand check

An employer-brand lead at a software company starts with the Glassdoor review pages of her company and three competitors. She pastes them into startUrls with sortBy: "recent", maxReviewsPerCompany: 25 and responseFormat: "detailed". The dataset returns rows with companyName, reviewTitle, pros, cons and reviewDate. She exports them, tags recurring themes such as growth, workload and management, then compares how often each theme appears per company. She schedules the same input each quarter so new feedback lands in the next report.

Input

{
"startUrls": [
{ "url": "https://www.glassdoor.com/Reviews/Apify-Reviews-E3100324.htm" }
],
"maxReviewsPerCompany": 25,
"maxResults": 50,
"sortBy": "recent",
"includeSubRatings": true,
"includeEmployerResponses": true,
"responseFormat": "detailed"
}

Find review pages by company name:

{
"companyNames": ["Apify", "OpenAI"],
"maxReviewsPerCompany": 10,
"maxResults": 20,
"responseFormat": "concise"
}
FieldTypeWhat it controls
startUrlsarrayGlassdoor company review URLs such as https://www.glassdoor.com/Reviews/Apify-Reviews-E3100324.htm.
companyNamesarray of stringsCompany names to look up on Glassdoor first.
maxReviewsPerCompanyintegerReview rows per company, 1 to 1,000. Default 25.
maxResultsintegerReview rows across the whole run, 1 to 5,000. Default 50.
sortBystringrecent, popular or default. Default recent.
includeSubRatingsbooleanAdd culture, compensation, career, work-life and management ratings when shown. Default true.
includeEmployerResponsesbooleanAdd the employer's public reply when shown. Default true.
responseFormatstringconcise core fields or detailed full rows. Default detailed.
debugbooleanSave page snapshots for troubleshooting. Default false.
proxyConfigurationobjectProxy settings. Default Apify Residential, US.

Output

One row per review. A real concise row (pros and cons shortened):

{
"recordType": "review",
"companyName": "Apify",
"companyUrl": "https://www.glassdoor.com/Reviews/Apify-Reviews-E3100324.htm",
"companyRating": 4.9,
"companyReviewCount": 40,
"reviewId": "105560498",
"reviewUrl": "https://www.glassdoor.com/Reviews/Employee-Review-Apify-E3100324-RVW105560498.htm",
"rating": null,
"reviewTitle": "Great culture and growth, but can feel overwhelming",
"pros": "The company culture is amazing. Apify is progressing and growing rapidly... There are great opportunities for career growth.",
"cons": "Sometimes it can feel like you're struggling to keep up...",
"adviceToManagement": null,
"reviewDate": "Sep 12, 2026",
"employmentStatus": null,
"jobTitle": "less than 1 year Prague Sep 12",
"location": null,
"recommendToFriend": null,
"businessOutlook": null,
"ceoApproval": null,
"subRatings": null,
"employerResponse": null,
"sourceUrl": "https://www.glassdoor.com/Reviews/Apify-Reviews-E3100324.htm",
"scrapedAt": "2026-10-01T12:40:48.688Z",
"diagnosticStatus": null,
"diagnosticMessage": null
}
FieldWhat it contains
recordTypereview for review rows, diagnostic for free run notes on empty or invalid-input runs
companyName, companyUrl, companyRating, companyReviewCountCompany context from the review page
reviewId, reviewUrl, reviewTitle, reviewDateReview identity, link, headline and date
pros, consThe review body
jobTitleThe reviewer's role line as shown on the card, which can include tenure and city
rating, adviceToManagement, employmentStatus, locationFilled when Glassdoor shows them on the page
recommendToFriend, businessOutlook, ceoApprovalFilled when Glassdoor shows them on the page
subRatings, employerResponseFilled when shown and the matching toggle is on
sourceUrl, scrapedAtThe page read and the collection time
diagnosticStatus, diagnosticMessageExplanation on diagnostic rows

Every run also writes OUTPUT and RUN_SUMMARY to the key-value store. Their outcome field is COMPLETE, PARTIAL (some reviews saved, some pages blocked), VALID_EMPTY (pages loaded but held no reviews), INVALID_INPUT or UPSTREAM_FAILED (Glassdoor blocked every page, so the run fails).

Pricing

This Actor uses Pay per event plus Apify platform usage. You pay one Glassdoor review scraped event for each review row saved and one Actor Start event per run, and Apify platform usage for the browser and residential proxy is billed alongside. The live Pricing tab on this page shows the current event prices.

Worked example in words: four companies with maxReviewsPerCompany: 25 and maxResults: 100 save up to one hundred rows, so the run costs at most that many review events, one start event and its platform usage. maxResults is a hard ceiling, and the run logs its maximum event cost at the start. Diagnostic rows are free, and a run that saves no reviews makes no review charges; only the start event and platform usage apply. Each review is saved and charged once: partial copies of a review that Glassdoor repeats inside the same review card, and page summary boxes that quote review snippets, are dropped before any charge (OUTPUT.duplicateRowsSkipped and OUTPUT.nonReviewRowsSkipped count them).

Use with AI agents (MCP)

Connect the Actor to an MCP client through Apify MCP and ask:

Collect the most recent Glassdoor reviews for Apify, then summarize the top themes in pros and cons with one quote each and the review link.

Agent checklist:

  1. Pass the review page in startUrls and set responseFormat: "concise" to keep context small.
  2. Read rows with get-dataset-items; keep rows where recordType is review.
  3. Cite reviewUrl and reviewDate as provenance for each quote.
  4. Check OUTPUT.outcome: UPSTREAM_FAILED means Glassdoor blocked every page, so retry later instead of reporting "no reviews".
  5. Cost scope: one review event per saved row, capped by maxResults.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~glassdoor-reviews-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls": [{"url": "https://www.glassdoor.com/Reviews/Apify-Reviews-E3100324.htm"}], "maxResults": 10, "responseFormat": "concise"}'
Your next stepUseWhy
When you want the same companies' open rolesGlassdoor Jobs ScraperJob listings to pair with sentiment
When you research employers in German-speaking marketsKununu Reviews ScraperEmployee reviews from Kununu

Best results

Starting situationHelpful actionExpected outcome
You know the companyUse its /Reviews/...-Reviews-E....htm URL in startUrlsThe most predictable runs
Monitoring new feedbacksortBy: "recent" on a scheduleThe latest reviews each run
Rows for an LLMresponseFormat: "concise"Compact review rows
Clean review setKeep rows with recordType reviewOne row per distinct review; repeated partial copies are removed before billing
The run fails with outcome: UPSTREAM_FAILEDGlassdoor showed a security check on every page; run again later with the default residential proxyReview rows once the pages show reviews
A diagnostic row with diagnosticStatus: empty appearsCheck that the URL is a /Reviews/...-Reviews-E....htm page with public reviewsReview rows from the right page

Builder's note

I found that employer research almost always comes down to what people praise and what they push back on, so I put pros and cons at the center of every row and kept the company context beside them. A review page sometimes shows a security check instead of reviews, so every run states its outcome: a run that saves nothing because of a block ends as failed with the reason in OUTPUT, which is more useful to a reviewer or an agent than an unexplained empty dataset.

FAQ

Do I need a Glassdoor account?

No. The Actor reads public Glassdoor review pages.

Does it collect salaries or interview reports?

The Actor focuses on employee reviews. For job listings, use the Glassdoor Jobs Scraper linked above.

Why are some fields empty?

Glassdoor shows different details on different review cards. Fields such as rating, employmentStatus or subRatings are filled when the page shows them.

Responsible use

This Actor collects public employee reviews from Glassdoor. Review text can contain personal details and is subject to Glassdoor's terms, copyright and privacy law, so use it for aggregate analysis, quote briefly with attribution, and respect applicable laws such as the GDPR. Glassdoor is a trademark of its owner; this independent Actor is not affiliated with or endorsed by Glassdoor.