# Glassdoor Scraper | Jobs Reviews Salaries API (`lentic_clockss/glassdoor-scraper`) Actor

Scrape Glassdoor jobs, reviews, salaries, interviews, benefits & company pages. Extract titles, employers, pay, ratings & URLs — Glassdoor API alternative for US, UK, DE, IN.

- **URL**: https://apify.com/lentic\_clockss/glassdoor-scraper.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## 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.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 — Jobs, Reviews, Salaries & Company Data

**Scrape Glassdoor job listings, company reviews, salaries, interviews, benefits, and employer pages — then download structured data as Excel, CSV, or JSON.**

This Actor is a practical **Glassdoor API alternative** for job market research, recruiting pipelines, salary benchmarking, and employer intelligence. Enter a job keyword (or an employer ID), pick a channel and market, and get clean Dataset rows with titles, companies, pay, ratings, locations, and direct Glassdoor URLs.

> **Worker URL is config, not code:** the Actor reads `WORKER_BASE_URL` from Actor environment variables (plus optional per-run `workerBaseUrl`). If you migrate the worker to a new host, update `WORKER_BASE_URL` (and `WORKER_AUTH` if the API key changes) in Apify Console — no Actor code change required. `WORKER_PROVIDES_PROXY=1` means the worker supplies its own `PROXY_URL`.

- Pull **Glassdoor jobs**, **employee reviews**, **salaries**, **interviews**, **benefits**, and **company overview** from [Glassdoor](https://www.glassdoor.com/)
- Cover **US, UK, Germany, and India** hosts (`us` / `uk` / `de` / `in`)
- Filter jobs by Easy Apply, remote, seniority, and sort
- Optionally enrich job search hits with **JobPosting** detail fields
- Export to **Excel / CSV / JSON**, or connect Make, n8n, Zapier, Python, or Apify MCP / API
- **Pay per event** — Actor start + each Dataset result; platform compute is included (you do not pay separate Apify usage)

---

### What does the Glassdoor Scraper do?

Glassdoor Scraper lets you **extract structured job and employer data from Glassdoor** without maintaining your own browser farm. Give it a keyword and location for jobs, or an employer ID for reviews / salaries / interviews / benefits, then start a run.

Under the hood, the Actor:

1. Validates your input (channel, market, keyword or employerId, filters)
2. Calls a managed Cloud Run worker that fetches Glassdoor pages with residential egress
3. Parses guest-visible HTML / JSON-LD / RSC payloads into normalized records
4. Pushes Dataset rows with preview fields (`name`, `type`, `status`, `country`, `authority`)
5. Writes `RUN_SUMMARY` (and `ERROR_SUMMARY` on failure) to the key-value store

You run it like any other Apify Actor — schedule it, call it from the API, or plug it into automations.

---

### What Glassdoor data can I extract?

| Data | Jobs | Reviews | Salaries | Interviews | Benefits | Company |
| --- | :---: | :---: | :---: | :---: | :---: | :---: |
| Job / review title | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Employer name / ID | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Location | ✅ | — | — | — | — | HQ when shown |
| Pay / salary band | ✅ | — | ✅ | — | — | — |
| Easy Apply / employment type | ✅ | — | — | — | — | — |
| Ratings / review text | ✅* | ✅ | — | — | ✅ | ✅ |
| Interview difficulty / experience | — | — | — | ✅ | — | — |
| Benefit categories | — | — | — | — | ✅ | — |
| Direct Glassdoor URL | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Market / authority | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |

\*Company rating on job cards when Glassdoor shows it.

Every row includes `contentDepth=guest_preview` (public / guest-visible content only — no login unlock).

---

### Why scrape Glassdoor?

Glassdoor combines a large job board with employer intelligence (reviews, pay, interviews, benefits). Teams scrape Glassdoor to:

- Build custom job databases for recruiting or lead gen
- Benchmark salaries by role, employer, and market
- Track hiring demand and competitor open roles
- Analyze company culture via reviews and interview feedback
- Compare benefits packages across employers
- Feed AI agents, CRM workflows, or enrichment pipelines

---

### More Actors like this

Looking for another **jobs / employer intelligence** scraper, or a specialized Actor outside Glassdoor? Use a dedicated Actor when one exists — structured fields, better coverage, usually lower cost. Use this Actor for **Glassdoor** jobs, reviews, salaries, interviews, benefits, and company pages.

#### Similar jobs & freelance Actors
- [LinkedIn Jobs Scraper](https://apify.com/lentic_clockss/linkedin-jobs-scraper)
- [Indeed Jobs Scraper](https://apify.com/lentic_clockss/indeed-jobs-scraper)
- [Upwork Jobs Scraper](https://apify.com/lentic_clockss/upwork-jobs-scraper)
- [Bayt Jobs Scraper](https://apify.com/lentic_clockss/bayt-scraper)
- [Fiverr Gigs Scraper](https://apify.com/lentic_clockss/fiverr-programming-tech-gigs-scraper)
- [Freelancer.com Scraper](https://apify.com/lentic_clockss/freelancer-scraper)
- [SEEK Jobs Scraper](https://apify.com/lentic_clockss/seek-scraper)
- [Himalayas Jobs Scraper](https://apify.com/lentic_clockss/himalayas-jobs-scraper)
- [Jobicy Remote Jobs Scraper](https://apify.com/lentic_clockss/jobicy-remote-jobs-scraper)
- [RemoteOK Jobs Scraper](https://apify.com/lentic_clockss/remoteok-all-jobs-scraper)

#### Prefer another specialized scraper?

**E-commerce**
- [Walmart Product Scraper](https://apify.com/lentic_clockss/walmart-scraper)
- [Amazon Search Scraper](https://apify.com/lentic_clockss/amazon-search-results-collector)
- [Shopee Search Scraper](https://apify.com/lentic_clockss/shopee-search-scraper)
- [Etsy Scraper](https://apify.com/lentic_clockss/etsy-scraper)
- [SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper)
- [Temu Product Scraper](https://apify.com/lentic_clockss/temu-scraper)
- [Target Product Scraper](https://apify.com/lentic_clockss/target-scraper)
- [Allegro Scraper](https://apify.com/lentic_clockss/allegro-scraper)

**Real Estate**
- [Zillow & Zumper Scraper](https://apify.com/lentic_clockss/us-real-estate-scraper)
- [Realtor.com Scraper](https://apify.com/lentic_clockss/realtor-com-scraper)
- [Apartments.com Rental Scraper](https://apify.com/lentic_clockss/apartments-com-rental-scraper)
- [Rightmove Scraper](https://apify.com/lentic_clockss/rightmove-property-scraper)
- [Idealista Scraper](https://apify.com/lentic_clockss/idealista-scraper)
- [realestate.com.au Scraper](https://apify.com/lentic_clockss/realestate-com-au-scraper)

**Travel & Stays**
- [Booking.com Hotels Scraper](https://apify.com/lentic_clockss/booking-hotels-scraper)
- [Airbnb Listings Scraper](https://apify.com/lentic_clockss/airbnb-listings-scraper)
- [Expedia Scraper](https://apify.com/lentic_clockss/expedia-scraper)
- [TripAdvisor Scraper](https://apify.com/lentic_clockss/tripadvisor-scraper)

**Social & Content**
- [YouTube Research Scraper](https://apify.com/lentic_clockss/youtube-research-scraper)
- [TikTok Scraper](https://apify.com/lentic_clockss/tiktok-scraper)
- [Reddit Scraper](https://apify.com/lentic_clockss/reddit-scraper)
- [YouTube Shorts Scraper](https://apify.com/lentic_clockss/youtube-shorts-scraper)

**Ads Intelligence**
- [Facebook Ad Library Scraper](https://apify.com/lentic_clockss/facebook-ad-library-scraper)
- [TikTok Ads Scraper](https://apify.com/lentic_clockss/tiktok-ads-top-ads-actor)

**Local & Maps**
- [Google Maps Scraper](https://apify.com/lentic_clockss/google-maps-scraper)

**General Tools**
- [Stealth Web Scraper](https://apify.com/lentic_clockss/stealth-web-scraper)
- [Email Risk Validator](https://apify.com/lentic_clockss/email-risk-validator)
- [Phone Number Intelligence](https://apify.com/lentic_clockss/phone-number-intelligence)

→ See the full catalog in [Related Actors](#related-actors) below, or browse [apify.com/lentic_clockss](https://apify.com/lentic_clockss).

---

### How to scrape Glassdoor (no code required)

1. Create a free [Apify](https://apify.com/) account
2. Open [Glassdoor Scraper](https://apify.com/lentic_clockss/glassdoor-scraper)
3. Choose a **channel** (`jobs`, `reviews`, `salaries`, …)
4. For jobs: enter a **keyword** and **location**; for employer tabs: enter **employerId** + **companyName** (correct casing, e.g. `Google`)
5. Pick a **market** (`us` / `uk` / `de` / `in`)
6. Click **Start** and download the Dataset as JSON, CSV, Excel, or JSONL

Start with `maxResults: 5–10` to verify the query, then scale up.

---

### How much does it cost to scrape Glassdoor?

This Actor uses **pay-per-event** pricing. You are charged for:

| Event | Price |
| --- | --- |
| Actor Start (`apify-actor-start`) | **$0.005** per start |
| Result (`apify-default-dataset-item`) | **$3.00 / 1,000** results (**$0.003** each) |

**Platform usage costs are included** — you do **not** pay separate Apify compute/proxy usage for this Actor on top of the event prices above.

#### Example cost estimates

| Results collected | Approx. event cost* |
| --- | ---: |
| 100 | ~$0.31 |
| 1,000 | ~$3.01 |
| 10,000 | ~$30.01 |

\*Assumes one Actor start at default memory billing for start events, plus `$0.003` per Dataset item. Exact start billing can scale with allocated memory (one start event per GB, minimum one).

Free Apify trial credit can cover a small test run — try `maxResults: 5` first.

#### Free Apify plan limits (set by this Actor's developer)

| Limit | Free Apify plan | Paid Apify plan |
| --- | --- | --- |
| Runs of this Actor | **10 runs total** | Unlimited |
| Results per run | **Up to 200** (schema max) | Up to 200 |

When the run cap is hit, the run finishes with a clear status message (`FREE_TIER_LIMIT`) — not an Apify platform error. Upgrade to a paid Apify plan for unlimited runs.

---

### Input

Open the **Input** tab for the full form. Common fields:

| Field | Description |
| --- | --- |
| `channel` | `jobs` / `company` / `reviews` / `salaries` / `interviews` / `benefits` / `company_jobs` |
| `keyword` | Job search keyword (jobs channel) |
| `location` | City, region, or country label |
| `market` | `us`, `uk`, `de`, or `in` |
| `employerId` | Glassdoor employer id (e.g. `9079` for Google) |
| `companyName` | Employer name for URL construction — **preserve casing** (`Google`, not `google`) |
| `companyUrl` | Optional tab URL instead of employerId |
| `maxResults` | Cap on Dataset rows (1–200). Free plan: also **10 total runs** of this Actor |
| `maxPages` | Jobs: sort/seniority variants; Reviews: guest `?page=N` |
| `easyApply` / `remote` / `seniority` / `sortBy` | Jobs SERP filters |
| `enrichDetails` | After jobs SERP, fetch Job LDP JSON-LD fields |
| `detailUrls` / `jobListingIds` | Scrape specific job detail pages |
| `jobTitle` | Optional salaries filter |
| `failover` | Worker retries once with a fresh proxy session on empty/hard failure (default true) |
| `workerBaseUrl` | Optional per-run override of Actor env `WORKER_BASE_URL` |

#### Example: scrape Glassdoor jobs

```json
{
  "channel": "jobs",
  "keyword": "software engineer",
  "location": "United States",
  "market": "us",
  "maxResults": 20,
  "maxPages": 2,
  "easyApply": false,
  "remote": false
}
````

#### Example: scrape Glassdoor company reviews

```json
{
  "channel": "reviews",
  "employerId": "9079",
  "companyName": "Google",
  "market": "us",
  "maxResults": 20
}
```

#### Example: scrape Glassdoor salaries

```json
{
  "channel": "salaries",
  "employerId": "9079",
  "companyName": "Google",
  "market": "us",
  "maxResults": 10
}
```

#### Example: job detail URLs

```json
{
  "detailUrls": [
    "https://www.glassdoor.com/job-listing/software-engineer.htm?jl=1010204489922"
  ],
  "maxResults": 5
}
```

***

### Output sample

Each Dataset item looks like this (jobs channel):

```json
{
  "dataType": "job_serp_item",
  "jobListingId": "1010204489922",
  "title": "Software Engineer",
  "name": "Software Engineer",
  "type": "job",
  "status": "open",
  "country": "United States",
  "authority": "glassdoor.com",
  "brand": "glassdoor",
  "channel": "jobs",
  "url": "https://www.glassdoor.com/job-listing/...?jl=1010204489922",
  "easyApply": true,
  "employer": { "name": "Example Corp", "rating": 4.2 },
  "location": { "name": "Austin, TX", "country": "United States" },
  "pay": { "display": "$120K - $180K", "source": "estimate" },
  "contentDepth": "guest_preview",
  "scrapedAt": "2026-07-23T01:22:44.251037+00:00"
}
```

Reviews, salaries, interviews, and benefits use the same preview fields plus channel-specific attributes (`reviewId`, `salaryCount`, interview metrics, benefit categories, etc.).

Diagnostics live in the key-value store as `RUN_SUMMARY`, `INPUT_ECHO`, and `ERROR_SUMMARY`.

***

### How many Glassdoor results can this scraper return?

Throughput depends on channel, market, keyword popularity, and Glassdoor edge behavior.

- **Jobs**: guest first HTML batch (typically tens of cards); `maxPages` > 1 diversifies via sort/seniority variants (Show-more infinite scroll is not clicked)
- **Reviews / interviews / benefits / company jobs**: guest-visible samples and aggregates from the first page (and guest `?page=N` where applicable)
- **Salaries**: employer `/Salary/*` pages are often blocked at the edge; the worker falls back to salary stats embedded in guest Reviews payloads

Results can vary day to day because Glassdoor pages are dynamic. A short test run is the best way to estimate volume for your query.

***

### Which Glassdoor markets are supported?

| Market | Host |
| --- | --- |
| `us` | www.glassdoor.com |
| `uk` | www.glassdoor.co.uk |
| `de` | www.glassdoor.de |
| `in` | www.glassdoor.co.in |

Optional `domain` can override the host when needed.

***

### Glassdoor channels explained

| Channel | What you get |
| --- | --- |
| `jobs` | Jobs SERP cards by keyword / location |
| `company` | Employer overview (rating, facts, tab URLs) |
| `reviews` | Employee review samples + aggregate rating |
| `salaries` | Salary aggregate / bands (guest depth) |
| `interviews` | Interview aggregate + detail cards |
| `benefits` | Benefit category cards |
| `company_jobs` | Open roles on the employer Jobs tab |

***

### Can I use this as a Glassdoor API alternative?

Yes — for many job-search and employer-research workflows. Glassdoor does not offer a public bulk jobs/reviews API comparable to Store scrapers, so teams use Actors like this to collect:

- Searchable Glassdoor job listings as structured data
- Employer reviews, pay signals, interview feedback, and benefits
- Multi-market coverage without operating your own unlock stack

Always respect Glassdoor’s terms, robots rules, and applicable laws. Do not use scraped data to spam applicants or bypass apply flows. This Actor does not click Apply or submit reviews.

***

### FAQ

#### How do I scrape Glassdoor jobs by location?

Set `channel` to `jobs`, provide `keyword` and `location`, and choose `market`. Add `remote: true` or `easyApply: true` when needed.

#### How do I scrape Glassdoor reviews for a company?

Set `channel` to `reviews`, pass `employerId` (numeric) and `companyName` with correct casing (e.g. `Google`), then start the run.

#### Why must companyName preserve casing?

Glassdoor employer URLs are case-sensitive (`Google-Reviews-E9079.htm` works; `google-Reviews-…` often 404s).

#### Does this unlock signed-in Glassdoor content?

No. Rows are marked `contentDepth=guest_preview`. Login-gated “unlock all” depth is out of scope.

#### What happens if Glassdoor returns Security / 403?

The worker retries with residential session rotation and, for some channels (overview / salaries), falls back to guest-stable pages such as Reviews. Check `RUN_SUMMARY.warnings` for details. Partial datasets may still be returned.

#### Can I schedule recurring Glassdoor scrapes?

Yes. Use Apify Schedules or the API/client to run the Actor on a cron and append or replace datasets over time.

#### What are the free Apify plan limits?

Yes — free Apify plan users get **10 runs** of this Actor and **up to 200 results per run**. These limits are set by the Actor developer (not Apify). When you hit the run cap, the run finishes with a clear status message (`FREE_TIER_LIMIT`) — it is not a platform bug. Upgrade to a paid Apify plan for unlimited runs.

#### Why does channel=company use the Reviews page?

Glassdoor’s direct `/Overview/` URLs are usually Security-blocked for guest traffic. The worker extracts overview fields from the guest Reviews page instead and marks `acquisitionPath` accordingly.

#### Do I need a Glassdoor API key?

No. The Actor scrapes public Glassdoor pages through a managed worker. You only need the Actor’s configured `WORKER_API_KEY` secret (already set for Store runs).

***

### Integrations

Use the official [JavaScript client](https://docs.apify.com/api/client/js), [Python client](https://docs.apify.com/api/client/python), [Apify CLI](https://docs.apify.com/cli), REST API, or [Apify MCP](https://docs.apify.com/platform/integrations/mcp) to start runs and read Dataset items from your stack (Make, n8n, Zapier, LangChain, custom backends).

***

### Related Actors

All **77** public Actors from \[[lentic\_clockss](https://apify.com/lentic_clockss)]. Click a name to open the Store detail page.

#### Jobs & Freelance

- [LinkedIn Jobs Scraper](https://apify.com/lentic_clockss/linkedin-jobs-scraper)
- [Bayt Jobs Scraper](https://apify.com/lentic_clockss/bayt-scraper)
- [Fiverr Gigs Scraper](https://apify.com/lentic_clockss/fiverr-programming-tech-gigs-scraper)
- [Freelancer.com Scraper](https://apify.com/lentic_clockss/freelancer-scraper)
- [Glassdoor Scraper](https://apify.com/lentic_clockss/glassdoor-scraper)
- [Himalayas Jobs Scraper](https://apify.com/lentic_clockss/himalayas-jobs-scraper)
- [Indeed Jobs Scraper](https://apify.com/lentic_clockss/indeed-jobs-scraper)
- [Jobicy Remote Jobs Scraper](https://apify.com/lentic_clockss/jobicy-remote-jobs-scraper)
- [RemoteOK Jobs Scraper](https://apify.com/lentic_clockss/remoteok-all-jobs-scraper)
- [SEEK Jobs Scraper](https://apify.com/lentic_clockss/seek-scraper)
- [Upwork Jobs Scraper](https://apify.com/lentic_clockss/upwork-jobs-scraper)

#### Real Estate

- [Zillow & Zumper Scraper](https://apify.com/lentic_clockss/us-real-estate-scraper)
- [Realtor.com Scraper](https://apify.com/lentic_clockss/realtor-com-scraper)
- [99.co Scraper](https://apify.com/lentic_clockss/ninetynine-co-sg-scraper)
- [Realtor.com Agents Scraper](https://apify.com/lentic_clockss/realtor-com-agents-scraper)
- [Apartments.com Rental Scraper](https://apify.com/lentic_clockss/apartments-com-rental-scraper)
- [Bayut Scraper](https://apify.com/lentic_clockss/bayut-uae-scraper)
- [Craigslist Housing Scraper](https://apify.com/lentic_clockss/craigslist-housing-scraper)
- [Daft.ie Scraper](https://apify.com/lentic_clockss/daft-property-scraper)
- [Dot Property Scraper](https://apify.com/lentic_clockss/dot-property-th-scraper)
- [FINN.no Scraper](https://apify.com/lentic_clockss/finn-scraper)
- [Funda Scraper](https://apify.com/lentic_clockss/funda-scraper)
- [Hepsiemlak Scraper](https://apify.com/lentic_clockss/hepsiemlak-scraper)
- [Idealista Scraper](https://apify.com/lentic_clockss/idealista-scraper)
- [Immobiliare.it Scraper](https://apify.com/lentic_clockss/immobiliare-property-scraper)
- [ImmoScout24 Scraper](https://apify.com/lentic_clockss/immobilienscout24-scraper)
- [Naver Land Scraper](https://apify.com/lentic_clockss/naver-land-scraper)
- [OpenSooq Scraper](https://apify.com/lentic_clockss/opensooq-real-estate-scraper)
- [Otodom Scraper](https://apify.com/lentic_clockss/otodom-scraper)
- [Property Finder Scraper](https://apify.com/lentic_clockss/property-finder-uae-scraper)
- [PropertyGuru Scraper](https://apify.com/lentic_clockss/propertyguru-sg-scraper)
- [realestate.com.au Scraper](https://apify.com/lentic_clockss/realestate-com-au-scraper)
- [Realtor.ca Scraper](https://apify.com/lentic_clockss/realtor-ca-scraper)
- [Rightmove Scraper](https://apify.com/lentic_clockss/rightmove-property-scraper)
- [SeLoger Scraper](https://apify.com/lentic_clockss/seloger-property-scraper)
- [SUUMO Scraper](https://apify.com/lentic_clockss/suumo-property-scraper)
- [Zillow Group Scraper](https://apify.com/lentic_clockss/zillow-group-scraper)

#### E-commerce

- [Shopee Search Scraper](https://apify.com/lentic_clockss/shopee-search-scraper)
- [E-commerce Scraper](https://apify.com/lentic_clockss/ecommerce-scraper)
- [1688 Global Product Search Scraper](https://apify.com/lentic_clockss/1688-global-scraper)
- [Allegro Scraper](https://apify.com/lentic_clockss/allegro-scraper)
- [Amazon Search Scraper](https://apify.com/lentic_clockss/amazon-search-results-collector)
- [ASOS Product Scraper](https://apify.com/lentic_clockss/asos-scraper)
- [Cdiscount Product Scraper](https://apify.com/lentic_clockss/cdiscount-scraper)
- [Costco Product Scraper](https://apify.com/lentic_clockss/costco-scraper)
- [Coupang Product Scraper](https://apify.com/lentic_clockss/coupang-scraper)
- [Etsy Scraper](https://apify.com/lentic_clockss/etsy-scraper)
- [Lazada Scraper](https://apify.com/lentic_clockss/lazada-ph-search-results-collector)
- [MercadoLibre Scraper](https://apify.com/lentic_clockss/mercadolibre-scraper)
- [Mercari Japan Scraper](https://apify.com/lentic_clockss/mercari-scraper)
- [Rakuten Japan Scraper](https://apify.com/lentic_clockss/rakuten-scraper)
- [SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper)
- [Target Product Scraper](https://apify.com/lentic_clockss/target-scraper)
- [Temu Product Scraper](https://apify.com/lentic_clockss/temu-scraper)
- [Walmart Product Scraper](https://apify.com/lentic_clockss/walmart-scraper)

#### Travel & Stays

- [Booking.com & Airbnb Scraper](https://apify.com/lentic_clockss/booking-airbnb-scraper)
- [Agoda Scraper](https://apify.com/lentic_clockss/agoda-scraper)
- [Airbnb Listings Scraper](https://apify.com/lentic_clockss/airbnb-listings-scraper)
- [Booking.com Hotels Scraper](https://apify.com/lentic_clockss/booking-hotels-scraper)
- [Despegar Scraper](https://apify.com/lentic_clockss/despegar-scraper)
- [Expedia Scraper](https://apify.com/lentic_clockss/expedia-scraper)
- [Traveloka Scraper](https://apify.com/lentic_clockss/traveloka-scraper)
- [Travelstart Flights Scraper](https://apify.com/lentic_clockss/travelstart-scraper)
- [Trip.com Scraper](https://apify.com/lentic_clockss/trip-com-scraper)
- [TripAdvisor Scraper](https://apify.com/lentic_clockss/tripadvisor-scraper)

#### Social & Content

- [TikTok Scraper](https://apify.com/lentic_clockss/tiktok-scraper)
- [Reddit Scraper](https://apify.com/lentic_clockss/reddit-scraper)
- [YouTube Shorts Scraper](https://apify.com/lentic_clockss/youtube-shorts-scraper)
- [YouTube Research Scraper](https://apify.com/lentic_clockss/youtube-research-scraper)
- [Hacker News Scraper](https://apify.com/lentic_clockss/hacker-news-scraper)

#### Ads Intelligence

- [Facebook Ad Library Scraper](https://apify.com/lentic_clockss/facebook-ad-library-scraper)
- [Google Ads Transparency VN](https://apify.com/lentic_clockss/google-ads-transparency-center-vn)
- [TikTok Ads Scraper](https://apify.com/lentic_clockss/tiktok-ads-top-ads-actor)

#### Local & Maps

- [Google Maps Scraper](https://apify.com/lentic_clockss/google-maps-scraper)

#### General Tools

- [Stealth Web Scraper](https://apify.com/lentic_clockss/stealth-web-scraper)
- [Email Risk Validator](https://apify.com/lentic_clockss/email-risk-validator)
- [Phone Number Intelligence](https://apify.com/lentic_clockss/phone-number-intelligence)

→ Browse the full profile: [apify.com/lentic\_clockss](https://apify.com/lentic_clockss)

# Actor input Schema

## `keyword` (type: `string`):

Search keyword for Jobs SERP (channel=jobs).

## `location` (type: `string`):

Location filter (e.g. United States, Austin, TX).

## `channel` (type: `string`):

jobs SERP or employer intelligence tabs (guest preview only).

## `market` (type: `string`):

Glassdoor host market.

## `domain` (type: `string`):

Optional host override (e.g. www.glassdoor.co.uk).

## `employerId` (type: `string`):

Required for employer channels (e.g. 9079 for Google).

## `companyName` (type: `string`):

Used in employer tab URL construction (preserve casing, e.g. Google).

## `companyUrl` (type: `string`):

Optional Glassdoor Overview / tab URL instead of employerId.

## `jobTitle` (type: `string`):

Optional filter for salaries channel.

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

Maximum results this run (1–200). Free Apify plan users: also limited to 10 total runs of this Actor (Actor developer policy).

## `maxPages` (type: `integer`):

Jobs: sort/seniority variants. Reviews: guest ?page=N (often same set).

## `detailUrls` (type: `array`):

When set, Actor calls /v1/listings for these Job LDP URLs.

## `jobListingIds` (type: `array`):

Alternative to detailUrls — Glassdoor jl= IDs.

## `enrichDetails` (type: `boolean`):

After SERP, fetch Job LDP JSON-LD for each result.

## `easyApply` (type: `boolean`):

When true, request Easy Apply filter on Jobs SERP.

## `remote` (type: `boolean`):

Use remote- keyword URL prefix for Jobs SERP.

## `seniority` (type: `string`):

Optional Jobs SERP path prefix (senior/junior/lead/staff/principal).

## `sortBy` (type: `string`):

Optional Glassdoor sortBy param (e.g. DD for date).

## `includeRaw` (type: `boolean`):

Attach upstream parse fragments under raw.

## `failover` (type: `boolean`):

Ask worker to retry / rotate on transient failures.

## `workerBaseUrl` (type: `string`):

Override the Cloud Run worker origin for this run. Defaults to Actor env WORKER\_BASE\_URL. Production migrations should update WORKER\_BASE\_URL in Actor settings (no code change).

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

Optional. By default the Cloud Run worker uses its own durable PROXY\_URL; the Actor only sends proxySession for sticky-IP rotation on Security/empty (up to 2 retries). Pass a durable proxyUrl in input only if you need to override the worker proxy. Run-scoped apify\_actor\_run passwords are not forwarded.

## Actor input object example

```json
{
  "keyword": "software engineer",
  "location": "United States",
  "channel": "jobs",
  "market": "us",
  "domain": "",
  "employerId": "",
  "companyName": "",
  "companyUrl": "",
  "jobTitle": "",
  "maxResults": 20,
  "maxPages": 1,
  "detailUrls": [],
  "jobListingIds": [],
  "enrichDetails": false,
  "easyApply": false,
  "remote": false,
  "seniority": "",
  "sortBy": "",
  "includeRaw": false,
  "failover": true,
  "workerBaseUrl": "",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

Normalized Glassdoor records.

## `runSummary` (type: `string`):

Run outcome summary.

## `inputEcho` (type: `string`):

Normalized non-secret input.

## `errorSummary` (type: `string`):

Structured failure details.

# 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 = {
    "keyword": "software engineer",
    "location": "United States",
    "channel": "jobs",
    "market": "us",
    "domain": "",
    "employerId": "",
    "companyName": "",
    "companyUrl": "",
    "jobTitle": "",
    "maxResults": 20,
    "maxPages": 1,
    "detailUrls": [],
    "jobListingIds": [],
    "enrichDetails": false,
    "easyApply": false,
    "remote": false,
    "seniority": "",
    "sortBy": "",
    "includeRaw": false,
    "failover": true,
    "workerBaseUrl": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/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 = {
    "keyword": "software engineer",
    "location": "United States",
    "channel": "jobs",
    "market": "us",
    "domain": "",
    "employerId": "",
    "companyName": "",
    "companyUrl": "",
    "jobTitle": "",
    "maxResults": 20,
    "maxPages": 1,
    "detailUrls": [],
    "jobListingIds": [],
    "enrichDetails": False,
    "easyApply": False,
    "remote": False,
    "seniority": "",
    "sortBy": "",
    "includeRaw": False,
    "failover": True,
    "workerBaseUrl": "",
}

# Run the Actor and wait for it to finish
run = client.actor("lentic_clockss/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 '{
  "keyword": "software engineer",
  "location": "United States",
  "channel": "jobs",
  "market": "us",
  "domain": "",
  "employerId": "",
  "companyName": "",
  "companyUrl": "",
  "jobTitle": "",
  "maxResults": 20,
  "maxPages": 1,
  "detailUrls": [],
  "jobListingIds": [],
  "enrichDetails": false,
  "easyApply": false,
  "remote": false,
  "seniority": "",
  "sortBy": "",
  "includeRaw": false,
  "failover": true,
  "workerBaseUrl": ""
}' |
apify call lentic_clockss/glassdoor-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Glassdoor Scraper | Jobs Reviews Salaries API",
        "description": "Scrape Glassdoor jobs, reviews, salaries, interviews, benefits & company pages. Extract titles, employers, pay, ratings & URLs — Glassdoor API alternative for US, UK, DE, IN.",
        "version": "0.7",
        "x-build-id": "SVHWVoBW6dIZhKiuz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lentic_clockss~glassdoor-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lentic_clockss-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/lentic_clockss~glassdoor-scraper/runs": {
            "post": {
                "operationId": "runs-sync-lentic_clockss-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/lentic_clockss~glassdoor-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-lentic_clockss-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": {
                    "keyword": {
                        "title": "Job keyword",
                        "maxLength": 160,
                        "type": "string",
                        "description": "Search keyword for Jobs SERP (channel=jobs).",
                        "default": "software engineer"
                    },
                    "location": {
                        "title": "Location",
                        "maxLength": 160,
                        "type": "string",
                        "description": "Location filter (e.g. United States, Austin, TX).",
                        "default": "United States"
                    },
                    "channel": {
                        "title": "Channel",
                        "enum": [
                            "jobs",
                            "company",
                            "reviews",
                            "salaries",
                            "interviews",
                            "benefits",
                            "company_jobs"
                        ],
                        "type": "string",
                        "description": "jobs SERP or employer intelligence tabs (guest preview only).",
                        "default": "jobs"
                    },
                    "market": {
                        "title": "Market",
                        "enum": [
                            "us",
                            "uk",
                            "de",
                            "in"
                        ],
                        "type": "string",
                        "description": "Glassdoor host market.",
                        "default": "us"
                    },
                    "domain": {
                        "title": "Domain override",
                        "type": "string",
                        "description": "Optional host override (e.g. www.glassdoor.co.uk).",
                        "default": ""
                    },
                    "employerId": {
                        "title": "Employer ID",
                        "type": "string",
                        "description": "Required for employer channels (e.g. 9079 for Google).",
                        "default": ""
                    },
                    "companyName": {
                        "title": "Company name",
                        "type": "string",
                        "description": "Used in employer tab URL construction (preserve casing, e.g. Google).",
                        "default": ""
                    },
                    "companyUrl": {
                        "title": "Company URL",
                        "type": "string",
                        "description": "Optional Glassdoor Overview / tab URL instead of employerId.",
                        "default": ""
                    },
                    "jobTitle": {
                        "title": "Job title filter",
                        "type": "string",
                        "description": "Optional filter for salaries channel.",
                        "default": ""
                    },
                    "maxResults": {
                        "title": "Max results (max 200; free users capped at 200/run)",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum results this run (1–200). Free Apify plan users: also limited to 10 total runs of this Actor (Actor developer policy).",
                        "default": 20
                    },
                    "maxPages": {
                        "title": "Max pages / variants",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Jobs: sort/seniority variants. Reviews: guest ?page=N (often same set).",
                        "default": 1
                    },
                    "detailUrls": {
                        "title": "Job detail URLs",
                        "type": "array",
                        "description": "When set, Actor calls /v1/listings for these Job LDP URLs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "jobListingIds": {
                        "title": "Job listing IDs",
                        "type": "array",
                        "description": "Alternative to detailUrls — Glassdoor jl= IDs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "enrichDetails": {
                        "title": "Enrich job details",
                        "type": "boolean",
                        "description": "After SERP, fetch Job LDP JSON-LD for each result.",
                        "default": false
                    },
                    "easyApply": {
                        "title": "Easy Apply only",
                        "type": "boolean",
                        "description": "When true, request Easy Apply filter on Jobs SERP.",
                        "default": false
                    },
                    "remote": {
                        "title": "Remote only",
                        "type": "boolean",
                        "description": "Use remote- keyword URL prefix for Jobs SERP.",
                        "default": false
                    },
                    "seniority": {
                        "title": "Seniority prefix",
                        "enum": [
                            "",
                            "senior",
                            "junior",
                            "lead",
                            "staff",
                            "principal"
                        ],
                        "type": "string",
                        "description": "Optional Jobs SERP path prefix (senior/junior/lead/staff/principal).",
                        "default": ""
                    },
                    "sortBy": {
                        "title": "Sort",
                        "type": "string",
                        "description": "Optional Glassdoor sortBy param (e.g. DD for date).",
                        "default": ""
                    },
                    "includeRaw": {
                        "title": "Include raw",
                        "type": "boolean",
                        "description": "Attach upstream parse fragments under raw.",
                        "default": false
                    },
                    "failover": {
                        "title": "Failover",
                        "type": "boolean",
                        "description": "Ask worker to retry / rotate on transient failures.",
                        "default": true
                    },
                    "workerBaseUrl": {
                        "title": "Worker base URL (optional)",
                        "type": "string",
                        "description": "Override the Cloud Run worker origin for this run. Defaults to Actor env WORKER_BASE_URL. Production migrations should update WORKER_BASE_URL in Actor settings (no code change).",
                        "default": ""
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. By default the Cloud Run worker uses its own durable PROXY_URL; the Actor only sends proxySession for sticky-IP rotation on Security/empty (up to 2 retries). Pass a durable proxyUrl in input only if you need to override the worker proxy. Run-scoped apify_actor_run passwords are not forwarded.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
