Glassdoor Jobs Feed
Pricing
$4.00 / 1,000 results
Glassdoor Jobs Feed
Extract structured job listings from Glassdoor across 21 markets with salary data and built-in change tracking.
Pricing
$4.00 / 1,000 results
Rating
0.0
(0)
Developer
Black Falcon Data
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
🔍 What is Glassdoor Jobs Feed?
Glassdoor Jobs Feed extracts structured job listings from Glassdoor across 21 country domains — with structured salary data, company ratings, full descriptions, and built-in change tracking for recurring pipelines.

Glassdoor is one of the world's leading career platforms, combining job listings with company reviews, salary estimates, and interview insights. This actor turns Glassdoor's job search into a structured data feed — ready for analytics, recruiting pipelines, salary benchmarking, and AI-agent workflows.
✨ Why choose this actor?
| Feature | Glassdoor Jobs Feed | Typical alternatives |
|---|---|---|
| Structured salary (min/max/currency/period) | Yes — on most listings | Raw text or missing |
| Country coverage | 21 markets | Usually 1–5 |
| Incremental change tracking | NEW, UPDATED, EXPIRED, REAPPEARED | Usually no |
| Search filters (job type, remote, posted days) | Yes | Sometimes |
| Compact mode for AI agents | Yes — 12 core fields | No |
| Description truncation | Yes — descriptionMaxLength | No |
| Company ratings on every listing | Yes | Rare |
| Deduplication across searches | Automatic | Often no |
🚀 Quick start
Minimal input — returns up to 20 jobs with full detail enrichment:
{"query": "software engineer","country": "US","location": "New York","maxResults": 20}
With filters — only remote full-time jobs posted in the last 7 days:
{"query": "python developer","country": "DE","location": "Berlin","jobType": "fulltime","remoteFilter": "remote","postedDays": 7,"sort": "date"}
With incremental tracking — only new and changed jobs since last run:
{"query": "product manager","country": "UK","location": "London","incrementalMode": true,"stateKey": "uk-pm-london","emitExpired": true,"maxResults": 100}
📊 Sample output
Each result includes title, company, location, structured salary, full description, employment type, posting date, company rating, and more:
{"jobId": "a1b2c3d4e5f6...","title": "Software Engineer, Backend, Factory Software","company": "Tesla","companyUrl": "https://www.glassdoor.com/Overview/Working-at-Tesla-EI_IE...","location": "Fremont, CA","salaryText": "USD 140,000-210,000 YEAR","salaryMin": 140000,"salaryMax": 210000,"salaryCurrency": "USD","salaryType": "YEAR","employmentType": "FULL_TIME","postedDate": "2026-03-10T00:00:00","validThrough": "2026-07-20","canonicalUrl": "https://www.glassdoor.com/job-listing/software-engineer-tesla-JV_...","portalUrl": "https://www.glassdoor.com","companyRating": 3.5,"companyIndustry": "Automotive","description": "As a Backend Software Engineer on the Factory Software team...","descriptionLength": 5259,"locationCity": "Fremont","locationRegion": "California","locationCountry": "United States","isRemote": false,"contentQuality": "full","detailFetched": true,"scrapedAt": "2026-03-21T10:00:00.000Z"}
⚙️ Input reference
Search
| Field | Type | Default | Description |
|---|---|---|---|
query | string or string[] | — | Search keywords. Use JSON array for multi-query. Required unless startUrls is provided. |
country | string | "US" | ISO alpha-2 country code. 21 markets: US, UK, CA, AU, IN, DE, FR, NL, BE, AT, CH, ES, IT, IE, BR, MX, AR, SG, HK, NZ, JP. |
location | string or string[] | — | City, state, or region. Use JSON array for multi-location. |
startUrls | string[] | — | Direct Glassdoor search or job detail URLs. |
maxResults | integer | 50 | Maximum total job listings to return (1–500). |
maxPages | integer | 5 | Maximum SERP pages per search source (1–30). |
Filters
| Field | Type | Default | Description |
|---|---|---|---|
postedDays | integer | — | Only jobs posted within N days. Valid: 1, 3, 7, 14. |
jobType | string | — | Employment type filter: fulltime, parttime, contract, temporary, internship. |
remoteFilter | string | — | Remote work filter: remote or hybrid. |
radius | integer | — | Search radius around location. Valid: 5, 10, 15, 25, 35, 50, 100. |
sort | string | "relevance" | Sort order: relevance or date. |
Enrichment
| Field | Type | Default | Description |
|---|---|---|---|
includeDetails | boolean | true | Fetch each job's detail page for full description, structured salary, and company info. |
includeCompanyProfile | boolean | false | Fetch company overview pages for industry, headcount, and more. |
Output format
| Field | Type | Default | Description |
|---|---|---|---|
compactMode | boolean | false | Output only 12 core fields. Ideal for AI agents and MCP workflows to reduce token usage. |
descriptionMaxLength | integer | 0 | Truncate descriptions to N characters. 0 = no truncation. |
Incremental tracking
| Field | Type | Default | Description |
|---|---|---|---|
incrementalMode | boolean | false | Compare against previous run state. Requires stateKey. |
stateKey | string | — | Stable identifier for the tracked search universe (e.g. "us-software-nyc"). |
emitUnchanged | boolean | false | When incremental, also emit records that haven't changed. |
emitExpired | boolean | false | When incremental, also emit records no longer found. |
📦 Output fields
Core job fields
| Field | Type | Description |
|---|---|---|
jobId | string | Unique deterministic identifier |
jobKey | string | Glassdoor job listing ID |
title | string | Position title |
company | string | Company name |
companyUrl | string | Glassdoor company profile URL |
location | string | Location string |
canonicalUrl | string | Direct URL to job detail page |
portalUrl | string | Base URL of the Glassdoor portal |
sourceUrl | string | SERP card URL |
Location fields
| Field | Type | Description |
|---|---|---|
locationCity | string | Parsed city — where available |
locationRegion | string | Parsed state/region — where available |
locationCountry | string | Country name — where available |
postalCode | string | Postal/ZIP code — where available |
locationFormatted | string | Human-readable formatted location |
latitude | number | Job location latitude — where available |
longitude | number | Job location longitude — where available |
isRemote | boolean | Whether the position is remote |
Salary fields
Glassdoor has significantly better salary coverage than most job platforms. Structured salary data is available on the majority of listings with detail enrichment enabled.
| Field | Type | Description |
|---|---|---|
salaryText | string | Raw salary string (e.g. "USD 82,000-115,000 YEAR") |
salaryMin | number | Minimum salary value |
salaryMax | number | Maximum salary value |
salaryCurrency | string | ISO 4217 currency code |
salaryType | string | Pay period: YEAR, HOUR, MONTH |
Employment & dates
| Field | Type | Description |
|---|---|---|
employmentType | string | FULL_TIME, PART_TIME, CONTRACT, etc. |
postedDate | string | ISO-8601 publication date |
validThrough | string | ISO-8601 expiration date |
Description
| Field | Type | Description |
|---|---|---|
description | string | Full job description (plain text) — with detail enrichment |
descriptionHtml | string | Full job description (raw HTML) — with detail enrichment |
descriptionLength | integer | Character count of plain text description |
Company
| Field | Type | Description |
|---|---|---|
companyRating | number | Glassdoor company rating (0–5 scale) |
companyLogoUrl | string | Company logo URL |
companyIndustry | string | Industry classification — where available |
companyReviewsCount | integer | Number of company reviews — where available |
extractedEmails | string[] | Email addresses found in job description — where available |
Metadata
| Field | Type | Description |
|---|---|---|
scrapedAt | string | ISO-8601 scrape timestamp |
detailFetched | boolean | Whether detail page was fetched |
contentQuality | string | "full", "thin", or "serp_only" |
isSponsored | boolean | Sponsored listing flag |
sourceDomain | string | Glassdoor domain used |
sourceCountry | string | ISO alpha-2 country code |
searchQuery | string | Query that found this job |
Incremental fields
Present on every record. Populated when incrementalMode is true, null otherwise.
| Field | Type | Description |
|---|---|---|
changeType | string | NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED |
trackedHash | string | Content hash for change detection |
firstSeenAt | string | ISO-8601 timestamp of first observation |
lastSeenAt | string | ISO-8601 timestamp of most recent observation |
previousSeenAt | string or null | Timestamp of observation before last |
expiredAt | string or null | Timestamp when last classified as EXPIRED |
stateKey | string | The state key used |
🤖 AI-agent and MCP usage
This actor is designed for use with AI agents, MCP servers, and LLM pipelines:
- Compact mode reduces output to 12 core fields — minimizes token usage
- Description truncation via
descriptionMaxLengthkeeps responses within context window limits - Deterministic schema — all fields are always present (
nullwhen unavailable, never omitted) - Structured salary — parsed min/max/currency/period, ready for programmatic comparison
{"query": "product manager","country": "US","compactMode": true,"descriptionMaxLength": 500,"maxResults": 50}
🔄 Incremental mode
Track job posting changes across runs. Only new and changed records are emitted by default — unchanged jobs are skipped.
Change types
| Type | Meaning |
|---|---|
NEW | Job not seen in previous run |
UPDATED | Job exists but content changed |
UNCHANGED | Same content (only emitted if emitUnchanged is true) |
EXPIRED | Was in previous state but not found in current run (only if emitExpired is true) |
REAPPEARED | Was previously expired but found again |
💡 Use cases
Salary benchmarking
Collect structured salary data across roles, markets, and companies. Glassdoor's salary coverage is among the highest of any job platform — most listings include employer-provided ranges parsed into min/max/currency/period.
Job market intelligence
Monitor hiring trends by keyword, location, or industry. Use incremental mode to track how the job market evolves over time — which roles are growing, which are shrinking.
Recruitment and lead generation
Extract hiring companies with ratings, industry, and contact details for B2B outreach. Filter by job type, remote preference, and posting age to find active hiring signals.
Competitor monitoring
Track how a company's job postings change over time with incremental mode. Detect new roles, removed positions, and salary adjustments automatically.
📖 How to scrape Glassdoor job listings
- Go to Glassdoor Jobs Feed on Apify
- Click "Try for free" and enter your search query and location
- Choose your country from 21 available markets
- Set
maxResultsto control how many jobs to extract - Click "Start" — results appear in the Output tab as structured JSON
- Download as JSON, CSV, or Excel — or connect via API for automated pipelines
⚠️ Known limitations
- Detail pages require rendering — detail enrichment is slower than SERP-only mode. Set
includeDetailstofalsefor faster results when full descriptions are not needed. - Company profiles — separate company overview pages are not currently accessible. Company data (rating, industry, logo) comes from job detail pages instead — this covers the most useful fields.
- Rate limiting — Glassdoor may throttle requests at high volume. The actor handles this gracefully but results may be incomplete for very large batches.
- Deduplication — results are deduplicated by job key across all search sources within a single run.
💰 How much does it cost to scrape Glassdoor?
$0.004 per emitted result ($4.00 per 1,000 jobs).
| Scenario | Results | Cost |
|---|---|---|
| Quick search | 20 jobs | $0.08 |
| Market scan | 100 jobs | $0.40 |
| Large batch | 500 jobs | $2.00 |
| Daily monitor (incremental) | ~10 new/day | ~$0.04/day |
In incremental mode, unchanged jobs are not emitted by default — so you only pay for new and changed records. A daily monitor that finds 10 new jobs costs about $1.20/month.
❓ FAQ
Does Glassdoor have an API?
Glassdoor discontinued its public API. This actor provides a structured alternative — extracting the same data that's visible on Glassdoor's website into clean JSON.
Can I scrape Glassdoor salary data?
Yes. This actor extracts structured salary data (minimum, maximum, currency, and pay period) from Glassdoor job listings. Salary coverage on Glassdoor is significantly higher than on most other job platforms.
How many countries does this support?
21 Glassdoor country domains: US, UK, Canada, Australia, India, Germany, France, Netherlands, Belgium, Austria, Switzerland, Spain, Italy, Ireland, Brazil, Mexico, Argentina, Singapore, Hong Kong, New Zealand, and Japan.
Can I track new job postings automatically?
Yes. Enable incrementalMode with a stateKey and schedule the actor to run daily. It will only emit new, updated, or expired jobs — unchanged listings are skipped.
🔗 Related actors
- StepStone Jobs API — search and extract job listings from 18 StepStone Group portals
- Naukri Jobs Feed — extract job listings from India's largest job portal
- Arbeitsagentur Jobs Feed — extract job listings from Germany's federal employment portal
- Company Jobs Tracker — track new and removed job listings per company
- Bilbasen Scraper — extract structured car listings from Denmark's largest car marketplace