# Glassdoor Company Intelligence Scraper (`axlymxp/glassdoor-company-intelligence-scraper`) Actor

Scrape Glassdoor company profiles — full ratings breakdown (career, comp, culture, WLB, D\&I, CEO, recommend %), star distribution, firmographics (HQ, industry, size, revenue, website, founded) and optional full reviews (no 200-cap). Reliable mobile-API backend. Pay only for the results you get.

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

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Company Intelligence Scraper

Turn a list of company names into **rich company intelligence** as clean JSON —
the full Glassdoor ratings breakdown, 1–5 star distribution, firmographics, and
Glassdoor review/salary/job counts — with an option to pull the employer's **full
review set (no 200-cap)**.

Built on Glassdoor's **mobile API**, which is anonymous and has no anti-bot wall,
so runs are reliable and don't break when Glassdoor rotates its web protection.

### Who it's for

- **Sales intelligence & lead-gen** — enrich target-account lists with employer
  size, industry, HQ, ratings and hiring signals (open-job counts).
- **Competitive & talent intelligence** — benchmark employer reputation and
  employee sentiment against peers.
- **Investors & analysts** — culture and employer-quality signals for diligence.
- **PropTech / HR-SaaS developers** — a stable company + reviews schema for
  products, dashboards and webhooks.

### What you get — output fields

Rows carry a `record_type` of `company` or `review`.

**Company row**

| Field | Type | Description |
| ----- | ---- | ----------- |
| `company_id` / `company_name` / `company_full_name` | int / string | Glassdoor employer id and names |
| `website` / `headquarters` / `size` / `revenue` / `type` / `year_founded` | string/int | Firmographics |
| `industry` / `sector` / `industry_id` | string / int | Industry classification |
| `review_count` / `salary_count` / `job_count` | int | Glassdoor content counts |
| `rating_overall` | number | Overall rating (1–5) |
| `rating_career_opportunities` / `_comp_and_benefits` / `_culture_and_values` / `_diversity_and_inclusion` / `_senior_management` / `_work_life_balance` | number | Sub-ratings (1–5) |
| `recommend_to_friend_pct` / `ceo_rating_pct` | number | Approval fractions (0–1) |
| `ceo_name` / `ceo_title` | string | Rated CEO |
| `reviews_five_star` … `reviews_one_star` | int | 1–5 star distribution |
| `reviews_url` / `salaries_url` / `jobs_url` | string | Glassdoor page links |

**Review row** (when `includeReviews` is on)

| Field | Type | Description |
| ----- | ---- | ----------- |
| `review_id` / `review_datetime` | int / string | Review id and timestamp |
| `summary` / `pros` / `cons` / `advice` | string | Review text |
| `job_title` / `location_name` / `is_current_job` / `length_of_employment` | mixed | Reviewer context |
| `rating_overall` + sub-ratings | number/string | Per-review ratings |
| `count_helpful` / `featured` / `has_employer_response` | mixed | Engagement signals |

### High-value use cases

1. **Account enrichment** — feed a CRM/lead list with employer size, industry,
   HQ, ratings and open-job counts for prioritization.
2. **Employer benchmarking** — compare sub-ratings and star distribution across a
   set of competitors in one run.
3. **Reputation monitoring** — schedule weekly pulls to track rating and
   sentiment drift; alert on new negative reviews.
4. **Reviews analysis** — pull the full review set (pros/cons/advice + sub-ratings)
   for NLP theme extraction and sentiment scoring.
5. **Diligence** — culture, work-life and leadership signals for investment or
   partnership evaluation.

### Input parameters

| Field | Type | Default | Description |
| ----- | ---- | ------- | ----------- |
| `companyNames` | array<string> | `["Salesforce"]` | Company names to resolve and scrape |
| `companyIds` | array<string> | — | Glassdoor employer ids (skip name resolution) |
| `maxCompaniesPerName` | integer | 1 | Employer matches to keep per name |
| `includeReviews` | boolean | false | Also emit one row per review |
| `maxReviewsPerCompany` | integer | 100 | Cap reviews per company |
| `reviewSort` | enum | RELEVANCE | `RELEVANCE`, `DATE`, `RATING_ASC` |

### Example input

```json
{
  "companyNames": ["Salesforce", "Google"],
  "maxCompaniesPerName": 1,
  "includeReviews": true,
  "maxReviewsPerCompany": 200
}
```

### Example output (company row)

```json
{
  "record_type": "company",
  "company_id": 11159,
  "company_name": "Salesforce",
  "industry": "Enterprise Software & Network Solutions",
  "size": "10000+ Employees",
  "revenue": "$10+ billion (USD)",
  "headquarters": "San Francisco, CA",
  "year_founded": 1999,
  "rating_overall": 4.0,
  "rating_work_life_balance": 3.9,
  "recommend_to_friend_pct": 0.79,
  "ceo_name": "Marc Benioff",
  "ceo_rating_pct": 0.78,
  "reviews_five_star": 4327,
  "reviews_one_star": 372,
  "review_count": 26478,
  "salary_count": 58707,
  "job_count": 1348,
  "scraped_at": "2026-09-09T02:40:00Z"
}
```

### Scheduling & integrations

- **Schedule** runs to track rating/sentiment drift over time.
- **Webhooks** on completion push new rows to your app, Make or Zapier.
- **Export** to JSON, CSV, Excel or Google Sheets, or use the dataset API.

### Use with AI assistants (MCP)

Apify Actors are callable from AI assistants via the Model Context Protocol, so an
agent can pull a live company profile on demand (e.g. "compare Glassdoor ratings
and CEO approval for Salesforce vs Workday"). Point your MCP client at this Actor
and pass the same input schema.

### FAQ

**Can I get all reviews?** Yes — enable `includeReviews`. Companies can have tens
of thousands of reviews (there is no 200-cap); `maxReviewsPerCompany` bounds how
many you pull per company.

**How do I target a company precisely?** Pass `companyIds` (the Glassdoor employer
id, the `E<id>` in a Glassdoor URL) to skip name resolution, or raise
`maxCompaniesPerName` to disambiguate similar names.

**How fresh is the data?** Live — every run queries Glassdoor at request time.

**Do I need a proxy?** Yes — use **Residential** proxy (the default). Glassdoor's
mobile API serves residential IPs only and blocks datacenter IPs, so runs without
residential proxy return no data. No login or credentials are needed.

**Is scraping this legal?** You are responsible for your use. The Actor collects
publicly available company information and reviews for research and analytics;
comply with Glassdoor's terms and applicable law, and review data-protection rules
before processing review text.

**Reliability?** The mobile API is a stable JSON/GraphQL backend with no Cloudflare
JS challenge, so this Actor does not break on web anti-bot rotations; transient
network errors are retried automatically. It does require Residential proxy (the
default) because the API blocks datacenter IPs.

# Actor input Schema

## `companyNames` (type: `array`):

Company names to look up, e.g. "Salesforce". Each is resolved to a Glassdoor employer profile.

## `companyIds` (type: `array`):

Glassdoor employer ids to scrape directly (skips name resolution). Found as "company\_id" in output rows or in a Glassdoor URL (E<id>).

## `maxCompaniesPerName` (type: `integer`):

How many employer matches to keep per company name (1 = best match only; increase for name disambiguation).

## `includeReviews` (type: `boolean`):

Also scrape the employer's reviews (pros, cons, advice, sub-ratings). Adds one dataset row per review. Off by default.

## `maxReviewsPerCompany` (type: `integer`):

When reviews are enabled, cap reviews scraped per company (companies can have tens of thousands).

## `reviewSort` (type: `string`):

Order reviews are returned in.

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

Proxy used to reach Glassdoor. Glassdoor's mobile API blocks datacenter IPs, so RESIDENTIAL proxy is required — keep the default. Runs from unproxied datacenter IPs return no data.

## Actor input object example

```json
{
  "companyNames": [
    "Salesforce",
    "Google"
  ],
  "companyIds": [
    "11159",
    "9079"
  ],
  "maxCompaniesPerName": 1,
  "includeReviews": false,
  "maxReviewsPerCompany": 100,
  "reviewSort": "RELEVANCE",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `companies` (type: `string`):

All scraped company and review rows in the default dataset.

# 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 = {
    "companyNames": [
        "Salesforce"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/glassdoor-company-intelligence-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 = {
    "companyNames": ["Salesforce"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/glassdoor-company-intelligence-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 '{
  "companyNames": [
    "Salesforce"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call axlymxp/glassdoor-company-intelligence-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axlymxp/glassdoor-company-intelligence-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/dtHVkhTdesxya3y7n/builds/hAiUViLaaDbR5RfOM/openapi.json
