Indeed Company Reviews Scraper + Insights
Pricing
Pay per usage
Indeed Company Reviews Scraper + Insights
Scrape Indeed company reviews and get a computed summary in the same run: rating distribution, current-vs-former employee gap, per-job-title and per-location breakdowns, monthly trend, and top complaint terms. No AI keys required.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Mototsugu Ohki
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
23 days ago
Last modified
Share
What does Indeed Company Reviews Scraper do?
It scrapes employee reviews from Indeed company pages — ratings, review text, job title, location,
whether the reviewer still works there — and then, in the same run, returns a computed summary of what
those reviews add up to. Point it at indeed.com company names like Google or
Walmart and you get both the rows and the analysis, ready for a spreadsheet, a dashboard, or an LLM.
Every other Indeed reviews scraper hands you a pile of rows and leaves the counting to you. This one also tells you which job titles are unhappy, whether people sour on the company before they leave, how the rating moved month by month, and which words dominate the one-star reviews.
Running on Apify means you get scheduling, a REST API, webhooks, integrations with Make/Zapier/n8n, and proxy rotation without configuring any of it yourself.
Why use it?
- Competitive HR intelligence — see how a rival employer is actually rated by the people doing the work, broken out by role and site.
- Pre-acquisition and vendor due diligence — a company whose current employees rate it far lower than its leavers did is a company in the middle of something.
- Recruiting — find out what candidates read about your client before the interview, and which roles have the worst reputation to sell.
- Job seekers and career sites — compare employers on the dimensions that matter (management, pay, work-life balance) rather than a single star rating.
- Feeding an LLM — the summary row is compact, numeric, and already deduplicated, so it fits in a prompt without you paying to summarize thousands of raw reviews.
How to use it
- Click Try for free and sign in to Apify.
- Put one or more company names into Companies —
Google,Walmart, or a full URL likehttps://www.indeed.com/cmp/Amazon.com/reviews. - Leave Max reviews per company at 20 for a fast overview, or raise it when you want the review text.
- Click Start. A 20-review run finishes in well under a minute.
- Download the dataset as JSON, CSV, Excel, or HTML, or pull it from the API.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
companies | array | ["Google"] | Company names or Indeed review URLs. Home Depot becomes Home-Depot. |
maxReviewsPerCompany | integer | 20 | Reviews per company. Indeed serves 20 per page, ~20–30s per page. |
country | string | US | Two-letter code to filter reviews by country. |
includeReviews | boolean | true | Output the individual review rows. |
includeInsights | boolean | true | Output the per-company summary row. |
filterTopic | string | — | Work-life balance, pay and benefits, job security, management, or culture. |
filterJobTitle | string | — | e.g. Software Engineer. |
filterLocation | string | — | e.g. New York, NY. |
maxConcurrency | integer | 2 | Keep it low. Higher values cause more failures, not faster runs. |
{ "companies": ["Google", "Microsoft", "https://www.indeed.com/cmp/Amazon.com/reviews"] }
Output
Two kinds of rows land in one dataset. Download as JSON, CSV, Excel, or HTML.
type: "review" — one row per review
{"type": "review","company": "Google","reviewId": "6dbdd4271e192b00","title": "Great place to work","text": "The full review text as written by the reviewer.","overallRating": 5,"ratings": {"workLifeBalance": 4,"compensationAndBenefits": 5,"jobSecurityAndAdvancement": 3,"management": 4,"cultureAndValues": 5},"jobTitle": "Senior Software Engineer","normalizedJobTitle": "Senior Software Engineer","location": "Mountain View, CA","country": "US","isCurrentEmployee": false,"submissionDate": "2026-08-17","helpfulCount": 3,"reviewUrl": "https://www.indeed.com/cmp/Google/reviews/..."}
type: "company_insights" — one row per company
{"type": "company_insights","company": "Walmart","overview": {"overallRating": 3.4,"totalReviewCount": 282938,"categoryRatings": { "management": 3.1, "workLifeBalance": 3.3 },"ratingDistribution": { "star1": { "count": 44000, "share": 0.155 } },"polarization": { "extremeShare": 0.48, "note": "..." },"topics": [{ "name": "Management", "count": 21000, "rating": 3.0 }]},"sample": { "analysedReviewCount": 200, "coverage": 0.0007, "failedPages": 0 },"employmentStatus": {"currentEmployees": { "reviewCount": 66, "averageRating": 2.42 },"formerEmployees": { "reviewCount": 134, "averageRating": 2.69 },"gap": -0.27},"byJobTitle": [{ "key": "Cashier", "reviewCount": 11, "averageRating": 3.73 },{ "key": "Personal Shopper", "reviewCount": 13, "averageRating": 2.31 }],"byLocation": [{ "key": "Austin, TX", "reviewCount": 3, "averageRating": 1.67 }],"trend": [{ "month": "2026-08", "reviewCount": 100, "averageRating": 2.51 }],"complaintTerms": {"basedOnReviewCount": 96,"terms": [{ "term": "management", "reviewCount": 46, "share": 0.479 }]},"mostHelpfulReviews": [{ "overallRating": 2, "helpfulCount": 37, "reviewUrl": "https://www.indeed.com/cmp/..." }]}
Those Walmart numbers are from a real run: of 200 reviews sampled, "management" appears in 46 of the low-rated ones, cashiers rate the job 3.73 while personal shoppers rate it 2.31, and current employees score it lower than the people who already left.
Data fields
| Field | Description |
|---|---|
overallRating | 1–5 stars for the review as a whole |
ratings.* | Five optional sub-ratings; null when the reviewer skipped the question |
jobTitle / normalizedJobTitle | Role as written, and Indeed's normalized form |
location / country | Where the reviewer worked |
isCurrentEmployee | true if they still work there |
submissionDate | ISO date |
helpfulCount / unhelpfulCount | Votes from other readers |
overview.* | Company-wide figures covering all reviews, not just the sampled ones |
employmentStatus.gap | Current-employee average minus former-employee average |
byJobTitle / byLocation | Average rating and count per group (groups under 3 reviews are omitted) |
trend | Monthly review count and average rating |
complaintTerms | Words most common in one- and two-star reviews |
Getting a cheap overview
Leave maxReviewsPerCompany at 20. One page per company gives you the full rating distribution,
category ratings and topic breakdown for the company's entire review history — Indeed exposes those on
the first page — plus 20 recent reviews. That is enough to compare fifty employers without paying to pull
thousands of rows.
How much does it cost to scrape Indeed reviews?
This Actor is currently free to use. There is no per-result charge — you pay only your own Apify platform usage (compute and proxy), which is covered by the free tier for ordinary runs. The default run (one company, 20 reviews) uses well under a cent of platform usage and finishes in about 20 seconds.
Two knobs keep platform usage down. includeReviews: false gives you summaries only, which is the
cheapest way to compare many employers. includeInsights: false gives you raw rows only.
Tips
- Comparing many employers? Pass them all in
companieswithmaxReviewsPerCompany: 20andincludeReviews: false. One row per company, fast, cheap. - Investigating one employer? Raise
maxReviewsPerCompanyto 200–500 so the per-job-title and per-location breakdowns rest on a real sample, and watchsample.coverage. - Only care about one problem area?
filterTopic: "mgmt"pushes the filter to Indeed itself, so the whole run is about management reviews. - Scheduling it weekly and diffing the
trendarray is the cheapest way to catch a company's rating turning.
FAQ
Does it need an OpenAI or Anthropic key? No. Every number in the summary is arithmetic over the rows that were fetched. Nothing is sent to a language model, and results are identical for identical input.
Why is coverage low? A company can have hundreds of thousands of reviews and you asked for 200. The
overview block is still complete — only the sample blocks reflect the subset.
Why are sub-ratings often null? Indeed makes them optional. null means the reviewer skipped that
question. Averages ignore skipped answers and report answeredCount so you can judge how solid each is.
Can I get reviews for a specific role or office? Yes — filterJobTitle and filterLocation push the
filter to Indeed, so the entire run targets that slice.
Does it return reviewer names? No. Indeed does not publish them and this Actor does not invent them. Output is limited to what the reviewer chose to publish: rating, text, job title, location, and tenure status.
Why did some pages fail? Pages are fetched through Apify Proxy, which occasionally returns a
transient error. The Actor retries; anything still missing is reported in sample.failedPages rather
than silently dropped.
Limitations and legal
- Only pages that Indeed's
robots.txtpermits for general crawlers are fetched. Login-gated pages, individual member pages, and the review submission flow are out of scope. - Deep pagination is slower and less reliable than the first few pages. Thousands of reviews for a single company means a long run.
- Unofficial and independent. Not affiliated with, authorized by, endorsed by, or sponsored by Indeed or Recruit Holdings.
- This Actor collects publicly available information and does not return reviewer names. Reviews are nonetheless written by real people, and the combination of job title, location and tenure can be identifying in a small workplace. Review text may also mention third parties.
- You are the data controller for whatever you collect. You are responsible for having a lawful basis under the privacy laws that apply to you (GDPR/UK GDPR if you handle data about people in the EU or UK), and for complying with the source site's terms.
- Do not use this data to identify, contact, or retaliate against individual reviewers, to make decisions about individual people, or to match reviews against HR, CRM or social media records.
Support
Found a bug or want a field that is not here? Open an issue on the Issues tab and it will be read.
