Indeed Company Reviews Extractor avatar

Indeed Company Reviews Extractor

Pricing

from $8.00 / 1,000 record scrapeds

Go to Apify Store
Indeed Company Reviews Extractor

Indeed Company Reviews Extractor

Scrapes company reviews from Indeed with pagination, date filtering, and deduplication.

Pricing

from $8.00 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

Reviewly

Reviewly

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

Indeed Reviews Scraper — Extract Company Reviews at Scale

Automatically collect hundreds of employee reviews from Indeed company pages — no coding required.

Get structured review data including ratings, pros & cons, job titles, dates, and employer responses. Perfect for HR teams, market researchers, and recruitment agencies who need reliable, up-to-date employer reputation data.


📌 What This Actor Does

The Indeed Reviews Scraper navigates Indeed company review pages and extracts all publicly available employee reviews into a clean, structured dataset.

Simply paste one or more Indeed company review URLs, set your filters, and let the actor handle pagination, deduplication, and data normalization automatically.

Who is it for?

  • HR & Talent Acquisition teams monitoring employer brand and competitor reputation
  • Business analysts benchmarking companies by employee satisfaction
  • Recruitment agencies vetting employers before placing candidates
  • Market researchers tracking sentiment trends over time
  • Developers building HR intelligence or employer rating platforms

✨ Key Features

  • Multi-company support — scrape multiple companies in a single run
  • Full pagination — automatically fetches all pages of reviews, not just the first
  • Date filtering — only collect reviews from a specific date onwards
  • Deduplication — built-in review ID tracking prevents duplicates across runs
  • Employer responses — captures the full thread of official company replies
  • Structured output — clean { entity, reviews[] } format ready for any downstream tool
  • Residential proxy support — stays undetected with Apify's proxy network
  • Browser fingerprinting — mimics a real mobile device to avoid blocks
  • Automatic retries — retries failed requests with exponential backoff
  • Pay-per-review pricing — only pay for what you actually extract

🧠 Why This Actor is Different

Most Indeed scrapers break within days because they rely on fragile CSS selectors or hardcoded session tokens. This actor extracts data from Indeed's embedded JSON payload (#comp-initialData) — a stable, structured data source that changes far less often than the page's visual layout.

FeatureThis ActorTypical scrapers
Data sourceEmbedded JSON (stable)HTML selectors (fragile)
Employer replies✅ Full thread❌ Often missing
Date filtering✅ Built-in❌ Manual post-processing
Deduplication✅ Automatic❌ Manual
Multiple companies✅ One run❌ One at a time
Pay-per-result✅ Yes❌ Fixed cost

💰 Pricing

This actor uses pay-per-event pricing — you only pay for reviews actually extracted, with no subscriptions or minimums.

EventCost
Per review extracted$0.008 ($8 per 1,000 reviews)
Actor start$0.50

Examples: 500 reviews → $4.50 — 2,000 reviews → $16.50 — 10,000 reviews → $80.50


⚙️ Input Configuration

Fields

FieldTypeRequiredDescription
startUrlsArray✅ YesOne or more Indeed company review page URLs
maxNumberOfReviewsIntegerNoMax reviews per company. 0 = no limit (default: 0)
targetDateStringNoOnly scrape reviews on or after this date (YYYY-MM-DD)
proxyConfigurationObjectNoProxy settings — residential proxies strongly recommended

Example Input (JSON)

{
"startUrls": [
{ "url": "https://fr.indeed.com/cmp/Decathlon/reviews/" },
{ "url": "https://fr.indeed.com/cmp/L-Oreal/reviews/" }
],
"maxNumberOfReviews": 500,
"targetDate": "2024-01-01",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Tips for Best Results

  • Always use residential proxies — datacenter IPs are frequently blocked by Cloudflare on Indeed
  • Use targetDate for incremental runs — set it to your last run date to only pull new reviews and avoid re-scraping
  • Leave maxNumberOfReviews at 0 to scrape all available reviews for a company
  • URL format — any Indeed subdomain works (fr.indeed.com, uk.indeed.com, etc.); the actor normalizes them automatically

📤 Output Format

The actor produces one dataset item per company. Each item contains the company metadata and all scraped reviews in a single nested structure.

Sample Output

{
"entity": {
"companyName": "Decathlon",
"totalRating": 4.1,
"totalReviews": 3842,
"ratingDistribution": {
"1": 210,
"2": 180,
"3": 420,
"4": 890,
"5": 2142
},
"sourceUrl": "https://fr.indeed.com/cmp/Decathlon/reviews/"
},
"reviews": [
{
"reviewId": "abc123xyz",
"url": "https://fr.indeed.com/cmp/Decathlon/reviews/super-entreprise?id=abc123",
"location": "Paris (75)",
"rating": 5,
"title": "Super entreprise",
"reviewBody": "Très bonne ambiance de travail, management à l'écoute.",
"positivePoints": "Ambiance, évolution de carrière, avantages",
"negativePoints": "Horaires parfois chargés",
"comments": [
{
"isOfficial": true,
"body": "Merci pour votre retour positif !",
"date": "2024-03-15T00:00:00.000Z"
}
],
"date": "2024-02-20T00:00:00.000Z",
"author": {
"jobTitle": "Vendeur",
"isCurrentlyWorking": true
},
"scrapedAt": "2025-05-16T10:30:00.000Z"
}
]
}

Field Reference

Entity (company metadata)

FieldTypeDescription
companyNameStringCompany name as shown on Indeed
totalRatingFloatOverall rating (0–5)
totalReviewsIntegerTotal number of reviews on Indeed
ratingDistributionObjectCount of reviews per star rating (1–5)
sourceUrlStringThe original URL provided as input

Review fields

FieldTypeDescription
reviewIdStringUnique Indeed review identifier
urlStringDirect permalink to the review
locationStringReviewer's work location
ratingIntegerStar rating (1–5)
titleStringReview headline
reviewBodyStringFull review text
positivePointsStringPros section text
negativePointsStringCons section text
commentsArrayEmployer responses (isOfficial, body, date)
dateISO 8601Date the review was submitted
author.jobTitleStringReviewer's job title
author.isCurrentlyWorkingBooleantrue if the reviewer is a current employee
scrapedAtISO 8601Timestamp of when this record was extracted

▶️ How to Use

Option A — Apify Console (No Code)

  1. Open the actor in Apify Store and click Try for free
  2. In the Input tab, paste your Indeed company review URL(s)
  3. Set maxNumberOfReviews and targetDate if needed
  4. Enable Residential proxies under Proxy configuration
  5. Click Start and wait for the run to finish
  6. Download your data from the Dataset tab as JSON, CSV, or Excel

Option B — Apify API

curl -X POST \
"https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{ "url": "https://fr.indeed.com/cmp/Decathlon/reviews/" }],
"maxNumberOfReviews": 200,
"targetDate": "2024-01-01"
}'
  1. Open the actor → Schedules tab
  2. Set it to run weekly or monthly
  3. Set targetDate to the previous run date to only pull new reviews
  4. Connect to Zapier, Make, or a webhook to push results to your CRM or spreadsheet automatically

📈 Use Cases

1. Employer Brand Monitoring

Track how your company's Indeed rating evolves month over month. Schedule a weekly run with targetDate pointing to the previous week to catch every new review as it appears.

2. Competitive Intelligence

Scrape reviews from 5–10 competitors in a single run. Analyze positivePoints and negativePoints across companies to understand what top talent values — and where competitors fall short.

3. Recruitment Due Diligence

Before placing a candidate with a client company, pull their latest reviews to surface red flags — management issues, high turnover, unpaid overtime — that won't appear in a sales pitch.

4. Sentiment Analysis & NLP

Feed reviewBody, positivePoints, and negativePoints into an NLP pipeline to score employer sentiment at scale across hundreds of companies.

5. HR Reporting Dashboards

Connect this actor to Google Sheets or Airtable via Apify integrations to auto-populate live employer satisfaction dashboards for leadership reporting.


🛠️ Advanced Tips

Incremental Scraping (Only New Reviews)

Use targetDate to avoid re-scraping old data on repeat runs:

{
"startUrls": [{ "url": "https://fr.indeed.com/cmp/Decathlon/reviews/" }],
"targetDate": "2025-04-01"
}

Each month, update targetDate to the first day of the current month. Using the Apify API, you can compute this date dynamically before each scheduled run.

Scaling to Many Companies

The actor processes companies sequentially. For batches of 50+ companies:

  • Split URLs across multiple parallel actor runs via the Apify API
  • Use Apify's meta-actor pattern to fan out automatically

❓ FAQ & Troubleshooting

The actor returns no reviews — what's wrong? Verify your URL matches the pattern https://*.indeed.com/cmp/COMPANY-SLUG/reviews/. The actor skips invalid URLs and logs a warning. Also confirm that residential proxies are enabled.

How fresh is the data? Data is scraped live on every run — there is no cache. You always get the latest reviews at the moment the actor starts.

How many reviews can I scrape in one run? There is no hard cap. The actor paginates through all available pages. Companies with 5,000+ reviews are fully supported. Set maxNumberOfReviews: 0 for unlimited.

Is the data usable in Excel or Google Sheets? Yes — download directly as CSV or Excel from the Apify dataset UI. For nested fields (comments, ratingDistribution), use JSON format to preserve the full structure, or flatten with a tool like jq or Python pandas.

Does scraping Indeed reviews violate their Terms of Service? This actor scrapes publicly visible data — the same reviews any visitor sees without logging in. Always ensure your use case complies with the applicable terms of service and local data regulations (GDPR, etc.).


📞 Support

  • Bug reports & issues: Use the Issues tab on the actor's Apify Store page
  • Feature requests: Open a thread in the Discussion tab
  • Community help: community.apify.com