# Glassdoor Jobs Scraper - Salary & Company Rating (`parseforge/glassdoor-jobs-scraper`) Actor

Scrape job listings from Glassdoor. Search by keyword, location, or company name. Extract job titles, salaries, locations, descriptions, and company info. Supports pagination and detail page enrichment. Export to JSON, CSV, Excel, or connect via API.

- **URL**: https://apify.com/parseforge/glassdoor-jobs-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Jobs, Developer tools, Automation
- **Features:** Limited permissions
- **Stats:** 9 total users, 0 monthly users, 96.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.56 / 1,000 result items

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### Glassdoor Jobs Scraper

**Scrape Glassdoor job listings by keyword, location, or company, up to a million per run.** Each job comes with its title, company, location, salary estimate, and optional full description. No login or API key. Export to CSV, JSON, Excel, or XML.

Glassdoor's job board holds millions of listings with salary data and company reviews, but browsing page by page is slow and manual collection does not scale. This Actor reads the public job search results directly, letting you filter by job title, city, or employer name, and returns every match in one flat dataset. You can also feed it any Glassdoor search URL you have already built.

| Who uses it | What they scrape Glassdoor for |
|---|---|
| Recruiters | Build a live feed of open roles at target companies without checking each career page. |
| Job market analysts | Track hiring volume and salary ranges by role, city, or industry over time. |
| Job board aggregators | Pull fresh Glassdoor listings into a multi-source job search platform. |
| Sales teams | Identify companies that are hiring for roles your product serves. |

### What it does

This Actor collects Glassdoor job listings from keyword searches, location filters, company pages, or direct URLs and returns each job as a flat row.

- 🔎 **Keyword search:** supply a job title or skill and a location, and the Actor builds the search URL for you.
- 🏢 **Company search:** give a company name to scrape every open role that employer has posted on Glassdoor.
- 🔗 **Direct URL:** paste any Glassdoor job search URL you have already filtered, and the Actor reads it page by page.
- 📋 **Full descriptions:** enable the optional detail fetch to collect the complete job body text, not the snippet.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Glassdoor data

**📊 Monitor hiring trends.**

A market analyst runs the Actor weekly for "data engineer" in five cities and plots salary estimate changes and listing counts over the quarter.

**🎯 Build a target account list.**

A sales team scrapes all open roles at 50 enterprise companies, then filters for departments that match their buyer persona.

**🤖 Feed a job aggregator.**

A developer runs the Actor daily, pipes the JSON output into a multi-board job site, and keeps Glassdoor listings fresh alongside other sources.

**📝 Research job descriptions.**

An HR consultant enables full descriptions, scrapes 200 "product manager" postings, and analyzes the most requested skills for a competency model.

### Why choose this scraper

| | What you get |
|---|---|
| **No API key** | Reads the public job feeds. No Glassdoor account or developer registration needed. |
| **Flat output** | Every job lands as one row with a fixed schema, ready for Excel, SQL, or a dashboard. |
| **Scale** | Collect up to a million listings in a single run, limited only by the cap you set. |
| **Optional depth** | Toggle full job descriptions on when you need the body text, off when you want speed. |

### How it compares

No other Store actor targets Glassdoor the same way, so the honest comparison is with the alternatives teams actually weigh.

| | Glassdoor Jobs Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Glassdoor changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor from a keyword and location, a company name, or a direct Glassdoor search URL, and set a maximum item count so the run stops when you have enough. The Input tab lists every parameter.

A first run with the defaults:

```json
{
 "startUrl": "https://www.glassdoor.com/Job/jobs.htm?sc.keyword=software+engineer",
 "maxItems": 10
}
```

A larger pull:

```json
{
 "startUrl": "https://www.glassdoor.com/Job/jobs.htm?sc.keyword=software+engineer",
 "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.004 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.40 |
| 1,000 results | $4.00 |
| 10,000 results | $40.00 |

**Optional job details: $0.005 per job.** This extra is off by default. When you turn on `includeJobDetails` (Include Job Descriptions), the Actor also collects each job's full description, posting date and map coordinates, and charges $0.005 for each job whose full description actually came back. Jobs without a description are not charged for it. This charge applies from September 25, 2026. With the option off you pay only the per-result price above.

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Glassdoor Jobs Scraper](https://apify.com/parseforge/glassdoor-jobs-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Glassdoor through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/glassdoor-jobs-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check that your keyword, location, or company name matches how Glassdoor writes it. Try the search on glassdoor.com first. If it works there, copy the exact URL and paste it into the Start URL field.

**Do full descriptions slow the run down?**

Only a little. Descriptions are fetched in batches of 10 jobs, so a 100-job run with descriptions usually finishes in under a minute.

**Some jobs are missing the salary field.**

Glassdoor does not show a salary estimate on every listing. If the site does not display it, the Actor cannot collect it. The field will be empty in your output.

**I get fewer results than my Maximum jobs setting.**

The Actor stops when Glassdoor has no more matching listings. Your search may return fewer jobs than the cap you set. Try broadening the keyword or location.

**The Actor returns an error or times out.**

Glassdoor may be rate-limiting the requests. Try again after a few minutes, reduce the Maximum jobs count, or run the Actor with a lower concurrency setting if you are using a custom Apify plan.

### FAQ

| Question | Answer |
|---|---|
| Do I need a Glassdoor account or API key? | No. The Actor reads the public job search pages that anyone can visit in a browser. No login, no API registration, and no Glassdoor partner agreement is required. |
| Can I scrape jobs for a specific company? | Yes. Use the Company Name field to search for all open roles at one employer, or paste a direct company jobs URL into the Start URL field. |
| How do I get the full job description? | Enable the "Include Job Descriptions" checkbox. The Actor collects the complete body text for each job, along with its posting date and map coordinates. |
| What location formats work? | City names like "San Francisco", "London", or "Berlin" work best. You can also try state names or "Remote". The Actor passes your text directly to the Glassdoor location filter. |
| How many jobs can I collect in one run? | Set the Maximum jobs field to any number up to 1,000,000. Keyword, location and URL searches page through the results until your limit is reached or Glassdoor runs out of matching listings. Company mode returns the employer's first page of listings, up to 30 jobs. |
| Can I combine keyword and company search? | Not in the same run through the input fields. Use the keyword and location fields for a broad search, or the company name field for one employer. For a combined filter, build the URL on Glassdoor first and paste it into the Start URL field. |
| Does this Actor collect salary information? | Yes. When Glassdoor shows a salary estimate or employer-provided range on the listing, that data appears in the output row. |
| What output formats are supported? | You can export your dataset to CSV, JSON, Excel, or XML from the Apify storage tab after the run finishes. |
| Is this Actor legal to use? | The Actor only accesses publicly available web pages. You are responsible for complying with Glassdoor's terms of service and any applicable laws in your jurisdiction. |
| Can I schedule this Actor to run automatically? | Yes. Apify supports scheduled runs. Set a daily or weekly trigger, and the Actor will collect fresh listings on your chosen cadence. |

### Next step

Each row carries the fields that these ParseForge jobs Actors take as input:

- **Every open role at that employer, from its own ATS.** Take `companyName`, find the company's careers page (Workday, Greenhouse, Lever, iCIMS, Ashby and 16 more ATS are supported) and paste it into `careerSiteUrls` of [Career Site Jobs Scraper](https://apify.com/parseforge/career-site-jobs-scraper). It returns everything the employer lists on its own site, including roles never posted on Glassdoor, with salary and a geocoded location.
- **The employer's Indeed listings.** Put `companyName` into `searchQuery` of [Indeed Jobs Scraper](https://apify.com/parseforge/indeed-scraper), or paste the Indeed company jobs page (for example `https://www.indeed.com/cmp/Amazon.com/jobs`) into `startUrls`, to see full descriptions, pay ranges and employer size.
- **Pay benchmark for the same role.** For tech employers, pass `companyName` as a Levels.fyi company slug (for example `google`) in `companies` of [Levels.fyi Salary Scraper](https://apify.com/parseforge/levels-fyi-scraper), with the job family that matches `jobTitle` (for example `software-engineer`) in `jobFamilies`. You get base, stock and bonus by level to set against the posted salary.

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Glassdoor, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `startUrl` (type: `string`):

Direct Glassdoor job search URL. Use this OR the keyword/company fields below.

## `maxItems` (type: `integer`):

How many job listings to collect per run.

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

Search keyword for job listings. Example: software engineer, data analyst, product manager

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

Location filter for job search. Example: New York, San Francisco, London

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

Search for jobs at a specific company. Example: Google, Apple, Microsoft

## `includeJobDetails` (type: `boolean`):

Fetch full job descriptions from detail pages. Slower but provides complete job information.

## Actor input object example

```json
{
  "startUrl": "https://www.glassdoor.com/Job/jobs.htm?sc.keyword=software+engineer",
  "maxItems": 10,
  "includeJobDetails": false
}
```

# Actor output Schema

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

All scraped job listings with company info, salary, location, and skills

# 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 = {
    "startUrl": "https://www.glassdoor.com/Job/jobs.htm?sc.keyword=software+engineer",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/glassdoor-jobs-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 = {
    "startUrl": "https://www.glassdoor.com/Job/jobs.htm?sc.keyword=software+engineer",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/glassdoor-jobs-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 '{
  "startUrl": "https://www.glassdoor.com/Job/jobs.htm?sc.keyword=software+engineer",
  "maxItems": 10
}' |
apify call parseforge/glassdoor-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/glassdoor-jobs-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/ts5YxXm4l4FfLHbYi/builds/YTpfUUjlhfSMMTj1B/openapi.json
