Glassdoor Company Reviews Scraper
Pricing
Pay per event
Glassdoor Company Reviews Scraper
Scrape Glassdoor company reviews by company name: rating breakdowns, pros/cons, job title, employment status, review date, and CEO/recommend-to-friend signals, plus a company rating summary. Camoufox-powered to clear the target's bot defenses. Pay only per row scraped.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
🎯 What this scrapes
For each company you request, this Actor visits Glassdoor's public company Overview page and its Reviews pages and emits two kinds of rows into one dataset:
company_summary— one row per company: overall rating, CEO approval, business outlook, and recommend-to-friend percentage.review— one row per individual review: overall + sub-category ratings (work-life balance, culture, career opportunities, compensation, senior management, diversity), pros, cons, advice to management, job title, employment status, review date, and helpful-vote counts.
No login, no account, no reviewer de-anonymization — only what Glassdoor's public pages show anonymously.
🔥 Features
- We clear the bot defenses guarding Glassdoor's review pages — a hardened browser layer with a proven navigation sequence gets through where a plain HTTP request gets turned away.
- We rotate proxy sessions on every retry — a fresh exit IP and session whenever a company's fetch fails.
- Per-company fault isolation — one company that fails to resolve or parse never fails the whole run; it's logged and skipped, and every other company still completes.
- Pydantic v2 input + output validation — every row is a typed, schema-enforced record; fields Glassdoor doesn't expose come back
null, never guessed. - Pay-Per-Event pricing — you're charged per row actually written to your dataset, not per request attempted.
- Honest throughput — Glassdoor's own anonymous-access limits cap full review text at a few reviews per page load;
maxReviewsPerCompanyand pricing reflect that reality rather than promising cheap bulk collection we can't deliver without a login we refuse to use.
💡 Use cases
- Employer-brand monitoring — track how your own company's reviews and ratings trend over time.
- Recruiting intelligence — pull culture and compensation signals for target companies before an outreach campaign.
- Competitive talent research — compare rating breakdowns and CEO approval across a peer set.
- Investment due diligence — culture and leadership signals as a qualitative input alongside financials.
⚙️ How to use it
- Click Try for free at the top of the page.
- Enter one or more
companyNames— or, if you already know Glassdoor's internalemployerIdfor a company, passemployerIdspositionally alongside it to skip resolution entirely. - Set
maxReviewsPerCompanyto the depth you need (higher costs more — see Pricing). - Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
companyNames | array | yes | — | Company names to scrape, e.g. ["Google", "Meta"]. |
employerIds | array | no | — | Known Glassdoor employerId values, paired positionally with companyNames. Skips resolution — the most reliable path. |
maxReviewsPerCompany | integer | no | 30 | 3-500. Anonymous access renders ~3 full reviews per page load; higher values cost proportionally more. |
includeCompanySummary | boolean | no | true | Emit one company_summary row per company — no extra request. |
countryCode | string | no | "US" | 2-letter ISO — pinned proxy exit country. |
proxyConfiguration | object | no | {"useApifyProxy": true} | Apify Proxy editor. |
Example input
{"companyNames": ["Google"],"employerIds": [9079],"maxReviewsPerCompany": 30,"includeCompanySummary": true,"countryCode": "US"}
📤 Output
Every row is one dataset item — a review or a company_summary, distinguished by row_type.
| Field | Type | Notes |
|---|---|---|
row_type | string | "review" or "company_summary". |
company_name / employer_id | string / integer | Requested company and resolved Glassdoor id. |
review_id | string | null | Null for company_summary rows. |
review_date | string | null | ISO-8601. |
job_title / employment_status | string | null | Reviewer's stated role and status. |
overall_rating + 6 sub-ratings | float | null | Work-life balance, culture, career, compensation, senior management, diversity. |
pros / cons / advice_to_management / summary | string | null | Review text fields. |
recommend_to_friend / ceo_approval_response | boolean | null | Per-review signals, when the reviewer set them. |
count_helpful / count_not_helpful | integer | null | Helpful-vote counts. |
company_overall_rating, company_ceo_approval_pct, company_rating_business_outlook, company_recommend_to_friend_pct | float | null | company_summary aggregate fields; null on review rows. |
source_url / scraped_at | string | Fetched page URL, ISO-8601 timestamp. |
Example output
{"row_type": "review","company_name": "Google","employer_id": 9079,"review_id": "105125064","review_date": "2026-08-09T23:03:51.940","job_title": "Hair Transplant Technician","employment_status": "Current Employee, 2 year(s)","overall_rating": 3,"pros": "Good learning experience and flexible working environment.","cons": "Long working hours and sometimes limited career growth.","advice_to_management": "Provide better training opportunities.","count_helpful": 0,"count_not_helpful": 0,"source_url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm","scraped_at": "2026-08-12T09:00:00+00:00"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.02 | One-off warm-up charge per run. |
review-row | $0.01 | Per review row written to your dataset. |
company-summary-row | $0.01 | Per company-summary row written (when includeCompanySummary=true). |
Example: 1 000 review rows ≈ $10.00. This sits at the top of our usual $1-10/1,000 range on purpose — Glassdoor renders full review text only a few rows per page load without a login, and we refuse to use one, so collecting real volume costs real browser-navigation compute. No subscription, no minimum, no card to start.
🚧 Limitations
Anonymous access only — no login, ever. Glassdoor renders roughly 3 full reviews per page load for unauthenticated visitors, so maxReviewsPerCompany above a few hundred means real added runtime and cost, not a cheap bulk export. Company-name-to-employerId resolution is still being hardened — pass employerIds directly for the most reliable results today. Some review sub-fields (recommend-to-friend, CEO-approval vote) are only present when a reviewer chose to set them and come back null otherwise.
❓ FAQ
Is this legal?
We only fetch content Glassdoor makes publicly available on its company and review pages, anonymously — no login, no reviewer de-anonymization. Respect Glassdoor's terms of service before using output commercially.
Why is a field null?
Either Glassdoor didn't collect that field for a given review (recommend-to-friend and CEO-approval votes are optional for reviewers), or resolution for that company failed and it was skipped — check the run's status message for a breakdown.
Do I need my own proxy?
No — a proxy is wired in by default; proxyConfiguration is optional if you want to bring your own.
Why did I get fewer reviews than maxReviewsPerCompany?
Glassdoor stops rendering full review text past a point for anonymous visitors on some companies; the Actor stops cleanly and reports how many rows it actually collected rather than erroring out.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.
