Glassdoor Jobs Scraper avatar

Glassdoor Jobs Scraper

Pricing

from $0.70 / 1,000 results

Go to Apify Store
Glassdoor Jobs Scraper

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

Data WiKi

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

🚀 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.

FieldDescriptionExample
job_idGlassdoor listing ID1000000000001
job_title, job_normalized_titleTitle as posted and the standard title Glassdoor maps it toData Analyst, data analyst
job_url, job_apply_urlPublic job page and apply linkhttps://www.glassdoor.com/job-listing/example.htm?jl=1000000000001
job_posted_date, job_age_in_daysPosting date (today minus the age in days) and age2026-11-03, 4
job_location, job_workplace_type, job_remoteLocation text, workplace type and a remote flag, which gives remote jobs dataAustin, TX, on-site, false
job_city, job_state, job_country, job_latitude, job_longitudeMap position of the job (needs full job details)Austin, TX, US
job_salary_min, job_salary_median, job_salary_maxLow end (10th percentile), middle and high end (90th percentile) of the pay range80000, 95000, 112000
job_salary_currency, job_salary_period, job_salary_source, job_salary_estimatedCurrency, pay period, employer or glassdoor_estimate, and an estimate flagUSD, annual, employer, false
job_types, job_skills, job_education, job_years_experience, job_attributesEmployment types and requirements Glassdoor listsFull-time, SQL
job_description_text, job_description_htmlFull description (needs full job details)Text of the posting
company_name, company_rating, company_size, company_logoEmployer name, overall rating, size bucket and logoExample Analytics Inc., 4.1
company_industry, company_sector, company_headquarters, company_website, company_founded, company_revenue, company_type, company_ceoEmployer facts (need full job details)Software, Austin, TX
company_ratings, company_review_count, company_review_highlights, company_benefits_rating, company_benefits_highlightsSub-ratings, review count, short review sentences and mentioned benefits (need full job details)work_life_balance 3.9
company_profileDescription, mission, awards and stock symbol (needs Company profile)Object
salary_benchmarkMarket pay for the title and location (needs Salary benchmark)Object
source_site, scraped_at, errorGlassdoor site used, collection time, and a message for a job ID that was not foundwww.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_median and job_salary_max for 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_type and job_age_in_days for a field you follow.
  • Hiring trends: run the same search again and again with postedWithinDays to see how many new roles appear.
  • Competitor hiring analysis: set the company filter 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 remoteOnly and keep only jobs marked remote.
  • Best companies to work for: combine minCompanyRating and companySize to shortlist employers that are hiring now.

🛠️ How to scrape Glassdoor jobs

  1. Create a free Apify account and open the Actor in Apify Console.
  2. Add one or more job titles, Glassdoor search links, job links or job IDs to Search keywords, URLs or job IDs.
  3. Enter a Location, for example Austin, TX, Germany or Remote.
  4. Set Max jobs and any filters, such as Posted within (days) or Job type.
  5. Switch on Full job details, Company profile or Salary benchmark if you want more than the listing data.
  6. Click Start, watch the numbered log lines, and open the Output tab when the run finishes.
  7. 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 tierPrice per main_resultPrice 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
}
FieldWhat it does
urlsKeywords, Glassdoor search links, job links or job IDs, one per line. Required.
locationCity, state or country, or Remote, for your Glassdoor job search by location. Empty searches the whole country site. Default New York, NY.
maxItemsTotal jobs across all searches. 0 means everything reachable. Default 10.
scrapeJobDetailsAdds the full description, skills, benefits, review highlights, employer snapshot and map position. One extra request per job. Default on.
scrapeCompanyProfileAdds the employer description, mission, awards, stock symbol and review counts. One request per employer. Default off.
salaryBenchmarkAdds 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.
postedWithinDaysOnly 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.
jobTypeany, fulltime, parttime, contract, internship, temporary or apprenticeship.
remoteOnlyKeep only Glassdoor remote jobs.
easyApplyOnlyKeep only Glassdoor easy apply jobs, which you can apply to directly.
seniorityany, entrylevel (for entry level jobs data), midseniorlevel, director or executive.
minSalary, maxSalaryYearly salary bounds in the site's currency, compared with the median pay. Jobs with no published salary are kept.
minCompanyRatingMinimum employer rating from 1 to 5. Jobs without a rating are kept.
companySizeany, 1-200, 201-500, 501-1000, 1001-5000 or 5001+.
radiusDistance around the location: miles on the .com site, kilometres on other sites.
sortByrelevance, newest or oldest.
company, excludeCompanies, excludeJobIdsKeep one employer, drop employers, or skip job IDs you already have.
proxyConfigurationOptional. The default is no proxy.

💡 Start with a small maxItems to 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.

TableContents
Jobs overviewOne row per job with salary, company and location fields
LocationsCity, state, country, map position and workplace type
SalariesSalary range, currency, period and whether it is an employer figure or an estimate, enough for a Glassdoor salary by city comparison
DescriptionsFull descriptions, skills, education, experience and attributes
CompaniesOne row per employer, a hiring companies list with rating, size, headquarters and industry
Company ratingsWork-life balance, compensation, culture, careers, management and CEO approval
Reviews & benefitsReview highlights and the benefits employees mention most
Company profilesDescription, mission, awards and stock symbol
Salary benchmarksMarket 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_min and job_salary_max are the 10th and 90th percentile of the pay range, not the lowest and highest figure ever posted.
  • minSalary and maxSalary are compared with the median pay converted to a yearly figure.
  • Sorting by oldest collects 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 valueMeaningWhat to do
Done: N jobs saved.The run finished normallyOpen the Output tab
No jobs found for this search.Nothing matchedTry other keywords, a wider location or fewer filters
Spend limit reached after N results.Your maximum charge per run was reachedRaise the maximum charge to collect more
Glassdoor refused the requestsRequests were blockedTry again later or choose a different proxy
error: job not found (expired or removed)A job ID or job link no longer existsNot 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.

ActorWhat it extractsWhen to use it
Glassdoor employee reviews and interviews scraperStarts from company names, links or IDs and returns typed rows: company profile, reviews, interviews, salaries and jobsWhen you want what employees write about a company; this Actor instead starts from job searches
Website contact details extractorEmails, phone numbers and social links from a list of websitesWhen you have company websites from company_website and want contact details
Website technology lookupTechnologies a website runs, such as CMS, analytics and hostingWhen you research an employer or competitor from its website
LinkedIn public profile scraperPublic LinkedIn profile data from profile linksWhen you work in recruiting and need profile data, not job ads (different data and different site)
LinkedIn candidate profile detailsExperience, education and employer details per listed profileYou found a job market and want profile details of professionals you picked.

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.