# Glassdoor Scraper (`goat255/glassdoor-scraper`) Actor

Scrape Glassdoor company ratings and employee reviews without a login. Give it company names or page links and get the company profile (overall and sub-ratings, CEO approval, recommend rate) plus paginated employee reviews with pros, cons, advice, job title, and ratings.

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

## Pricing

from $4.00 / 1,000 reviews

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/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

Scrape Glassdoor company ratings and employee reviews by company name or company page link, with no login and no API key required. Returns each company's profile (overall rating, CEO approval, recommend rate, sub-category ratings) plus paginated employee reviews (pros, cons, advice, job title, location, dates) as clean structured rows.

This Glassdoor Scraper walks review pages automatically up to the limit you set, so a single run can pull hundreds of reviews per company for sentiment analysis, employer benchmarking, and reputation monitoring.

### What it does

- **Company profile** for each company: overall rating, total reviews count, salaries count, CEO approval, recommend-to-friend rate, business outlook, and per-category ratings (culture, compensation, career opportunities, work-life balance, senior leadership, diversity), plus headquarters, company size, industry, sector, website, and logo.
- **Employee reviews** for each company: star rating, six sub-category ratings, recommend / CEO approval / outlook signals, summary, pros, cons, advice to management, job title, employment status, current vs former employee, years at company, location, helpful count, and review date.
- **Automatic pagination** up to your `maxReviewsPerCompany` limit, with de-duplication and a clean stop when a company runs out of reviews.
- **Bulk input**: pass many companies at once as names or links and process them in parallel.
- **No account, no password, no API key.** Give it a name or a company link and it returns clean structured data.

### Use cases

- **Talent and HR research**: benchmark employer reputation, ratings, and CEO approval across a target list of companies before a hiring push or an employer-brand campaign.
- **Sentiment analysis**: pull hundreds of reviews per company and summarize recurring pros, cons, and advice themes for a market or competitor set.
- **Investment and due diligence**: track employee sentiment and culture signals as an alternative-data input for a company you are evaluating.
- **Reputation monitoring**: schedule recurring runs to watch how a company's rating, recommend rate, and review volume shift over time.
- **Lead and account research**: enrich a list of target accounts with headquarters, size, industry, and rating before outreach.

### Input

| Field | Type | Description |
|---|---|---|
| `companies` | array | Company names or Glassdoor company page links. Each name is resolved to the best matching company. Required. |
| `maxReviewsPerCompany` | integer | Maximum reviews returned per company. Pages are walked until this is reached or the company runs out of reviews. Default `100`. |
| `reviewsSort` | string | Order reviews are returned in: `DATE` (most recent first) or `RATING` (highest rated first). Default `DATE`. |
| `includeCompanyProfile` | boolean | When on, each company emits one profile row (overall and sub-ratings, CEO approval, recommend rate, headquarters, size, industry) before its reviews. Default `true`. |
| `concurrency` | integer | How many companies to process in parallel. Default `3`. |
| `proxyConfig` | object | Proxy configuration. Residential proxies are recommended for the most reliable results. |

#### Example input

```json
{
  "companies": [
    "Acme Co",
    "https://www.glassdoor.com/Overview/Working-at-Example-Corp-EI_IE12345.htm"
  ],
  "maxReviewsPerCompany": 200,
  "reviewsSort": "DATE",
  "includeCompanyProfile": true,
  "concurrency": 3
}
````

### Output

Each result is one row in the dataset, tagged with a `type` of either `company` or `review`.

#### Sample review row

```json
{
  "type": "review",
  "reviewId": 100000001,
  "companyId": 12345,
  "url": "https://www.glassdoor.com/Reviews/Employee-Review-E12345_RVW100000001.htm",
  "rating": 5,
  "ratingCareerOpportunities": 4,
  "ratingCompensationAndBenefits": 5,
  "ratingWorkLifeBalance": 4,
  "ratingCultureAndValues": 5,
  "ratingSeniorLeadership": 4,
  "ratingDiversityAndInclusion": 5,
  "recommends": "positive",
  "approvesOfCeo": "positive",
  "businessOutlook": "positive",
  "helpfulCount": 12,
  "summary": "Great place to grow",
  "pros": "Strong benefits and supportive teams",
  "cons": "Fast pace can be demanding",
  "advice": "Keep investing in people",
  "jobTitle": "Software Engineer",
  "employmentStatus": "REGULAR",
  "isCurrentEmployee": true,
  "yearsAtCompany": 3,
  "location": "Anytown, United States",
  "featured": false,
  "reviewDate": "2026-06-01T12:00:00.000",
  "scrapedAt": "2026-06-01T12:30:00.000Z"
}
```

#### Sample company row

```json
{
  "type": "company",
  "companyId": 12345,
  "name": "Acme Co",
  "url": "https://www.glassdoor.com/Reviews/-E12345.htm",
  "logoUrl": "https://media.glassdoor.com/sqlm/12345/acme-co-squarelogo.png",
  "overallRating": 4.1,
  "reviewsCount": 2518,
  "salariesCount": 7449,
  "recommendToFriendPercent": 80,
  "ceoApprovalPercent": 85,
  "businessOutlookPercent": 78,
  "cultureRating": 3.9,
  "compensationRating": 4.6,
  "careerOpportunitiesRating": 3.7,
  "workLifeBalanceRating": 3.6,
  "seniorLeadershipRating": 3.5,
  "diversityRating": 4.1,
  "website": "www.example.com",
  "headquarters": "Anytown, United States",
  "size": "5001 to 10000 Employees",
  "industry": "Internet & Web Services",
  "sector": "Information Technology",
  "scrapedAt": "2026-06-01T12:30:00.000Z"
}
```

#### Key fields

- `rating` is the review's overall 1-5 star score. The six `rating*` sub-fields are 1-5 star category scores and are `null` when the reviewer did not rate that category.
- `recommends`, `approvesOfCeo`, and `businessOutlook` are `positive`, `negative`, or `neutral`, and are `null` when the reviewer left that signal blank.
- `overallRating` and the company sub-ratings are the company-wide averages shown on the profile.

### FAQ

**Is it free? How is it priced?**
You pay only for what you use under the actor's pricing shown on this page. There is no separate Glassdoor subscription and no per-run start fee to launch a run.

**Do I need a Glassdoor login or API key?**
No. The scraper works against public company pages, so you do not need an account, a password, or any API key.

**How many reviews can I get per company?**
As many as you set in `maxReviewsPerCompany`. Pages are walked automatically until your limit is reached or the company has no more reviews. Set a high value to pull the full review history of large companies.

**Can I scrape multiple companies in one run?**
Yes. Add as many entries to `companies` as you like, mixing names and company page links. The `concurrency` setting controls how many are processed at once.

**How fast is it?**
Each company warms a session and then pages through its reviews. A typical company returns its first 100 to 150 reviews within a minute. Larger limits and larger company lists take proportionally longer.

**What input does it accept, a name or a link?**
Both. A free-text company name is resolved to the best matching company, and a Glassdoor company or reviews page link is used directly.

**Why are some review fields empty?**
Glassdoor reviewers fill in different parts of a review. Sub-category ratings, the recommend / CEO / outlook signals, and advice are optional, so they are returned as `null` whenever the reviewer left them blank.

````

# Actor input Schema

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

Companies to scrape. Each entry is either a company name or a Glassdoor company page link. Names are resolved to the best matching company. Example: Acme Co, https://www.glassdoor.com/Overview/Working-at-Acme-Co-EI_IE12345.htm.
## `maxReviewsPerCompany` (type: `integer`):

Cap on reviews returned per company. Pages are walked until this is reached or the company runs out of reviews.
## `reviewsSort` (type: `string`):

Order reviews are returned in. Most recent first, or highest rated first.
## `includeCompanyProfile` (type: `boolean`):

When on, each company emits one profile record (overall rating, sub-ratings, CEO approval, recommend-to-friend, headquarters, size, industry) before its reviews.
## `concurrency` (type: `integer`):

How many companies to process in parallel.
## `proxyConfig` (type: `object`):

Proxy used for requests. Residential proxies are recommended for the most reliable results.

## Actor input object example

```json
{
  "companies": [
    "Netflix"
  ],
  "maxReviewsPerCompany": 100,
  "reviewsSort": "DATE",
  "includeCompanyProfile": true,
  "concurrency": 3,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
````

# 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": [
        "Netflix"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("goat255/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": ["Netflix"] }

# Run the Actor and wait for it to finish
run = client.actor("goat255/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": [
    "Netflix"
  ]
}' |
apify call goat255/glassdoor-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Glassdoor Scraper",
        "description": "Scrape Glassdoor company ratings and employee reviews without a login. Give it company names or page links and get the company profile (overall and sub-ratings, CEO approval, recommend rate) plus paginated employee reviews with pros, cons, advice, job title, and ratings.",
        "version": "0.1",
        "x-build-id": "EKTFZb0rUPNzQKBa4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/goat255~glassdoor-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-goat255-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/goat255~glassdoor-scraper/runs": {
            "post": {
                "operationId": "runs-sync-goat255-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/goat255~glassdoor-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-goat255-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": "Companies",
                        "type": "array",
                        "description": "Companies to scrape. Each entry is either a company name or a Glassdoor company page link. Names are resolved to the best matching company. Example: Acme Co, https://www.glassdoor.com/Overview/Working-at-Acme-Co-EI_IE12345.htm.",
                        "default": [
                            "__healthcheck__"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxReviewsPerCompany": {
                        "title": "Max reviews per company",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Cap on reviews returned per company. Pages are walked until this is reached or the company runs out of reviews.",
                        "default": 100
                    },
                    "reviewsSort": {
                        "title": "Reviews sort",
                        "enum": [
                            "DATE",
                            "RATING"
                        ],
                        "type": "string",
                        "description": "Order reviews are returned in. Most recent first, or highest rated first.",
                        "default": "DATE"
                    },
                    "includeCompanyProfile": {
                        "title": "Include a company profile row",
                        "type": "boolean",
                        "description": "When on, each company emits one profile record (overall rating, sub-ratings, CEO approval, recommend-to-friend, headquarters, size, industry) before its reviews.",
                        "default": true
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many companies to process in parallel.",
                        "default": 3
                    },
                    "proxyConfig": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used for requests. Residential proxies are recommended for the most reliable results.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
