Glassdoor Jobs Scraper - Listings, Salaries & Ratings avatar

Glassdoor Jobs Scraper - Listings, Salaries & Ratings

Pricing

from $2.75 / 1,000 results

Go to Apify Store
Glassdoor Jobs Scraper - Listings, Salaries & Ratings

Glassdoor Jobs Scraper - Listings, Salaries & Ratings

Scrape Glassdoor job listings by keyword and location. Export job title, company, company rating, salary estimate (min/median/max), location, posted date, skills, Easy Apply and the job URL. No login or API key required.

Pricing

from $2.75 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Features

Limited permissions

Share

Glassdoor Jobs Scraper — Listings, Salaries, Skills & Company Ratings

Glassdoor Dataset Deep Pagination Export Formats Maintenance

Extract real-time job openings, verified employer star ratings, salary compensation benchmarks, and structured candidate skill requirements from Glassdoor (glassdoor.com). Scrape critical attributes including job title, normalized job title, company name, Glassdoor overall employer rating (1.0–5.0), salary estimates (10th, 50th, 90th percentile), pay period (Annual/Hourly), job location, posting age in days, Easy Apply status, and 40+ extracted skills per listing.

Whether you are building compensation models, tracking enterprise hiring momentum, sourcing recruitment targets, or enriching labor market analytics platforms, this scraper provides continuous cursor pagination to collect hundreds to thousands of records in minutes.


⚡ At a glance

FeatureSpecification
Target Websiteglassdoor.com (Glassdoor Job Search)
Data FieldsJob title, company, rating, salary (min/median/max), location, age, skills, Easy Apply, URLs
Search CapabilitiesMultiple keywords (software engineer, data analyst), city/state, Remote, or nationwide
Pagination DepthUnlocked cursor-based deep pagination (1,000+ jobs per search keyword)
Typical Speed30–60 jobs per 5–10 seconds over high-performance HTTP requests
Proxy RequirementApify Proxy enabled (US Residential proxy configured for maximum throughput)
Export FormatsJSON, CSV, Excel (XLSX), XML, HTML Table, RSS
IntegrationsMake, Zapier, Webhooks, Google Sheets, Airbyte, Keboola, Python, Node.js API

🔎 Why scrape Glassdoor jobs?

Glassdoor occupies a unique position in global recruitment. Unlike standard job boards that only display basic text descriptions, Glassdoor integrates employer reputation scores and statistical salary percentiles alongside each open role.

Extracting Glassdoor job postings empowers organizations with unique competitive advantages:

  1. Compensation & Total Rewards Benchmarking: Access granular pay estimates (salaryMin, salaryMedian, salaryMax) across titles and geographic markets. Differentiate between employer-confirmed pay scales and algorithmic industry benchmarks.
  2. Employer Reputation & Sourcing: Cross-reference open jobs with verified Glassdoor employer ratings. Recruit high-demand talent from companies with sub-3.5 satisfaction scores or target fast-growing firms with top-tier ratings.
  3. Skill & Tech Stack Trend Analysis: Analyze the structured skills array across thousands of job descriptions to determine which programming languages, frameworks, or certifications are currently experiencing hiring surges.
  4. Competitor Hiring Audits: Monitor competitors' expansion into new regions, track job opening volumes by department, and detect strategic company pivots before press announcements.
  5. Job Aggregator Feeds: Power regional career portals, specialized niche job boards, and automated Slack alert channels with always-fresh listings.

📊 Glassdoor vs Other Major Job Boards

DimensionGlassdoor JobsLinkedIn JobsIndeed
Employer Rating Integration🟢 Native Star Ratings (1–5)🔴 Not Displayed🟡 Basic Company Reviews
Salary Percentiles🟢 P10, P50 (Median), P90🟡 Broad Ranges🟡 Self-Reported Averages
Extracted Skills Array🟢 Up to 40+ Skills per Post🟡 User-Tagged Skills🟡 Keyword Matching
Easy Apply Transparency🟢 Explicit Boolean Flag🟢 In-App Application🟢 Employer Direct
Extraction Performance🟢 Fast HTTP Stream (~7s/page)🔴 Heavy Browser Required🟡 Moderate
Historical Age Tracking🟢 Exact ageInDays Number🟡 Vague Date Strings🟡 Date String

📊 Key Data Fields & Coverage

Every output record represents a single de-duplicated job listing with normalized attributes.

💼 Position & Company Overview

FieldTypeDescriptionCoverage
jobListingIdstringUnique Glassdoor persistent listing ID🟢 High (100%)
jobTitlestringFull advertised job title🟢 High (100%)
normalizedJobTitlestringStandardized title for analytics grouping🟢 High (95%)
companyNamestringFull legal or trading company name🟢 High (100%)
companyIdnumberInternal persistent Glassdoor employer ID🟢 High (95%)
companyRatingnumberOverall company star rating (1.0 to 5.0)🟢 High (90%)
companyLogostringDirect URL to company square logo🟢 High (85%)
jobUrlstringCanonical listing URL🟢 High (100%)

💰 Compensation & Terms

FieldTypeDescriptionCoverage
salaryMinnumber10th percentile / minimum pay figure🟢 High (85%)
salaryMediannumber50th percentile / median pay figure🟢 High (85%)
salaryMaxnumber90th percentile / maximum pay figure🟢 High (85%)
payPeriodstringCompensation interval (ANNUAL or HOURLY)🟢 High (85%)
payCurrencystringCurrency denomination (USD, EUR, GBP, CAD)🟢 High (85%)
salarySourcestringSource attribution (EMPLOYER_EST_BASE, etc.)🟢 High (85%)

📍 Location & Requirements

FieldTypeDescriptionCoverage
locationstringMunicipal city, state, or Remote indicator🟢 High (100%)
locationTypestringGeographical tier (C = City, S = State)🟢 High (95%)
skillsarrayExtracted technical and soft skills🟢 High (90%)
descriptionSnippetstringSummary preview excerpt of job scope🟢 High (85%)
jobCategorystringOccupational category classification (GOC)🟢 High (90%)

⏱️ Operational Flags

FieldTypeDescriptionCoverage
ageInDaysnumberDays elapsed since job publication🟢 High (100%)
easyApplybooleanWhether one-click Easy Apply is enabled🟢 High (100%)
isSponsoredbooleanWhether listing is an advertiser placement🟢 High (100%)
searchKeywordstringSearch keyword query that matched this record🟢 High (100%)
searchLocationstringLocation filter provided in search input🟢 High (90%)
scrapedAtstringISO timestamp of data collection🟢 High (100%)

🎯 Detailed Use Cases & Workflows

1. Total Rewards & Salary Competitiveness Modeling

  • Objective: Establish competitive salary bands for engineering, nursing, or sales roles across high-cost vs low-cost living areas.
  • Workflow: Run the scraper for "product manager" across Austin, TX, New York, NY, and Remote. Export to Excel, filter by payPeriod = "ANNUAL", and calculate the spread between salaryMin and salaryMax across markets.

2. High-Precision Technical Talent Sourcing

  • Objective: Source companies actively adopting specific emerging technologies.
  • Workflow: Scrape roles matching "devops engineer". Filter the resulting skills arrays for specific keywords like Kubernetes, Terraform, Rust, or Go. Target those employers for B2B developer tool software sales.

3. Recruiter Outreach & Headhunting

  • Objective: Reach out to senior engineers at companies experiencing low employee sentiment.
  • Workflow: Scrape open software positions in target metros. Filter for employers where companyRating < 3.6. Cross-reference company names with LinkedIn Recruiter to engage prospective candidates open to new career opportunities.

4. Automated Job Feed Aggregation

  • Objective: Populate a niche job board (e.g., Remote AI Jobs) automatically on a daily schedule.
  • Workflow: Schedule a recurring daily run for "AI engineer" with location: "Remote". Pipe the resulting JSON through Apify Webhooks directly into your Webflow or Ghost database.

⚙️ Input Configuration & Parameters

Every input parameter is optional. If executed with empty parameters, the scraper automatically runs a demonstration scrape for software engineering roles in Austin, TX.

ParameterTypeDefaultDescription
keywordarray["software engineer"]List of job titles or search terms to query sequentially.
locationstring"Austin, TX"City and state (Austin, TX), Remote, or leave empty for nationwide US search.
maxItemsinteger0Total maximum jobs to collect across all keywords. 0 = auto/unlimited.
proxyConfigurationobject{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"}Proxy configuration. Pre-configured with US residential proxy for maximum reliability.

📝 Input Configurations for Common Scenarios

Scenario A: Fast Prefill Run (Demo)

{
"keyword": ["software engineer"],
"location": "Austin, TX",
"maxItems": 60
}

Scenario B: Multi-Keyword Remote Tech Hiring Sweep

{
"keyword": [
"frontend engineer",
"backend engineer",
"full stack developer",
"mobile engineer"
],
"location": "Remote",
"maxItems": 500
}

Scenario C: Deep Regional Market Audit (1,000+ Jobs)

{
"keyword": [
"registered nurse",
"nurse practitioner",
"clinical coordinator"
],
"location": "New York, NY",
"maxItems": 1500
}

📦 Sample Output Record

{
"jobListingId": "1009847129",
"jobTitle": "Senior Full Stack Engineer (Node / React)",
"normalizedJobTitle": "Senior Software Engineer",
"jobUrl": "https://www.glassdoor.com/job-listing/senior-full-stack-engineer-glassdoor-JV_IC1139761_KO0,32_KE33,42.htm?jl=1009847129",
"companyName": "Datadog",
"companyId": 560124,
"companyRating": 4.4,
"companyLogo": "https://media.glassdoor.com/sqll/560124/datadog-squareLogo-1650392019.png",
"location": "Austin, TX",
"locationType": "CITY",
"salaryMin": 165000,
"salaryMedian": 190000,
"salaryMax": 225000,
"payPeriod": "ANNUAL",
"payCurrency": "USD",
"salarySource": "EMPLOYER_EST_BASE",
"ageInDays": 2,
"easyApply": true,
"isSponsored": false,
"jobCategory": "Information Technology",
"descriptionSnippet": "Datadog is looking for a Senior Full Stack Engineer to build high-performance data visualization interfaces for cloud telemetry...",
"skills": [
"JavaScript",
"TypeScript",
"React",
"Node.js",
"AWS",
"Docker",
"CI/CD",
"Microservices",
"RESTful APIs",
"GraphQL",
"Git",
"Agile"
],
"searchKeyword": "software engineer",
"searchLocation": "Austin, TX",
"scrapedAt": "2026-11-10T13:50:00.000Z"
}

💻 Programmatic Usage & API Integration

Trigger runs and retrieve results via the official Apify Client in Python, JavaScript, or direct REST API requests.

Python Integration

from apify_client import ApifyClient
# Initialize client with your Apify API token
client = ApifyClient("YOUR_APIFY_TOKEN")
# Prepare actor input
run_input = {
"keyword": ["data engineer", "analytics engineer"],
"location": "San Francisco, CA",
"maxItems": 100
}
# Run actor and wait for completion
run = client.actor("haketa/glassdoor-jobs-scraper").call(run_input=run_input)
# Fetch results from default dataset
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{job['jobTitle']} at {job['companyName']} (Rating: {job['companyRating']}) | Pay: ${job['salaryMedian']:,}")

Node.js / JavaScript Integration

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: 'YOUR_APIFY_TOKEN',
});
const input = {
keyword: ["cybersecurity analyst"],
location: "Washington, DC",
maxItems: 75
};
const run = await client.actor('haketa/glassdoor-jobs-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((job) => {
console.log(`[${job.companyName}] ${job.jobTitle} - Skills: ${job.skills?.slice(0, 4).join(', ')}`);
});

Direct REST API Call

curl -X POST "https://api.apify.com/v2/acts/haketa~glassdoor-jobs-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keyword": ["product manager"],
"location": "Seattle, WA",
"maxItems": 50
}'

🔗 Integrations & Data Pipelines

Connect your Glassdoor jobs dataset directly into existing corporate data pipelines:

  • Google Sheets: Stream newly discovered job openings directly into team spreadsheets using Apify's Google Sheets Integration.
  • Airtable: Build an interactive hiring pipeline tracking competitors' open positions and compensation brackets.
  • HubSpot / Salesforce: Enrich company prospect accounts with verified Glassdoor company ratings and active hiring volumes.
  • Slack & Discord: Configure Zapier or Make to deliver automated notifications when top-rated companies post roles matching specific criteria.
  • Snowflake & BigQuery: Aggregate millions of job rows for longitudinal machine learning analysis of labor market supply and demand.

🛠️ Step-by-Step Getting Started Guide

  1. Open the Actor: Navigate to haketa/glassdoor-jobs-scraper on the Apify Console.
  2. Enter Job Title or Keywords: Add target job queries (e.g. product designer, account executive).
  3. Specify Location: Enter a city and state (Austin, TX, Chicago, IL) or Remote.
  4. Configure Max Jobs: Set maxItems to your desired count (e.g. 60 for fast previews, or 1,000+ for broad market research).
  5. Click Start: Hit the green Start button in the Console.
  6. Download Clean Data: In the Dataset tab, export your results as CSV, Excel, or JSON.

💡 Best Practices & Pro Tips

  • Use Specific City and State Combinations: Specifying a clean city and state (e.g., New York, NY or Chicago, IL) yields the richest geographic metadata and lowest network friction.
  • Filter by salarySource: Distinguish between employer-provided salary ranges (EMPLOYER_EST_BASE) and statistical market algorithms when preparing executive compensation reports.
  • Multiple Keywords in One Run: Provide an array of related titles (e.g., ["frontend developer", "react developer", "ui engineer"]) to ensure comprehensive coverage across varied job titling conventions.
  • Continuous Deduplication: Overlapping searches automatically deduplicate by persistent jobListingId, ensuring zero duplicate records in your final dataset.

❓ Frequently Asked Questions

How many jobs can I extract in a single run?

There is no hard limit. Glassdoor indexes tens of thousands of active jobs per keyword. With maxItems: 0 (or maxItems: 1000+), the actor utilizes cursor-based pagination to stream thousands of jobs continuously.

Why are residential proxies pre-configured?

Glassdoor employs strict network governance that restricts access from generic datacenter IP ranges. Operating through residential proxies ensures uninterrupted data throughput.

Are salaries provided for every job?

Approximately 85–90% of listings include statistical salary estimates (P10, P50 median, P90). When a salary is not estimated by Glassdoor or the employer, the fields are returned as null.

Does the actor extract full job descriptions?

The actor extracts a concise descriptionSnippet along with an extensive array of parsed skills (typically 20–40+ items per job). This preserves rapid throughput while providing rich keyword data.

How frequently are listings refreshed?

The scraper reads live Glassdoor search queries at the exact moment of execution. The ageInDays property indicates precisely how recently the position was published.

What export formats are supported?

You can export results directly from the Apify Console as JSON, CSV, Excel (XLSX), XML, or HTML Table.

What happens if I provide no keyword or location?

The actor defaults to a software engineering demonstration in Austin, TX, retrieving clean sample listings with company ratings and salary benchmarks in seconds.

Can I filter specifically for Remote positions?

Yes. Simply pass "Remote" into the location input parameter to target exclusively remote and telecommute positions across the country.

How does deduplication work across keywords?

The actor tracks unique jobListingId keys in memory throughout the execution. If multiple queried keywords match the same listing, it is emitted to your dataset exactly once.


📋 Changelog

v1.2 — 2026-11

  • 1,000+ Deep Cursor Pagination Unlocked: Removed artificial empty and page clamps to enable seamless multi-page cursor pagination reaching 1,000+ job listings per keyword.
  • Fast Prefill Optimization: Streamlined default prefill parameters to complete clean sample runs in under 15 seconds.
  • Enhanced Skill & Compensation Normalization: Improved extraction of numeric salary percentiles (P10, P50, P90) and normalized categorical job classifications.
  • Comprehensive Documentation: Added multi-platform job board comparison matrices, visual shields badges, and complete Python and Node.js SDK snippets.

v1.1 — 2026-10

  • Migrated core extraction engine to pure HTTP for 10x faster execution and minimal resource consumption.
  • Added automatic city and state location autocomplete resolution.
  • Added support for remote job filtering.

v1.0 — 2026-10

  • Initial production release.
  • Extraction of job title, company name, employer rating, salary estimate, location, posted age, and direct URLs.