# Indeed Reviews Scraper (`aboo.script/indeed-reviews-scraper`) Actor

\[💰$2.5 / 1K] Indeed reviews scraper that works on Cloudflare-protected pages. No login, no API key. Scrape company reviews from any Indeed country site by URL or company name, with sort, topic, country and date filters. Get ratings, 5 category ratings, pros, cons, job title, location and date.

- **URL**: https://apify.com/aboo.script/indeed-reviews-scraper.md
- **Developed by:** [Aboo Script](https://apify.com/aboo.script) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Indeed Reviews Scraper

![Indeed Reviews Scraper](https://i.ibb.co/HDHtM1rB/indeed-reviews-banner.png)

**Indeed Reviews Scraper** extracts employee reviews of companies from [Indeed](https://www.indeed.com/companies) into clean, structured data you can download as JSON, CSV, Excel, or HTML. Paste an Indeed company page or type a company name, and get the review title, text, pros, cons, overall and category ratings, job title, location, employee status, and date for every review. No account or login required.

### Introduction

[Indeed](https://www.indeed.com/companies) is one of the largest job sites in the world, with millions of company reviews written by current and former employees in many countries. Each review rates the company on work-life balance, pay and benefits, job security and advancement, management, and culture, which makes Indeed data a rich source for employer branding and workplace research.

This actor collects the same public reviews you see in your browser and turns them into a ready-to-use dataset. It works on every Indeed country site and on Cloudflare-protected pages. You can run it once, schedule it to run daily, or connect it to your own tools.

### What data can you extract from Indeed?

- 📝 Review title, full review text, pros, and cons
- ⭐ Overall rating and the five category ratings: work-life balance, pay and benefits, job security and advancement, management, and culture
- 👤 Reviewer job title, location, country, and whether they are a current or former employee
- 📅 Review date in one standard format
- 👍 Helpful and unhelpful votes
- 🏢 Company name, company page URL, company rating, and total number of company reviews
- 🔗 Direct URL and ID of each review

### Use Cases

- 📈 **Employer research**: compare how employees rate pay, management, and culture across companies or locations.
- 🕵️ **Competitor monitoring**: follow what employees say about competing employers and spot trends over time.
- 🧑‍💼 **Employer branding and HR**: track your own company reviews, find recurring complaints, and measure the effect of changes.
- 💼 **Recruiting and job seekers**: check what people in a specific job title or city say before hiring or applying.
- 🤖 **AI and automation**: feed review text, pros, and cons into sentiment analysis, dashboards, or AI workflows.

### How to scrape Indeed reviews step by step

1. Paste one or more Indeed company pages into **Start URLs**, or type company names into **Company names**.
2. Set **Maximum number of reviews** to how many reviews you want per URL or per company name.
3. Optionally pick **Sort by**, **Topic**, **Country**, or **Reviews from date**.
4. Click **Start** and wait for the run to finish.
5. Download your data in JSON, CSV, Excel, or HTML from the **Output** tab.

### Input

- **Start URLs**: Indeed company pages to scrape reviews from, such as `https://www.indeed.com/cmp/Amazon.com/reviews` or `https://uk.indeed.com/cmp/Tesco`. Both the company page (such as `/cmp/Starbucks`) and its reviews page (such as `/cmp/Starbucks/reviews`) are supported, on any Indeed country site (www, uk, de, fr, ca, jp, and more). Any filters you set on the website (sort order, topic, job title, location, country) are kept in the results.
- **Company names**: company names to search on Indeed, one per line, for example Google or Starbucks. The reviews of the best matching company are scraped, separately for each name.
- **Maximum number of reviews**: how many reviews to collect for each start URL or company name. Set 0 for no limit.
- **Sort by**: order of the reviews for company names: Most helpful, Newest, Highest rated, or Lowest rated.
- **Topic**: only reviews about one topic for company names: work-life balance, pay and benefits, job security and advancement, management, or culture. Leave empty for all reviews.
- **Country**: only reviews from employees in one country for company names, as a two-letter code (US, GB, CA, IN, ...), or ALL for every country. Leave empty for the default of indeed.com (United States).
- **Reviews from date**: only reviews published on or after this date. Works for start URLs and company names. With the Newest sort order, the run stops as soon as older reviews are reached.
- **Proxy configuration**: residential proxies are required, because Indeed blocks most datacenter IPs. They are selected by default.

You can use start URLs, company names, or both in the same run.

### Input Examples

Scrape reviews from an Indeed company page:

```json
{
  "startUrls": [{ "url": "https://www.indeed.com/cmp/Amazon.com/reviews" }],
  "maxResults": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

Search by company name:

```json
{
  "searchQueries": ["Starbucks"],
  "maxResults": 5,
  "sort": "mostHelpful",
  "topic": "",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

### Output

Each review is saved as one item in the dataset. Here is an example of a single item:

```json
{
  "url": "https://www.indeed.com/cmp/Starbucks/reviews/high-turnover?id=7d2ba69f49d08a95",
  "reviewId": "7d2ba69f49d08a95",
  "companyName": "Starbucks",
  "companyUrl": "https://www.indeed.com/cmp/Starbucks",
  "companyRating": 3.8,
  "companyReviewCount": 75426,
  "title": "High turnover",
  "text": "High turnover little to no opportunity for growth within the company. Terrible customers",
  "pros": "Health insurance",
  "cons": "Expectations, regularly changing rules and regulations, high manager turnover, customers",
  "rating": 2,
  "workLifeBalanceRating": 2,
  "compensationBenefitsRating": 3,
  "jobSecurityAdvancementRating": 1,
  "managementRating": 1,
  "cultureRating": 2,
  "jobTitle": "Shift Supervisor",
  "location": "Tallahassee, FL",
  "country": "US",
  "currentEmployee": true,
  "publishedAt": "2026-10-28T00:00:00.000Z",
  "helpfulVotes": 0,
  "unhelpfulVotes": 0,
  "language": null
}
```

You can download the dataset in JSON, CSV, Excel, XML, or HTML, or access it through the Apify API.

### Notes

- Only Indeed company pages and company review pages are supported. Single review pages (a link to one review, ending in `?id=...`) and other URLs are skipped.
- Residential proxies are required. Indeed blocks most datacenter IPs, so keep the default proxy setting.
- Sort by, Topic, and Country apply to company names. Start URLs keep the filters already set in the URL.
- A company name always takes the best matching company on Indeed. If the match is wrong, paste the company page as a start URL instead.
- Reviewers can skip pros, cons, job title, location, and category ratings. Skipped values are returned as `null`.
- Review text stays in the language it was written in. Review dates use the same standard format on every Indeed country site.
- Without the Newest sort order, **Reviews from date** still filters the results, but the run has to read further to find matching reviews.
- If a company does not exist or a company name has no match, it is skipped and the run continues with the other inputs.

### Why use the Indeed Reviews Scraper?

- ✅ **No login needed**: works with public reviews only, so there is no account to manage.
- 🛡️ **Works on Cloudflare-protected pages**: gets reviews from Indeed even where simple tools are blocked.
- 🌍 **Every Indeed country site**: scrape reviews from the US, UK, Germany, France, Canada, Japan, and more.
- 🎯 **Keeps your filters**: paste a company reviews URL with a sort, topic, job title, location, or country filter and get exactly what you see there.
- 🧹 **Clean data**: ratings are real numbers, dates use one standard format, and every review carries the company rating and review count.
- 💸 **Pay for what you need**: set a review limit per URL or company name and keep every run small.

### FAQ

#### How many reviews can I scrape?

You can set any number in **Maximum number of reviews**, or 0 for no limit. The actor keeps going until it reaches your limit or runs out of reviews for that company.

#### Do I need an Indeed account?

No. The actor only collects publicly available reviews. You do not need to log in or provide any account details.

#### Can I get only recent reviews?

Yes. Set **Reviews from date**, and choose **Newest** in **Sort by** (or use a start URL sorted by date) so the run stops as soon as it reaches older reviews.

#### Can I scrape data on a schedule?

Yes. Use Apify Schedules to run the actor every day or week, and get fresh reviews automatically.

#### Can I request a new feature or filter?

Yes. Right now the actor supports start URLs, company names, sort order, topic, country, and a start date. If you need other filters or data, such as interviews or salaries, get in touch and they can be added.

#### Can I get a custom or private version?

Yes. The actor can be customized for your workflow, delivered as a private version, or a new scraper can be built for a different website. Use the contact details below.

### Need to scrape other job platforms?

- [LVMH Jobs Scraper](https://apify.com/aboo.script/lvmh-jobs-scraper): job offers from all LVMH maisons with location, contract, salary, and full description.
- [Tapestry Jobs Scraper](https://apify.com/aboo.script/careers-tapestry-scraper): Coach and Kate Spade job offers with department, location, pay range, and apply link.

***

**Need help or want a custom solution?**

- 📧 Email: aboo.script@gmail.com
- 🧩 More scrapers: [Apify profile](https://apify.com/aboo.script)

### Image Credit

Image credit: [Indeed](https://www.indeed.com/)

# Actor input Schema

## `startUrls` (type: `array`):

Indeed company pages to scrape reviews from, on any Indeed country site, for example https://www.indeed.com/cmp/Amazon.com/reviews or https://uk.indeed.com/cmp/Tesco. Filters set on the website (sort, topic, job title, location, country) are kept.

## `searchQueries` (type: `array`):

Company names to search on Indeed, for example Google or Starbucks. The reviews of the best matching company are scraped, separately for each name.

## `maxResults` (type: `integer`):

Maximum number of reviews to scrape per start URL or company name. Set 0 for no limit.

## `sort` (type: `string`):

Order of the reviews for company names, as on the website. Start URLs keep their own sort order.

## `topic` (type: `string`):

Only reviews about this topic, for company names. Leave empty for all reviews.

## `country` (type: `string`):

Only reviews from employees in this country, as a two-letter code (US, GB, CA, IN, ...), or ALL for every country, for company names. Leave empty for the default of indeed.com (United States).

## `dateFrom` (type: `string`):

Only reviews published on or after this date. Works best with the Newest sort order, which stops as soon as older reviews are reached.

## `proxyConfiguration` (type: `object`):

Proxy servers used to reach Indeed. Residential proxies are recommended because Indeed blocks most datacenter IPs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.indeed.com/cmp/Amazon.com/reviews"
    }
  ],
  "maxResults": 5,
  "sort": "mostHelpful",
  "topic": "",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.indeed.com/cmp/Amazon.com/reviews"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/indeed-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.indeed.com/cmp/Amazon.com/reviews" }],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("aboo.script/indeed-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.indeed.com/cmp/Amazon.com/reviews"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call aboo.script/indeed-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aboo.script/indeed-reviews-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/lxv5cV4r7edUjpXBp/builds/KnfAc7yMkjCpBWhCs/openapi.json
