# Glassdoor Scraper - Company Reviews & Ratings (`benthepythondev/glassdoor-scraper`) Actor

Scrape Glassdoor company reviews, ratings and salary data: overall rating, recommend %, CEO approval, review count, plus each review's rating, pros, cons, job title and date. Search by company name or URL.

- **URL**: https://apify.com/benthepythondev/glassdoor-scraper.md
- **Developed by:** [ben](https://apify.com/benthepythondev) (community)
- **Categories:** Business, Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🏢 Glassdoor Scraper - Company Reviews, Ratings & Salaries

Pull structured employer-review data from **Glassdoor** by company name or URL: the overall company rating, the percentage of employees who recommend the company, CEO approval, business outlook, the total review count and a salary-category breakdown — plus a flat row for every individual review with its star rating, pros, cons, job title, employment status and date. Perfect for employer-brand monitoring, competitor benchmarking, HR analytics, recruiting research and market intelligence. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

### 🔎 What is the Glassdoor Scraper?

Glassdoor is one of the largest sources of employee-generated company reviews, ratings and salary reports in the world. This Actor turns those pages into clean, structured data you can analyse. Give it one or more **company names** (it resolves each to the right Glassdoor employer automatically) or paste exact **Glassdoor company URLs**, and it returns the company's aggregate reputation metrics together with the individual reviews behind them.

It runs through a real, stealth browser on residential IPs, so it reliably reaches pages that block ordinary scrapers, and it paginates through the review list until it reaches the number of reviews you ask for.

#### What data does it extract?

- **Company** — name, short name, Glassdoor employer id and logo.
- **Overall rating** — the company's average star rating (out of 5).
- **Recommend to a friend %** — share of reviewers who recommend the employer.
- **CEO approval %** — share who approve of the CEO.
- **Business outlook %** — share with a positive business outlook.
- **Review count** — total number of reviews on Glassdoor.
- **Salary categories** — the job-family breakdown (Engineering, Sales, Marketing …) with how many salary reports each has.
- **Per review** — star rating, review title, pros, cons, reviewer job title, employment status (current/former), and review date.
- **Reviews URL** — a direct link to the company's Glassdoor reviews.

### ⬇️ Input

| Field | Type | Description |
|-------|------|-------------|
| `companies` | array | Company names to look up, e.g. `["Google", "Amazon"]`. Each is resolved to its Glassdoor page automatically. |
| `companyUrls` | array | Optional. Full Glassdoor company URLs (Overview or Reviews links containing an `EI_IE…` / `-E<id>` employer id) for an exact match. |
| `maxReviews` | integer | Max individual reviews to return per company (10 per page). Default `10`. |
| `proxyCountry` | string | Country for the residential proxy used to reach Glassdoor. Default `US`. |

#### Example input

```json
{
  "companies": ["Google", "Netflix"],
  "maxReviews": 25,
  "proxyCountry": "US"
}
````

### ⬆️ Output

Each review is one dataset record, enriched with its company's aggregate metrics:

```json
{
  "company": "Google Inc.",
  "employer_id": 9079,
  "company_short_name": "Google",
  "company_logo": "https://media.glassdoor.com/sql/9079/google-squarelogo.png",
  "company_rating": 4.4,
  "recommend_pct": 86,
  "ceo_approval_pct": 89,
  "business_outlook_pct": 71,
  "review_count": 58231,
  "salary_categories": ["Engineering", "Product & Project Management", "Sales"],
  "review_rating": 5,
  "review_title": "Great place to grow as an engineer",
  "pros": "Smart colleagues, strong compensation, great work-life balance and free food.",
  "cons": "Large organisation, so internal processes can be slow and promotions are competitive.",
  "job_title": "Software Engineer",
  "employment_status": "Current Employee",
  "review_date": "Mar 14, 2026",
  "reviews_url": "https://www.glassdoor.com/Reviews/Google-Inc-Reviews-E9079.htm",
  "query": "Google"
}
```

### 💡 Use cases

- 🏢 **Employer-brand monitoring** — track your company's rating, recommend % and CEO approval over time and react to shifts.
- 📊 **Competitor benchmarking** — compare reputation metrics across rival employers in your industry.
- 🧑‍💼 **Recruiting & HR analytics** — surface recurring pros and cons by job title to improve hiring and retention.
- 📈 **Market & investment research** — read employee sentiment as a signal on company culture and outlook.

### ❓ FAQ

**How do I scrape a specific company?** Put its name in `companies` (e.g. `"Google"`) — the Actor resolves it to the correct Glassdoor employer. For an exact match, paste the company's Glassdoor URL into `companyUrls` instead.

**What if two companies share a name?** The Actor picks Glassdoor's top match for the name. To remove any ambiguity, use `companyUrls` with the exact Overview/Reviews link.

**How many reviews can I get?** Set `maxReviews` to any number; the Actor paginates through the review list (10 per page) until it reaches that count or runs out of reviews.

**Why does it need a residential proxy?** Glassdoor blocks datacenter IPs with a security challenge. The Actor uses a stealth browser on Apify residential IPs to load pages like a real visitor. `US` works best for glassdoor.com.

**Which fields are aggregate vs per-review?** `company_rating`, `recommend_pct`, `ceo_approval_pct`, `business_outlook_pct`, `review_count` and `salary_categories` describe the company; `review_rating`, `review_title`, `pros`, `cons`, `job_title`, `employment_status` and `review_date` describe each individual review.

**Can I export to CSV or Excel?** Yes. Results are stored in an Apify dataset and can be exported to JSON, CSV, Excel, XML or HTML, or pulled via the API.

**Can I run it on a schedule?** Yes — schedule it in Apify to refresh a company's ratings and reviews daily, weekly or monthly.

**Can I connect it to other tools?** Yes. Use the Apify API or integrations for Make, Zapier and n8n to push the data into your stack.

**Is it legal?** This Actor collects only publicly available information that Glassdoor shows to any visitor; it does not log in or access private data. You are responsible for using the data in line with Glassdoor's terms, applicable laws and data-protection rules such as GDPR. Reviews are user-generated opinions — treat them accordingly.

### 🔗 You might also like

- ⭐ Trustpilot Intelligence Scraper — consumer reviews, ratings & sentiment.
- 💼 Greenhouse / Lever / Workday Jobs Scrapers — live job postings from major ATS platforms.
- 🌍 Remote Jobs Aggregator — multi-platform remote job listings.
- 📱 Google Play & App Store Reviews Scrapers — mobile app reviews and ratings.

**Keywords:** glassdoor scraper, glassdoor api, company reviews scraper, employer reviews, glassdoor ratings, glassdoor salaries, ceo approval, recommend to a friend, employer branding, employee reviews, company rating data, hr analytics, recruiting data, competitor benchmarking, glassdoor data export, workplace reviews, employee sentiment, glassdoor company data, scrape glassdoor, glassdoor reviews json

# Actor input Schema

## `companies` (type: `array`):

Company names to look up on Glassdoor, e.g. 'Google', 'Amazon', 'Microsoft'. Each name is resolved to its Glassdoor company page automatically.

## `companyUrls` (type: `array`):

Full Glassdoor company URLs (Overview or Reviews links containing an EI\_IE… or -E<id> employer id). Use these instead of names for an exact match.

## `maxReviews` (type: `integer`):

Maximum number of individual reviews to return per company (10 reviews per page are loaded).

## `proxyCountry` (type: `string`):

Country for the Apify residential proxy used to reach Glassdoor (Glassdoor blocks datacenter IPs). 'US' works best for glassdoor.com.

## Actor input object example

```json
{
  "companies": [
    "Google"
  ],
  "companyUrls": [],
  "maxReviews": 10,
  "proxyCountry": "US"
}
```

# 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 = {
    "companies": [
        "Google"
    ],
    "companyUrls": [],
    "maxReviews": 10,
    "proxyCountry": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/glassdoor-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 = {
    "companies": ["Google"],
    "companyUrls": [],
    "maxReviews": 10,
    "proxyCountry": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/glassdoor-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "companies": [
    "Google"
  ],
  "companyUrls": [],
  "maxReviews": 10,
  "proxyCountry": "US"
}' |
apify call benthepythondev/glassdoor-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=benthepythondev/glassdoor-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Glassdoor Scraper - Company Reviews & Ratings",
        "description": "Scrape Glassdoor company reviews, ratings and salary data: overall rating, recommend %, CEO approval, review count, plus each review's rating, pros, cons, job title and date. Search by company name or URL.",
        "version": "1.0",
        "x-build-id": "65j1QjuDjMahhaExO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~glassdoor-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-glassdoor-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/benthepythondev~glassdoor-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-glassdoor-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/benthepythondev~glassdoor-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-glassdoor-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "companies": {
                        "title": "Company names",
                        "type": "array",
                        "description": "Company names to look up on Glassdoor, e.g. 'Google', 'Amazon', 'Microsoft'. Each name is resolved to its Glassdoor company page automatically.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyUrls": {
                        "title": "Company URLs (optional)",
                        "type": "array",
                        "description": "Full Glassdoor company URLs (Overview or Reviews links containing an EI_IE… or -E<id> employer id). Use these instead of names for an exact match.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxReviews": {
                        "title": "Max reviews per company",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of individual reviews to return per company (10 reviews per page are loaded).",
                        "default": 10
                    },
                    "proxyCountry": {
                        "title": "Residential proxy country",
                        "type": "string",
                        "description": "Country for the Apify residential proxy used to reach Glassdoor (Glassdoor blocks datacenter IPs). 'US' works best for glassdoor.com.",
                        "default": "US"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
