extracto.cloud
glassdoor-jobs-scraper
Glassdoor Jobs Scraper
Collect Glassdoor job listings using job titles, locations and filters, with employer and role information.
Current pricing: $0.000651 / 1 Result Β· minimum 10 credits/run. Review the estimate before running.
Endpoint
Method
POST
URL
https://extracto.cloud/api/v1/parsers/glassdoor-jobs-scraper
Result delivery
Add
webhook_url and optional webhook_secret to receive the saved result. Webhook setup and signatures β
Auth
X-API-KEY: ext_...Response
{
"success": true,
"tool": "glassdoor-jobs-scraper",
"parser": "glassdoor-jobs-scraper",
"count": 0,
"data": []
}
Documentation
# Glassdoor Jobs Scraper (`valig/glassdoor-jobs-scraper`) parser
$0.4/1K jobs | Scrape Glassdoor jobs with filters for role, location, date, rating & Easy Apply. Get clean, structured data
- **URL**: https://extracto.cloud/docs/api/parsers/glassdoor-jobs-scraper
- **Developed by:** [Vali G](https://Extracto.com/valig) (community)
- **Categories:** Jobs, Automation
- **Stats:** 10,830 total users, 1,342 monthly users, 100.0% runs succeeded, 15 bookmarks
- **User rating**: 4.35 out of 5 stars
## Pricing
from $0.28 / 1,000 results
This parser is paid per event. You are not charged for the Extracto platform usage, but only a fixed price for specific events.
Since this parser supports Extracto Store discounts, the price gets lower the higher subscription plan you have.
Learn more: https://docs.Extracto.com/parsers/running/parsers-in-store.md#pay-per-event
## What's an Extracto parser?
An parser is a serverless cloud program that runs on the Extracto platform. It has two run modes.
In Batch mode, an parser 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 parser provides a web server which can be used as a website, API, or an MCP server.
Extracto vocabulary and the platform model are defined once, in the agent quickstart at https://Extracto.com/agents.md.
## How to integrate an parser?
If asked about integration, you help developers integrate parsers 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://Extracto.com/agents.md: the Extracto MCP server, Agent Skills with the Extracto 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 parser'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.Extracto.com/api/client/js/docs.md) (`npm install Extracto-client`) and [Python](https://docs.Extracto.com/api/client/python/docs.md) (`pip install Extracto-client`).
# README

The **Glassdoor Jobs Scraper** is an Extracto parser designed to extract structured job listings from Glassdoor based on customizable search criteria. Whether you're building a job aggregation platform, conducting labor market research, or monitoring hiring trends, this parser provides a reliable and scalable way to collect up-to-date job data.
### π Overview
This parser allows you to search Glassdoor job listings using filters such as job title, location, posting age, company rating, and more. It then returns detailed, structured data for each job posting, making it easy to integrate into your workflows, analytics pipelines, or applications.
With support for pagination and filtering, you can efficiently retrieve hundreds of relevant job listings in a single run.
### π§ Input Parameters
The parser accepts the following input schema:
##### Required / Common Fields
- **`keywords`** *(string)*\
The job title, skill, or company name you want to search for.\
*Example: `"Developer"`*
- **`location`** *(string)*\
The job location (city, state, or ZIP code).\
*Default: `"New York"`*
##### Optional Filters
- **`daysOld`** *(integer)*\
Maximum number of days since the job was posted.\
*Default: `30`*
- **`easyApply`** *(boolean)*\
If set to `true`, returns only jobs that support Easy Apply.
- **`remoteWorkType`** *(boolean)*\
If set to `true`, includes only remote job listings.
- **`minRating`** *(number)*\
Minimum company rating (0.0β5.0).\
*Example: `3.8`*
- **`employerSizes`** *(select)*\
Filter by company size based on employee count (e.g., 1-200, 501-1000, 5001+).
- **`sortBy`** *(select)*\
Choose how results are sorted: `"relevant_desc"` (Most relevant) or `"date_desc"` (Most recent).\
*Default: `"relevant_desc"`*
- **`limit`** *(integer)*\
Maximum number of results to return.\
*Default: `100`, Max: `1000`*
##### Advanced Options
- **`urlParam`** *(array of key-value pairs)*\
Pass additional, highly specific URL parameters to the underlying Glassdoor search request (e.g., specific industry IDs).\
*Example: `[{"key": "industryNId", "value": "10013"}]`*
- **`excludeJobIds`** *(array of strings)*\
List of job IDs to exclude from results. Useful for deduplication or incremental scraping.
### π§Ύ Example Input
```json
{
"keywords": "Backend Developer",
"location": "San Francisco",
"daysOld": 7,
"easyApply": true,
"minRating": 4.0,
"limit": 50
}
```
### π¦ Output
Each run returns a dataset of job listings in structured JSON format. Each item contains rich information about the job, company, and compensation.
#### Example Output Item
```json
{
"id": 1010062906489,
"title": "Senior Engineer - Applied AI (Java)",
"url": "https://www.glassdoor.com/job-listing/j?jl=1010062906489",
"seoUrl": "https://www.glassdoor.com/job-listing/senior-engineer-applied-ai-java-geico-JV_IC1132348_KO0,31_KE32,37.htm?jl=1010062906489",
"ageInDays": 12,
"rating": 2.6,
"easyApply": false,
"employer": {
"id": 270,
"name": "Government Employees Insurance Company",
"url": "https://www.glassdoor.com/Overview/W-EI_IE270.htm",
"logoUrl": "https://media.glassdoor.com/sql/270/geico-squareLogo-1730389987906.png"
},
"location": {
"countryId": 1,
"id": 1132348,
"name": "New York, NY",
"type": "C"
},
"pay": {
"source": "EMPLOYER_PROVIDED",
"currency": "USD",
"period": "ANNUAL",
"min": 100000,
"max": 215000
},
"description": "<div><!-- html description --></div>"
}
```
### π‘ Use Cases
- π§βπ» Job aggregation platforms
- π Labor market and salary analysis
- π’ Competitive hiring intelligence
- π Lead generation for recruiters
- π€ Feeding job data into AI/ML models
- π¬ Automated job alert systems
### β‘ Key Features
- Fast and scalable scraping using Extracto infrastructure
- Advanced filtering for precise results
- Structured, clean JSON output
- Easy integration with APIs, databases, and workflows
- Supports incremental scraping via job ID exclusion
### π οΈ Tips & Best Practices
- Use `excludeJobIds` to avoid duplicate processing in recurring runs
- Combine `daysOld` with `limit` for fresh, relevant datasets
- Filter by `minRating` to focus on higher-quality employers
- Enable `easyApply` for conversion-focused job pipelines
### π Summary
The **Glassdoor Jobs Scraper** parser provides a powerful, flexible way to extract job data from Glassdoor. With customizable filters and rich output, itβs an ideal solution for developers, analysts, and businesses looking to leverage job market data at scale.
Start scraping smarter and build data-driven hiring insights today π
# parser input Schema
## `keywords` (type: `string`):
Search by title, skill, or company
## `location` (type: `string`):
City, state, or country
## `daysOld` (type: `integer`):
Maximum days since posted
## `easyApply` (type: `boolean`):
Only include jobs with the Easy Apply option
## `remoteWorkType` (type: `boolean`):
Include only remote jobs
## `minRating` (type: `number`):
Minimum company rating (0.0 to 5.0)
## `radius` (type: `string`):
Search radius in miles around the specified location
## `employerSizes` (type: `string`):
Filter by company size based on number of employees
## `sortBy` (type: `string`):
Sort criteria
## `limit` (type: `integer`):
Maximum results count
## `urlParam` (type: `array`):
Pass additional URL parameters to the search request
## `excludeJobIds` (type: `array`):
List of job IDs to exclude from results
## parser input object example
```json
{
"keywords": "Software Developer",
"location": "New York",
"daysOld": 30,
"easyApply": true,
"remoteWorkType": true,
"minRating": 3.8,
"radius": "10",
"employerSizes": "5",
"sortBy": "relevant_desc",
"limit": 100,
"urlParam": [
{
"key": "industryNId",
"value": "10013"
}
],
"excludeJobIds": [
"1010068133467",
"1010057908309"
]
}
```
# parser output Schema
## `results` (type: `string`):
No description
# API
You can run this parser 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 'Extracto-client';
// Initialize the ApifyClient with your Extracto API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
token: '<YOUR_API_TOKEN>',
});
// Prepare parser input
const input = {};
// Run the parser and wait for it to finish
const run = await client.parser("valig/glassdoor-jobs-scraper").call(input);
// Fetch and print parser results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`πΎ Check your data here: https://console.Extracto.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.Extracto.com/api/client/js/docs
```
## Python example
```python
from apify_client import ApifyClient
# Initialize the ApifyClient with your Extracto API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")
# Prepare the parser input
run_input = {}
# Run the parser and wait for it to finish
run = client.parser("valig/glassdoor-jobs-scraper").call(run_input=run_input)
# Fetch and print parser results from the run's dataset (if there are any)
print(f"πΎ Check your data here: https://console.Extracto.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.Extracto.com/api/client/python/docs/quick-start
```
## CLI example
```bash
echo '{}' |
Extracto call valig/glassdoor-jobs-scraper --silent --output-dataset
```
## MCP server setup
```json
{
"mcpServers": {
"Extracto": {
"type": "http",
"url": "https://mcp.Extracto.com/?tools=fetch-parser-details,valig/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 Extracto Console (https://console.Extracto.com/settings/integrations).
## OpenAPI specification
Download the OpenAPI definition: https://api.Extracto.com/v2/parsers/5OaooRg0FxlRF0L1B/builds/QCXzKjRIVjNLFfENb/openapi.json
Request Body
{
"input": {
"keywords": "Software Developer",
"location": "New York",
"daysOld": 30,
"easyApply": true,
"remoteWorkType": true,
"minRating": 3.8,
"radius": "10",
"employerSizes": "5",
"sortBy": "relevant_desc",
"limit": 100,
"urlParam": [
{
"key": "industryNId",
"value": "10013"
}
],
"excludeJobIds": [
"1010068133467",
"1010057908309"
]
}
}
cURL
curl -X POST https://extracto.cloud/api/v1/parsers/glassdoor-jobs-scraper \
-H "X-API-KEY: ext_your_api_key" \
-H "Content-Type: application/json" \
-d '{"input":{"keywords":"Software Developer","location":"New York","daysOld":30,"easyApply":true,"remoteWorkType":true,"minRating":3.8,"radius":"10","employerSizes":"5","sortBy":"relevant_desc","limit":100,"urlParam":[{"key":"industryNId","value":"10013"}],"excludeJobIds":["1010068133467","1010057908309"]}}'