Glassdoor Jobs Scraper
Pricing
from $0.70 / 1,000 results
Glassdoor Jobs Scraper
Scrape Glassdoor job listings by keyword or link: title, company, rating, location, posting date, salary range and apply link. Add full descriptions and benefits. No login needed. Great for job hunting, salary research, recruiting and hiring-trend tracking.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Data WiKi
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
🚀 What is Glassdoor Jobs Scraper?
Glassdoor Jobs Scraper is an Apify Actor that collects jobs from Glassdoor by keyword, search link, job link or job ID. Each Glassdoor job listing comes back with its title, company, rating, location, posting age, salary range and apply link, and you can add the full description, an employer profile and a market salary benchmark.
- Pay in every row that has it. The salary range comes with a flag that tells you whether the employer published it or Glassdoor estimated it.
- Company context next to the job. Rating, size and, with full job details, industry, headquarters and website sit in the same row.
- Many filters. Posting age, job type, seniority, salary range, company rating, company size, radius, remote and Easy Apply.
- Results while it runs. Jobs appear in the Output tab as they are saved, split into separate tables per topic.
- Mixed input. Keywords, search links, job links and job IDs can share one run.
Click Try for free, type a job title and a location, and press Start. No Glassdoor account or cookies are needed, because the Actor reads public pages that any visitor can see.
📊 What data can you extract from Glassdoor?
As a Glassdoor job data extractor, the Actor returns up to 60 fields per job in the main table. Fields that Glassdoor does not publish for a job are null.
| Field | Description | Example |
|---|---|---|
job_id | Glassdoor listing ID | 1000000000001 |
job_title, job_normalized_title | Title as posted and the standard title Glassdoor maps it to | Data Analyst, data analyst |
job_url, job_apply_url | Public job page and apply link | https://www.glassdoor.com/job-listing/example.htm?jl=1000000000001 |
job_posted_date, job_age_in_days | Posting date (today minus the age in days) and age | 2026-11-03, 4 |
job_location, job_workplace_type, job_remote | Location text, workplace type and a remote flag, which gives remote jobs data | Austin, TX, on-site, false |
job_city, job_state, job_country, job_latitude, job_longitude | Map position of the job (needs full job details) | Austin, TX, US |
job_salary_min, job_salary_median, job_salary_max | Low end (10th percentile), middle and high end (90th percentile) of the pay range | 80000, 95000, 112000 |
job_salary_currency, job_salary_period, job_salary_source, job_salary_estimated | Currency, pay period, employer or glassdoor_estimate, and an estimate flag | USD, annual, employer, false |
job_types, job_skills, job_education, job_years_experience, job_attributes | Employment types and requirements Glassdoor lists | Full-time, SQL |
job_description_text, job_description_html | Full description (needs full job details) | Text of the posting |
company_name, company_rating, company_size, company_logo | Employer name, overall rating, size bucket and logo | Example Analytics Inc., 4.1 |
company_industry, company_sector, company_headquarters, company_website, company_founded, company_revenue, company_type, company_ceo | Employer facts (need full job details) | Software, Austin, TX |
company_ratings, company_review_count, company_review_highlights, company_benefits_rating, company_benefits_highlights | Sub-ratings, review count, short review sentences and mentioned benefits (need full job details) | work_life_balance 3.9 |
company_profile | Description, mission, awards and stock symbol (needs Company profile) | Object |
salary_benchmark | Market pay for the title and location (needs Salary benchmark) | Object |
source_site, scraped_at, error | Glassdoor site used, collection time, and a message for a job ID that was not found | www.glassdoor.com |
The employer rating sits in company_rating, and the companies table repeats it per employer. The rating fields follow the Glassdoor company ratings shown on each employer page. Compare Glassdoor employer ratings across companies in that table. Every row also holds Glassdoor salary data for that job when the page shows it.
💡 Use cases for Glassdoor job data
- Salary research: compare
job_salary_min,job_salary_medianandjob_salary_maxfor one title across employers. - Salary comparison by city: run the same title in several locations and compare
job_salary_median. - Job market analysis: count open roles by
company_size,job_workplace_typeandjob_age_in_daysfor a field you follow. - Hiring trends: run the same search again and again with
postedWithinDaysto see how many new roles appear. - Competitor hiring analysis: set the
companyfilter to a rival and read which roles and skills it advertises. - Recruitment lead generation: collect employers with name, rating, size and website for outreach.
- Remote job listings: switch on
remoteOnlyand keep only jobs marked remote. - Best companies to work for: combine
minCompanyRatingandcompanySizeto shortlist employers that are hiring now.
🛠️ How to scrape Glassdoor jobs
- Create a free Apify account and open the Actor in Apify Console.
- Add one or more job titles, Glassdoor search links, job links or job IDs to Search keywords, URLs or job IDs.
- Enter a Location, for example
Austin, TX,GermanyorRemote. - Set Max jobs and any filters, such as Posted within (days) or Job type.
- Switch on Full job details, Company profile or Salary benchmark if you want more than the listing data.
- Click Start, watch the numbered log lines, and open the Output tab when the run finishes.
- Download the table as JSON, CSV, Excel, XML or HTML.
To find companies that are hiring for a role, leave the filters wide and read the companies table afterwards. For job market research, start with a wide search and narrow it with filters.
💰 How much does it cost to scrape Glassdoor?
The Actor uses pay per event. One main_result event is charged for each job saved to the main table, and one apify-actor-start event of $0.00005 is charged when a run starts. Jobs that could not be found are not charged, and the extra tables cost nothing on top.
| Plan tier | Price per main_result | Price per 1,000 results |
|---|---|---|
| Free | $0.001 | $1.00 |
| Bronze | $0.0009 | $0.90 |
| Silver | $0.0008 | $0.80 |
| Gold, Platinum, Diamond | $0.0007 | $0.70 |
Apify platform usage (compute) is billed on top of the events above.
Worked example: 500 jobs on the Free tier cost 500 x $0.001 = $0.50, plus the $0.00005 start event. 1,000 jobs on the Gold tier cost 1,000 x $0.0007 = $0.70, plus the start event. The Actor is set to 1024 MB of memory. See the Pricing tab for the current prices and set a maximum charge per run if you want a hard cap.
⬇️ Input
Only Search keywords, URLs or job IDs is required. The example below searches full-time data analyst jobs from the last 7 days.
{"urls": ["data analyst"],"location": "Austin, TX","maxItems": 2,"scrapeJobDetails": false,"postedWithinDays": 7,"jobType": "fulltime","minSalary": 80000}
| Field | What it does |
|---|---|
urls | Keywords, Glassdoor search links, job links or job IDs, one per line. Required. |
location | City, state or country, or Remote, for your Glassdoor job search by location. Empty searches the whole country site. Default New York, NY. |
maxItems | Total jobs across all searches. 0 means everything reachable. Default 10. |
scrapeJobDetails | Adds the full description, skills, benefits, review highlights, employer snapshot and map position. One extra request per job. Default on. |
scrapeCompanyProfile | Adds the employer description, mission, awards, stock symbol and review counts. One request per employer. Default off. |
salaryBenchmark | Adds market pay (base, extra, total, 10th to 90th percentile) for the title and location. One request per title and location. Useful for salary benchmarking. Default off. |
postedWithinDays | Only jobs posted in the last N days, 0 for any time. Glassdoor filters at 1, 3, 7, 14 and 30 days; other values are cut afterwards. |
jobType | any, fulltime, parttime, contract, internship, temporary or apprenticeship. |
remoteOnly | Keep only Glassdoor remote jobs. |
easyApplyOnly | Keep only Glassdoor easy apply jobs, which you can apply to directly. |
seniority | any, entrylevel (for entry level jobs data), midseniorlevel, director or executive. |
minSalary, maxSalary | Yearly salary bounds in the site's currency, compared with the median pay. Jobs with no published salary are kept. |
minCompanyRating | Minimum employer rating from 1 to 5. Jobs without a rating are kept. |
companySize | any, 1-200, 201-500, 501-1000, 1001-5000 or 5001+. |
radius | Distance around the location: miles on the .com site, kilometres on other sites. |
sortBy | relevance, newest or oldest. |
company, excludeCompanies, excludeJobIds | Keep one employer, drop employers, or skip job IDs you already have. |
proxyConfiguration | Optional. The default is no proxy. |
💡 Start with a small
maxItemsto check the filters before a large run. Search one title at a time to read the salary range by job title in the salaries table.
⬆️ Output
The scraped results appear as a dataset in the Storage tab and the Output tab. The table view does not show all fields, so download the data to see every column. Each job is one row, and the run also fills separate tables for locations, salaries, descriptions, companies, company ratings, reviews and benefits, company profiles and salary benchmarks.
For the input above, a shortened row looks like this (fictional values):
{"job_id": 1000000000001,"job_title": "Data Analyst","job_url": "https://www.glassdoor.com/job-listing/example-data-analyst.htm?jl=1000000000001","job_posted_date": "2026-11-03","job_age_in_days": 4,"job_location": "Austin, TX","job_salary_min": 80000,"job_salary_median": 95000,"job_salary_max": 112000,"job_salary_currency": "USD","job_salary_period": "annual","job_salary_source": "employer","job_salary_estimated": false,"company_name": "Example Analytics Inc.","company_rating": 4.1,"source_site": "www.glassdoor.com","scraped_at": "2026-11-07T09:30:00Z"}
Download a Glassdoor jobs CSV for spreadsheets.
Export Glassdoor jobs to Excel, JSON, XML or HTML.
The rows form a job postings dataset that you can load into a database or a notebook.
Glassdoor job data arrives as structured rows you can filter and export.
| Table | Contents |
|---|---|
| Jobs overview | One row per job with salary, company and location fields |
| Locations | City, state, country, map position and workplace type |
| Salaries | Salary range, currency, period and whether it is an employer figure or an estimate, enough for a Glassdoor salary by city comparison |
| Descriptions | Full descriptions, skills, education, experience and attributes |
| Companies | One row per employer, a hiring companies list with rating, size, headquarters and industry |
| Company ratings | Work-life balance, compensation, culture, careers, management and CEO approval |
| Reviews & benefits | Review highlights and the benefits employees mention most |
| Company profiles | Description, mission, awards and stock symbol |
| Salary benchmarks | Market pay for a title and location from the 10th to the 90th percentile |
⚠️ Limitations and error handling
- Glassdoor caps one search at roughly 800 rows. The Actor runs extra passes with other sort orders and filters to reach more and removes duplicates, but it cannot promise every posting.
- Duplicates are removed by job ID, so results from several searches are merged.
- Not every job has a salary. Jobs without one are kept with empty salary fields, and salary filters never drop them.
job_salary_minandjob_salary_maxare the 10th and 90th percentile of the pay range, not the lowest and highest figure ever posted.minSalaryandmaxSalaryare compared with the median pay converted to a yearly figure.- Sorting by
oldestcollects first and lists the rows at the end of the run, so those rows do not appear while it runs. - The site is chosen from the location. The .com, .co.uk, .de, .ca, .co.in, .com.au and .fr sites have been checked; other country sites are mapped but not verified, and the log says so.
- This Actor works as a job board scraper for Glassdoor only; other job boards are not covered.
- Private or login-only data is not collected. Reviews and interviews are not collected either; only short review highlights and benefits appear per employer.
- If Glassdoor refuses requests even after the Actor switches connections, the run stops and keeps the jobs it already saved.
| Message or value | Meaning | What to do |
|---|---|---|
Done: N jobs saved. | The run finished normally | Open the Output tab |
No jobs found for this search. | Nothing matched | Try other keywords, a wider location or fewer filters |
Spend limit reached after N results. | Your maximum charge per run was reached | Raise the maximum charge to collect more |
Glassdoor refused the requests | Requests were blocked | Try again later or choose a different proxy |
error: job not found (expired or removed) | A job ID or job link no longer exists | Not charged; remove it from the list |
🔌 Integrating Glassdoor Jobs Scraper with other apps
Run the Actor from the Apify API, send results to other apps through Apify integrations, or connect it to Make, Zapier and webhooks. To repeat a search with the same filters, use schedules. The Apify API reference explains how to start runs and read datasets.
curl -X POST "https://api.apify.com/v2/actors/data_wiki~glassdoor-jobs-scraper/runs" \-H "Authorization: Bearer <YOUR_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"urls":["data analyst"],"location":"Austin, TX","maxItems":50}'
AI agents can find and run this Actor through the hosted Apify MCP server.
🔗 Other hiring and company data Actors by data_wiki
These Actors sit next to this one in hiring and company research. Only the first covers the same site; the other three read different sources, so the relation is by use case only.
| Actor | What it extracts | When to use it |
|---|---|---|
| Glassdoor employee reviews and interviews scraper | Starts from company names, links or IDs and returns typed rows: company profile, reviews, interviews, salaries and jobs | When you want what employees write about a company; this Actor instead starts from job searches |
| Website contact details extractor | Emails, phone numbers and social links from a list of websites | When you have company websites from company_website and want contact details |
| Website technology lookup | Technologies a website runs, such as CMS, analytics and hosting | When you research an employer or competitor from its website |
| LinkedIn public profile scraper | Public LinkedIn profile data from profile links | When you work in recruiting and need profile data, not job ads (different data and different site) |
| LinkedIn candidate profile details | Experience, education and employer details per listed profile | You found a job market and want profile details of professionals you picked. |
⚖️ Is it legal to scrape Glassdoor?
The Actor reads public pages that any visitor can see, with no login and no private data. Job posts can still contain personal data, such as a recruiter name, an email address or a phone number inside a description, and company_ceo is the name of a person. The same rules apply to any Glassdoor scraper. You are responsible for using the data under GDPR, CCPA, anti-spam rules and the Glassdoor terms. Keep personal details out of downstream use unless you have a lawful basis, and delete them on request. Read Apify's guides on whether web scraping is legal and ethical web scraping. If you are unsure, ask a lawyer.
❓ FAQ
Do I need a Glassdoor account or cookies?
No. This Glassdoor job scraper reads public job pages with plain HTTP requests, no browser and no login.
Is there a Glassdoor jobs API?
You can run this Actor through the Apify API and read the results as JSON. It is not an official Glassdoor API. See the Integrating section for a call example.
How many jobs can one run collect?
Set maxItems up to 100000, or 0 for everything reachable. One Glassdoor search tops out near 800 rows, and the Actor runs extra passes and removes duplicates to get further.
Why do some jobs have no salary?
Glassdoor job postings do not all show pay. Those jobs stay in the results with empty salary fields. When Glassdoor shows an estimate instead of an employer figure, job_salary_source says glassdoor_estimate, which also helps you filter Glassdoor salary estimates out of a pay analysis.
Can the Glassdoor Jobs Scraper run on a schedule?
Yes. Use an Apify schedule with the same input. As a job scraper without memory between runs, it needs postedWithinDays or excludeJobIds to avoid repeats.
Do I need a proxy?
No. By default no proxy is used. If Glassdoor refuses requests, the Actor switches to a proxy automatically and keeps it for the rest of the run. You can also set your own in Proxy configuration.
How is this different from the Glassdoor Reviews & Jobs Scraper?
This Actor starts from job searches and returns one row per job, with salary and employer rating. The Glassdoor reviews and jobs Actor starts from company names, links or IDs and returns typed rows such as reviews and interviews. As a Glassdoor job listings scraper, this one does not collect reviews or interviews.
Can I use it through an MCP server?
Yes. Add the hosted Apify MCP server to your AI client and ask it to find and call data_wiki/glassdoor-jobs-scraper with the input fields shown above.
💬 Your feedback
Found a bug or a missing field? Open an issue in the Issues tab and include the run link. Need a custom solution? Contact hello.datawiki@gmail.com.