# Glassdoor Jobs Universal Scraper (`scrapifier/glassdoor-jobs-universal-scraper`) Actor

💼 Scrape Glassdoor job listings by keyword + location or by URL. Get title, company + rating, location, salary estimate, posted date, easy-apply, job type & description snippet — clean structured data. No login and no proxy needed.

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

## Pricing

from $0.41 / 1,000 results

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

Learn more: https://docs.apify.com/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.

- **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 Jobs Scraper

Extract job listings from Glassdoor by keyword + location or by URL — and export them as structured JSON, CSV or Excel. No code required.

[![Apify Actor](https://apify.com/actor-badge?actor=scrapifier/glassdoor-jobs-universal-scraper)](https://apify.com/scrapifier/glassdoor-jobs-universal-scraper)

### 📋 Contents

- [Overview](#-overview)
- [How to use](#-how-to-use)
- [Input](#-input)
- [Output](#-output)
- [Optional: scrape logged in](#-optional-scrape-logged-in)
- [Pricing](#-pricing)
- [Proxy and performance](#-proxy-and-performance)
- [Integrations](#-integrations)
- [Related Actors](#-related-actors)
- [FAQ](#-faq)
- [Support](#-support)

### 📖 Overview

Collect job listings from Glassdoor by typing a keyword and location, or by pasting a Glassdoor jobs URL. For each job you get the title, hiring **company and its Glassdoor rating**, location, **salary estimate**, posted date, easy-apply flag, job type and a short description — plus a direct link.

- Search by **keyword + location**, or paste any Glassdoor jobs URL.
- Works on any Glassdoor country site — pick the market you want.
- Filter by **date posted, job type, remote-only** and minimum company rating.
- Exports to JSON, CSV, Excel, or the Apify dataset API.
- Pay per result — no subscription.

### 🚀 How to use

1. Type a **keyword** (e.g. `data engineer`) and a **location** (e.g. `Paris`), and pick the Glassdoor country — **or** paste Glassdoor jobs URLs into **Glassdoor jobs URLs**.
2. Optionally set filters: **date posted**, **job type**, **remote only**, **minimum company rating**.
3. Set **Max jobs per search** and start the run.
4. Download your data from the **Storage** tab, or fetch it from the API.

### 📥 Input

| Field | Key | Type | Default | Description |
|---|---|---|---|---|
| Job keyword / title | `keyword` | string | `data engineer` | What to search for. |
| Location | `location` | string | `France` | City, region or country. Empty = everywhere. |
| Glassdoor jobs URLs | `startUrls` | array | — | Paste Glassdoor jobs-search URLs (any country site). |
| Glassdoor domain | `country` | select | `www` | Which country site to search (for keyword + location). |
| Max jobs per search | `maxJobs` | integer | `100` | Jobs to collect per search. `0` = as many as available. |
| Posted within (days) | `datePosted` | integer | — | Only jobs posted within the last N days. |
| Job type | `jobType` | select | Any | Full-time · Part-time · Contract · Internship · Temporary · Apprenticeship. |
| Remote jobs only | `remoteOnly` | boolean | `false` | Only remote-friendly jobs. |
| Minimum company rating | `minRating` | select | Any | 3.0+ / 3.5+ / 4.0+. |
| Login cookies | `sessionCookies` | array | — | Optional — run as your logged-in account (see below). |
| Proxy configuration | `proxyConfiguration` | object | Off | Leave off (recommended). |

<details>
<summary>Example input</summary>

```json
{
  "keyword": "product manager",
  "location": "London",
  "country": "co.uk",
  "jobType": "fulltime",
  "datePosted": 7,
  "minRating": "4.0",
  "maxJobs": 200
}
```

</details>

### 📤 Output

Each job is stored as one dataset item. Export it as JSON, CSV or Excel, or read it from the API.

| Field | Description |
|---|---|
| `jobId` | Glassdoor job listing ID |
| `title` | Job title |
| `url` | Direct link to the job |
| `company` | Hiring company |
| `companyRating` | Company Glassdoor rating (1–5) |
| `location` | Job location |
| `salary` | Salary as shown on Glassdoor |
| `salaryMin` / `salaryMedian` / `salaryMax` | Estimated salary range |
| `salaryCurrency` | Salary currency |
| `postedAge` / `ageInDays` | How long ago it was posted |
| `descriptionSnippet` | Short description snippet |
| `easyApply` | Easy-apply on Glassdoor |
| `isSponsored` | Sponsored/promoted listing |
| `jobCategory` | Normalized job family |
| `attributes[]` | Job attributes (contract type, education level…) |

<details>
<summary>Example output</summary>

```json
{
  "jobId": "1010191089012",
  "title": "Data Engineer",
  "url": "https://www.glassdoor.com/job-listing/...?jl=1010191089012",
  "company": "Sartorius",
  "companyRating": 3.5,
  "location": "Paris",
  "salary": "45 k€ - 60 k€ (Glassdoor est.)",
  "salaryMin": 45000,
  "salaryMedian": 52000,
  "salaryMax": 60000,
  "salaryCurrency": "EUR",
  "postedAge": "3j",
  "ageInDays": 3,
  "descriptionSnippet": "We are looking for a Data Engineer to…",
  "easyApply": false,
  "isSponsored": false,
  "jobCategory": "development engineer",
  "attributes": ["Full-time", "Master"]
}
```

</details>

### 🔑 Optional: scrape logged in

The Actor gets the full data — company names, ratings, salaries and deep results — **without logging in**. If you *also* want to run as your logged-in Glassdoor account (to match exactly what you see when signed in), paste your session cookies into the **Login cookies** field.

The easy way to export them is the free **Cookie-Editor** extension
([Chrome](https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm) ·
[Firefox](https://addons.mozilla.org/firefox/addon/cookie-editor/) · Edge):

#### Step 1 — Install Cookie-Editor

Add the **Cookie-Editor** extension to your browser and pin it to the toolbar.

#### Step 2 — Log in to Glassdoor

Open **glassdoor.com** (or your country's Glassdoor) and sign in. Make sure you're logged in (you see your profile menu).

#### Step 3 — Open Cookie-Editor on the Glassdoor tab

While on the Glassdoor tab, click the **Cookie-Editor** icon in your toolbar.

#### Step 4 — Export as JSON

At the bottom of Cookie-Editor, click **Export**, then **Export as JSON** (this copies the cookies).

#### Step 5 — Paste into the Actor

Paste the copied JSON array into the **Login cookies** field, then run.

> **Tips** — use the same **Glassdoor domain** as the cookies you exported (from `glassdoor.fr` → set country `fr`). Cookies expire; re-export fresh ones if logged-in runs stop working. Keep them private — they grant access to your account.
>
> ℹ️ Screenshots must be **public image URLs** (host them on a GitHub raw link, Imgur, etc.) — replace each `https://YOUR-IMAGE-HOST/stepN.png` placeholder above.

### 💰 Pricing

From **$0.60 per 1,000 jobs**, with automatic volume discounts down to **$0.41** at higher tiers. No subscription — you pay only for the results you extract. New Apify users can try the Actor with their free monthly platform credits.

### 🛡️ Proxy and performance

- **No proxy needed** — and not recommended. The Actor runs best without one; a proxy usually makes Glassdoor runs fail.
- Salary is Glassdoor's estimate when the employer doesn't post one.
- Use **Max jobs per search** to control volume and cost.
- The first page of a run spends a few seconds getting through Glassdoor's checks, then collects jobs quickly.

### 🔌 Integrations

Run the Actor from the [Apify API](https://docs.apify.com/api/v2), the [JavaScript](https://docs.apify.com/sdk/js) or [Python](https://docs.apify.com/sdk/python) clients, or connect it to Make, Zapier, n8n, Google Sheets and Slack through Apify integrations. Each run's data is available as JSON or CSV via the dataset API.

### 🔗 Related Actors

- [Glassdoor Reviews Universal Scraper](https://apify.com/scrapifier/glassdoor-reviews-universal-scraper) — company reviews from Glassdoor.
- [Welcome to the Jungle Scraper](https://apify.com/scrapifier/welcome-to-the-jungle-scraper) — jobs and company profiles.

Need another source? Open an issue.

### ❓ FAQ

**Do I need a Glassdoor account or login?**

No — the Actor gets the full data anonymously. Login cookies are an optional extra.

**How fresh is the data?**

It is collected live at runtime.

### 💬 Support

Questions or issues? Post them in the **Issues** tab and I will respond quickly. If the Actor is useful to you, a review is appreciated.

# Actor input Schema

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

What to search for (e.g. "data engineer", "product manager", "nurse"). Combine with a location below.

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

City, region or country (e.g. "Paris", "London", "United States"). Empty = everywhere.

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

Paste one or more Glassdoor jobs-search URLs (the page you get after searching on Glassdoor). Works on any Glassdoor country domain. Leave empty to use keyword + location above.

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

Which Glassdoor domain to search when using keyword + location. (Pasted URLs keep their own domain.)

## `sessionCookies` (type: `array`):

Optional. Paste your Glassdoor login cookies to run as a logged-in user (matches exactly what you see when signed in). How to get them: log in to Glassdoor in your browser, then export the cookies with a free extension like 'Cookie-Editor' or 'EditThisCookie' (use its 'Export' → JSON), and paste the JSON array here. Leave empty to run without logging in — you still get the full data.

## `maxJobs` (type: `integer`):

How many jobs to collect per search (0 = as many as Glassdoor exposes).

## `datePosted` (type: `integer`):

Only jobs posted within the last N days (e.g. 1, 3, 7, 14, 30). Empty = any time.

## `jobType` (type: `string`):

Employment type.

## `remoteOnly` (type: `boolean`):

Only remote-friendly jobs.

## `minRating` (type: `string`):

Only jobs at companies rated at least this on Glassdoor.

## `flatten` (type: `boolean`):

Add a flat attributesText column for CSV/Excel.

## `emitInputStatus` (type: `boolean`):

Add an input\_status report to the run's OUTPUT record.

## `maxLoadMoreClicks` (type: `integer`):

Safety cap on how far the Actor pages through results (each step loads ~30 more jobs).

## `maxChallengeRetries` (type: `integer`):

How many retry attempts if a page fails to load. Increase only if runs report being blocked.

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

Leave OFF (recommended). A proxy usually makes Glassdoor runs fail — the Actor works best without one. Only add a proxy if you have your own clean, ISP-grade IPs.

## Actor input object example

```json
{
  "keyword": "data engineer",
  "location": "France",
  "country": "www",
  "maxJobs": 100,
  "jobType": "",
  "remoteOnly": false,
  "minRating": "",
  "flatten": false,
  "emitInputStatus": true,
  "maxLoadMoreClicks": 60,
  "maxChallengeRetries": 8,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

All Glassdoor jobs extracted by this run.

# 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": "data engineer",
    "location": "France",
    "maxJobs": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapifier/glassdoor-jobs-universal-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": "data engineer",
    "location": "France",
    "maxJobs": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapifier/glassdoor-jobs-universal-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": "data engineer",
  "location": "France",
  "maxJobs": 100
}' |
apify call scrapifier/glassdoor-jobs-universal-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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