Glassdoor Scraper: Jobs, Salaries, Ratings & Companies
Pricing
from $3.00 / 1,000 serp results
Glassdoor Scraper: Jobs, Salaries, Ratings & Companies
Extract Glassdoor jobs across 20+ countries. Returns title, company, rating (1-5), review count, salary (min/max/currency + estimated flag), location, employment type, workplace type, description, apply URL, easy_apply. Optional employer profile: about, HQ, size, industry, CEO.
Pricing
from $3.00 / 1,000 serp results
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
Extract job listings from Glassdoor across 20+ country domains. Every row carries the company's Glassdoor rating (1-5) and review count alongside title, salary, location and apply URL. Optional employer profile enrichment adds "About" text, headquarters, size range, founded year, industry, CEO, rating breakdown and open-role count for each unique company in the run.
What it does
Runs a search on Glassdoor for one or more keyword and location pairs (or a set of pre-filtered start URLs) and returns structured rows. Three fetch modes:
- SERP only (default). 25+ fields per job, sourced from Glassdoor's embedded React state plus JSON-LD.
- SERP + job detail (
includeJobDetails: true). Adds full description (plain text + HTML), direct apply URL and richer employment-type data from each job's detail page. - SERP + job detail + employer profile (
includeCompanyDetails: true). Also resolves each unique employer to its Glassdoor company page and returns company enrichment fields merged directly onto each job row: about text, HQ, size, founded year, industry, CEO, rating breakdown (culture, comp, opportunities, senior leadership, work-life balance) and a list of currently-open roles.
Sample output
{"_type": "job","id": "1009123456","title": "Senior Software Engineer","company_name": "Acme Corp","company_rating": 4.2,"review_count": 1284,"location": "New York, NY","salary_min": 145000,"salary_max": 205000,"salary_currency": "USD","salary_period": "year","salary_text": "$145K - $205K/yr (Employer est.)","salary_estimated": true,"salary_source": "employer","employment_type": "full-time","workplace_type": "hybrid","description_snippet": "We are looking for a senior software engineer...","posted_at": "2026-09-19","posted_at_datetime": "2026-09-19T00:00:00Z","age_days": 1,"job_url": "https://www.glassdoor.com/job-listing/senior-software-engineer-acme-JV_IC1132348_KO0,24_KE25,34.htm?jl=1009123456","apply_url": "https://jobs.acme.com/apply/123","apply_type": "external","easy_apply": false,"sponsored": false,"employer_id": "9079","employer_profile_url": "https://www.glassdoor.com/Overview/Working-at-Acme-Corp-EI_IE9079.htm","source_platform": "glassdoor.com","search_query": "software engineer","search_location": "New York, NY","serp_page": 1,"scraped_at": "2026-09-20T08:00:00Z","extraction_mode": "serp-apollo"}
Output fields
| Field | Type | Description |
|---|---|---|
_type | string | Always "job" |
id | string | Glassdoor jobListingId |
title | string | Job title |
company_name | string | Employer name |
company_logo_url | string | Company square logo URL (null if only placeholder available) |
location | string | Location text from card |
city | string | Parsed city |
state | string | Parsed state/region |
country | string | Country from structured data |
salary_min | number | Minimum salary (numeric) |
salary_max | number | Maximum salary (numeric) |
salary_currency | string | Currency code (USD, EUR, GBP, ...) |
salary_period | string | Pay period: year, month, week, day, hour |
salary_text | string | Human-readable salary string synthesized from structured fields (e.g. "$145K - $205K/yr (Glassdoor est.)") |
salary_estimated | boolean | True when Glassdoor or employer estimated |
salary_source | string | "glassdoor" or "employer" when estimated |
employment_type | string | full-time, part-time, contract, temporary, internship, freelance |
workplace_type | string | remote, hybrid, onsite |
description_snippet | string | Short description excerpt (SERP) |
description_full | string | Full plain-text description (requires includeJobDetails) |
description_html | string | Full HTML description (requires includeJobDetails) |
description_md | string | Full Markdown description converted from HTML (requires includeJobDetails) |
posted_at | string | Posting date YYYY-MM-DD (approximate, derived from "Nd ago") |
posted_at_datetime | string | ISO-8601 UTC datetime (YYYY-MM-DDT00:00:00Z) |
age_days | number | Days since posted |
job_url | string | Glassdoor job listing URL |
apply_url | string | Direct apply URL (requires includeJobDetails) |
apply_type | string | quick (Easy Apply), native, external |
source_platform | string | Always "glassdoor.com" |
company_rating | number | Overall Glassdoor rating 1.0-5.0 |
review_count | number | Number of Glassdoor reviews |
easy_apply | boolean | True if Glassdoor Easy Apply available |
sponsored | boolean | True if sponsored/promoted listing |
employer_id | string | Glassdoor employer ID (eid) |
employer_profile_url | string | Glassdoor company Overview URL |
search_query | string | Keyword used for this result |
search_location | string | Location used for this result |
serp_page | number | SERP page number |
scraped_at | string | ISO-8601 UTC scrape timestamp |
extraction_mode | string | Extraction path used (serp-apollo, serp-jsonld, serp-html-anchor, +detail) |
company_about | string | Employer "About" text (requires includeCompanyDetails) |
company_website | string | Employer website URL |
company_headquarters | string | Headquarters location |
company_size_range | string | Employee count range (e.g. "10001+ Employees") |
company_founded_year | number | Year founded |
company_industry | string | Industry name |
company_sector | string | Sector name |
company_type | string | Company type (Public, Private, Nonprofit, ...) |
company_revenue_range | string | Annual revenue range |
company_ceo | string | CEO name |
company_ceo_approval_pct | number | CEO approval % |
company_recommend_pct | number | Recommend-to-friend % |
company_glassdoor_rating | number | Overall rating from company page |
company_review_count | number | Review count from company page |
company_rating_culture | number | Culture and values sub-rating |
company_rating_compensation | number | Compensation and benefits sub-rating |
company_rating_opportunities | number | Career opportunities sub-rating |
company_rating_senior_leadership | number | Senior leadership sub-rating |
company_rating_work_life_balance | number | Work-life balance sub-rating |
company_rating_diversity | number | Diversity and inclusion sub-rating |
company_active_jobs_count | number | Number of open roles on company page |
company_active_jobs | array | List of open job titles and URLs (up to 20) |
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | ["software engineer"] | Job search keywords |
startUrls | string[] | Pre-filtered Glassdoor search URLs | |
location | string | City or region (e.g. "New York, NY") | |
country | select | us | Glassdoor domain: us, uk, gb, ca, au, ie, in, de, fr, nl, es, it, br, mx, ar, sg, hk, ch, at, be |
maxResults | integer | 5 | Total job cap across all queries |
maxResultsPerQuery | integer | 5 | Per-query job cap |
includeJobDetails | boolean | false | Fetch full description and apply URL from PDP |
includeCompanyDetails | boolean | false | Fetch employer profile fields |
sortBy | select | newest | newest or relevance |
maxConcurrency | integer | 3 | Max parallel HTTP requests |
Pricing
Pay-per-event (PPE) via Apify's platform billing:
| Event | Rate | When charged |
|---|---|---|
job-start | $0.001 | Once per actor run |
job-serp-result | $0.003 | Per job pushed to dataset |
job-detail-result | $0.002 | Per job enriched with full description from the detail page |
company-detail-result | $0.005 | Per unique employer profile resolved (deduplicated per run) |
How it works: You pay a flat rate per event; we absorb compute and proxy costs on our end. No monthly minimum. New Apify accounts include $5 free credit that applies immediately.
Worked examples
SERP-only scan — 100 jobs
| Event | Count | Rate | Subtotal |
|---|---|---|---|
job-start | 1 | $0.001 | $0.001 |
job-serp-result | 100 | $0.003 | $0.300 |
| Total | $0.301 |
SERP + detail enrichment — 500 jobs
| Event | Count | Rate | Subtotal |
|---|---|---|---|
job-start | 1 | $0.001 | $0.001 |
job-serp-result | 500 | $0.003 | $1.500 |
job-detail-result | 500 | $0.002 | $1.000 |
| Total | $2.501 |
Full pipeline — 1,000 jobs + 200 employer profiles
| Event | Count | Rate | Subtotal |
|---|---|---|---|
job-start | 1 | $0.001 | $0.001 |
job-serp-result | 1,000 | $0.003 | $3.000 |
job-detail-result | 1,000 | $0.002 | $2.000 |
company-detail-result | 200 | $0.005 | $1.000 |
| Total | $6.001 |
Supported countries
us (glassdoor.com), uk/gb (glassdoor.co.uk), ca (glassdoor.ca), au (glassdoor.com.au), ie (glassdoor.ie), in (glassdoor.co.in), de (glassdoor.de), fr (glassdoor.fr), nl (glassdoor.nl), es (glassdoor.es), it (glassdoor.it), br (glassdoor.com.br), mx (glassdoor.com.mx), ar (glassdoor.com.ar), sg (glassdoor.sg), hk (glassdoor.com.hk), ch (glassdoor.ch), at (glassdoor.at), be (glassdoor.be)
Use with AI agents (MCP)
This actor is compatible with Apify's MCP server for use in Claude, Cursor, LangChain and other agent frameworks. For per-tool schemas and MCP-client copy-paste snippets, see the MCP tab on the actor page.
{"mcpServers": {"apify": {"command": "npx","args": ["-y","mcp-remote","https://mcp.apify.com/sse?token=YOUR_APIFY_TOKEN&tools=santamaria-automations~glassdoor-scraper"]}}}
Related actors
Feed the company_website field from this actor's output into one of the two below to enrich rows with contact data:
- Website Email & Phone Scraper — regex-based, fast & cheap; scrapes emails + phones from a company website.
- Website Contact Extractor — LLM-based, higher precision on structured contacts (names, roles, dept-scoped emails).
More job scrapers from our fleet you may also want:
- LinkedIn Jobs Scraper — LinkedIn's public job search across every geo.
- Stepstone.de Scraper — flagship DACH board (Germany).
- Arbeitsagentur DE Scraper — the German federal employment agency (jobsuche.arbeitsagentur.de).
- France Travail Scraper — the French national public employment service.
Why this scraper
- Returns Glassdoor's employer rating (1-5) and review count on every SERP row — not just on aggregated employer pages — so compensation and culture signals travel with each job record.
- Preserves the
salary_estimatedboolean andsalary_sourcestring alongside parsed numeric salary ranges, letting ML pipelines weight or filter employer-declared vs Glassdoor-estimated bands independently. - Optional employer profile pass (
includeCompanyDetails: true) resolves 20+ company fields — about text, HQ, size, founded year, industry, sector, CEO, CEO approval %, recommend %, six sub-ratings, open-role count and list — deduplicated per unique employer, with no second API call required. - Covers 20+ country domains under a single normalized schema: one input change (
country: "de") routes the entire run to glassdoor.de without any per-country actor to maintain. - Pure Go HTTP stack running at 128 MB RAM baseline with residential proxy and Apify Unblocker — no browser overhead, roughly 30x faster per query than the previous browser-tier implementation.
Use cases
- Compensation benchmarking across cities and titles using
salary_min,salary_max,salary_currency,salary_periodand thesalary_estimatedfilter flag. - Recruiter lead-gen: identify companies actively hiring for a target role and open a conversation using co-located employer fields (HQ, size, industry, CEO).
- Market intelligence: track competitor rating trends, open-role counts and review-count velocity across recurring scheduled runs.
- Pay-transparency research or media reporting, particularly for US postings where Glassdoor publishes salary estimates employers do not disclose elsewhere.
- Candidate pipeline building with deduplication on
employer_idandid(Glassdoor jobListingId) across daily runs.
Notes and limits
- Glassdoor's "newest" sort applies a
fromAgefilter (typically last-24 h posts) rather than a strict recency ordering. Results within the window are relevance-ranked. To capture older postings, usesortBy: relevanceand paginate deeper. - Salary ranges are often Glassdoor's estimates rather than official employer bands. The
salary_estimatedboolean andsalary_sourcestring identify which is which on every row. - Employer profile pages sometimes omit fields for smaller companies or non-US regions. Missing values are returned as null rather than backfilled with guesses.
description_full,description_htmlanddescription_mdare only populated whenincludeJobDetails: true. SERP rows carry onlydescription_snippet(roughly 150 chars).apply_urland theapply_typedistinction (external ATS redirect vs Glassdoor Easy Apply) requireincludeJobDetails: true.- Throughput: expect roughly 2-3 jobs per second at
maxConcurrency: 3. Total runtime scales approximately linearly with SERP page count (30 rows per page).
Support
- Questions or issues? Email contact@nanoscrape.com — we typically reply within 6 hours. You can also open a ticket in the Issues tab on the actor page.
- Feature request? Open a ticket in the Issues tab or email contact@nanoscrape.com with the field / country / employer type you need and (if possible) a URL that shows the data live on glassdoor.
- Need a scraper for a job board we don't cover yet? Email contact@nanoscrape.com with the target site + your rough usage volume — we ship one-off boards regularly.