Glassdoor Jobs Scraper - Most Comprehensive
Pricing
from $0.04 / 1,000 jobs
Glassdoor Jobs Scraper - Most Comprehensive
π₯ ~$0.1/1K jobs π₯ Scrape Glassdoor job listings with title, description, salary, location, and company details.
Pricing
from $0.04 / 1,000 jobs
Rating
4.7
(3)
Developer
Kai
Maintained by CommunityActor stats
2
Bookmarked
237
Total users
70
Monthly active users
8 days ago
Last modified
Categories
Share
Glassdoor Jobs Scraper - Jobs with Full Employer Profiles
Scrape Glassdoor job listings with full descriptions, salary ranges, skills, coordinates, and the link to apply on the employer's own site. Every job also carries a complete employer profile: all employer ratings, review and salary counts, open jobs, benefits with employee comments, workplace awards, and links to the company's Glassdoor pages.
Search by keyword and location, collect one employer's jobs, or reuse a Glassdoor search URL. Starting at $0.04 per 1,000 jobs.
Use cases
Job boards and job alerts
Publish fresh listings with full descriptions, salaries, and locations. Run the same input every day on an Apify schedule.
{"keyword": "Software Engineer","location": "San Francisco, CA","fromAge": "1","maxJobs": 0}
Use profile.title, profile.description, profile.postedDate,
compensation.salaryMin, compensation.salaryMax, location.city, and
applyUrl.
Salary research
Compare pay by role, place, and company.
{"keyword": "Data Scientist","location": "New York","maxJobs": 500}
Use compensation.salaryMin, compensation.salaryMedian,
compensation.salaryMax, compensation.period, compensation.source,
profile.normalizedTitle, profile.yearsOfExperience, and
employer.salaryCount.
Employer research
Compare employers for job seekers, employer branding, or market reports.
{"urls": ["https://www.glassdoor.com/Jobs/Google-Jobs-E9079.htm","https://www.glassdoor.com/Jobs/Meta-Jobs-E40772.htm"],"maxJobs": 50}
Use employer.ratings, employer.reviewCount, employer.benefits,
employer.awards, and employer.links.
Sales and recruiting leads
Find companies that hire now, with their size, revenue, website, and number of open jobs.
{"keyword": "Registered Nurse","location": "Austin, TX","fromAge": "7","employerSizes": ["201to500", "501to1000"],"maxJobs": 200}
Use employer.name, employer.website, employer.size, employer.revenue,
employer.headquarters, and employer.openJobCount.
Company hiring monitor
Track one company's openings over time. Run an employer page on an Apify
schedule, and compare jobId, profile.postedDate, and profile.expired
between runs.
Choose how to find jobs
| Starting point | Input | Use it for |
|---|---|---|
| A job title, skill, or company, and a place | keyword, with optional location | Find jobs in an area |
| One employer | An employer page in urls | Collect that company's jobs |
| A Glassdoor search that you already use | A search-results page in urls | Reuse its keyword and location |
| Several of these | urls and keyword | URL targets run first, the keyword target runs last |
What each job includes
- Job: title, normalized title, full HTML description, snippet, posting date, age in days, discovery date, expired flag, Easy Apply flag, sponsored flag, job type, work arrangement, skills, education, and years of experience
- Location: display name, city, state, country, latitude, longitude, and location type
- Salary: low, median, and high values, currency, period, and source (employer-provided or Glassdoor estimate)
- Employer profile: name, logo, size, type, revenue, founding year, headquarters, industry, sector, website, and CEO with photo
- Employer ratings: overall, career opportunities, compensation and benefits, culture and values, senior management, work-life balance, diversity and inclusion, CEO approval with its vote count, recommend to a friend, and business outlook
- Employer activity: number of reviews, salaries, and open jobs on Glassdoor
- Benefits: benefits rating and review count, the employer's benefits summary, and the top benefits with an employee comment for each
- Awards: current workplace awards, such as Best Places to Work and Best CEOs, with rank and year
- Links: the Glassdoor job page, the apply page (usually on the employer's own careers site), and the company's Glassdoor overview, reviews, salaries, benefits, and photos pages
Search for jobs
Start with a keyword and a location:
{"keyword": "Software Engineer","location": "San Francisco, CA","maxJobs": 20}
The Actor saves up to 20 jobs. Set maxJobs to set an upper limit, or use 0
to remove the Actor limit. Glassdoor can return fewer jobs.
If Glassdoor cannot resolve location, the Actor still runs the keyword search
without a location filter. Omit location to search all locations for the
keyword.
Add search filters
This example keeps recent, full-time, remote, mid- or senior-level roles with a minimum annual salary of 100000 in the local currency:
{"keyword": "Software Engineer","location": "San Francisco, CA","fromAge": "7","jobType": ["fulltime"],"remoteWorkType": ["1"],"seniorityType": ["midseniorlevel"],"minSalary": 100000,"maxJobs": 50}
The filters apply to keyword and URL targets.
Search within a radius
{"keyword": "Software Engineer","location": "Austin, TX","radius": "25","maxJobs": 50}
radius is in miles.
Collect jobs from employer pages
{"urls": ["https://www.glassdoor.com/Jobs/Google-Jobs-E9079.htm"],"maxJobs": 20}
Add several employer pages to process them in input order. Employer URLs must
contain /Jobs/...-E<ID>.
Reuse a Glassdoor search URL
{"urls": ["https://www.glassdoor.com/Job/san-francisco-software-engineer-jobs-SRCH_IL.0,13_IC1147401_KO14,31.htm"]}
The Actor reads the keyword and the encoded location from the URL. Search URLs
can use an SEO path or query parameters under /Job/. Set all other filters
with input fields.
How search results work
Result range. One search returns at most 3,000 results, 30 pages of 100. Glassdoor repeats jobs across pages, so a search gives fewer unique jobs. A broad search, such as software engineer in the United States, gave 1,600 to 1,900 unique jobs in our tests.
More jobs. To collect more, run more targeted searches: add filters such as
fromAge, jobType, or employerSizes, or search smaller locations. With
several employerSizes, each size is searched on its own.
Repeated jobs. A job ID is stored once in each target, at its first occurrence. The same job can appear again when a different target returns it.
Order. Targets run in input order. maxJobs applies to each target, not
to the complete run. Job order inside one target can change between runs.
Input
Provide a keyword or at least one supported URL. A location affects the
keyword target only.
Input reference
| Parameter | Type | Default | Effect |
|---|---|---|---|
| keyword | string | empty | Job title, skill, or company name. |
| location | string | empty | City, state, or country for the keyword search. |
| urls | string[] | empty | HTTPS Glassdoor employer pages under /Jobs/ or search pages under /Job/. Optional when keyword is set. |
| maxJobs | integer, 0 or more | 20 | Upper limit on saved jobs for each target. 0 removes the Actor limit. One search returns at most 3,000 results. |
| fromAge | "1", "3", "7", "14", or "30" | any time | Keeps jobs posted in the last N days. |
| jobType | string[] of fulltime, parttime, contract, internship, temporary | any type | Employment type. |
| seniorityType | string[] of entrylevel, midseniorlevel, director, executive | any level | Seniority level. |
| remoteWorkType | string[] of "1" (remote), "2" (hybrid), "3" (on-site) | any | Work arrangement. |
| easyApply | boolean | false | Keeps only Easy Apply jobs. |
| minSalary | integer | none | Minimum annual salary in the local currency. |
| maxSalary | integer | none | Maximum annual salary in the local currency. |
| radius | "5", "10", "15", "25", "50", or "100" | none | Search radius in miles. |
| employerSizes | string[] of 1to50, 51to200, 201to500, 501to1000, 1001to5000, 5001to10000, 10001+ | any size | Saves only jobs whose employer size matches. |
| postedBy | string[] of jobPoster, staffingAgency | any | Who posted the job. |
| proxyConfiguration | object | {"useApifyProxy":true} | Connection settings for the run. Keep the default. |
- Supported hosts are HTTPS pages on
glassdoor.comandglassdoor.co.uk. The Actor skips an unsupported URL when another valid target remains. - Unknown input fields are ignored.
- The Actor does not compare
minSalarywithmaxSalary. Use a range in which the minimum is not higher than the maximum.
Output
Each Dataset item is one job. Every documented field is present in every job.
When Glassdoor does not supply a value, the field is null or [].
Sample job
This job is from Apple in Sunnyvale, CA, collected on 13 October 2026. Long text keeps its first words, and square brackets mark values removed from the documentation. It is not a saved Dataset item.
Field reference
| Field | Type and contents |
|---|---|
jobId | number. Glassdoor job ID. |
url | string. Glassdoor job page. |
applyUrl | string or null. The page where the candidate applies. |
profile | object. title is a string. normalizedTitle, description (HTML), descriptionSnippet, discoverDate, and yearsOfExperience are strings or null. postedDate is a YYYY-MM-DD string or null. ageInDays is a number or null. expired, easyApply, and isSponsored are booleans. jobType, remoteWorkTypes, skills, and education are string arrays. |
location | object. name, type, city, state, and country are strings or null. lat and lng are numbers or null. |
compensation | object. salaryMin, salaryMedian, and salaryMax are numbers or null. currency, period, and source are strings or null. |
employer | object. id is a number. name, shortName, logoUrl, size, sizeCategory, type, revenue, headquarters, industry, sector, and website are strings or null. yearFounded, reviewCount, salaryCount, and openJobCount are numbers or null. |
employer.ceo | {name: string, photoUrl: string or null} or null. |
employer.ratings | object or null. overall, careerOpportunities, compensationAndBenefits, cultureAndValues, seniorManagement, workLifeBalance, diversityAndInclusion, ceoRating, ceoRatingsCount, recommendToFriend, and businessOutlook are numbers or null. |
employer.links | object or null. overview, reviews, salaries, benefits, and photos are Glassdoor page URLs or null. |
employer.awards | Array of {name: string, rank: number or null, period: string or null} objects. |
employer.benefits | object or null. rating and reviewCount are numbers or null. summary is an HTML string or null. highlights is an array of {name: string, commentCount: number or null, phrase: string or null} objects. |
meta | object. seoJobLink is a string or null. scrapedAt is a string. detailStatus is complete or partial. |
ceoRating,recommendToFriend, andbusinessOutlookare shares from 0 to 1, such as0.83for 83% approval. The other employer ratings andbenefits.ratinguse a 1 to 5 scale.salaryMin,salaryMedian, andsalaryMaxare the low, middle, and high values of Glassdoor's salary range. They are not guaranteed offer bounds.awardslists the company's current awards. It is empty when the company has none.applyUrlis usually the job on the employer's careers site. Some employers post a tracking link that redirects there, such as thejsv3.recruitics.comlink in the sample job. Candidates apply for Easy Apply jobs on the job board. Many of these links go to a job board page, not to the employer's site. Useprofile.easyApplyto tell them apart.isSponsoredshows whether Glassdoor marked the job as a sponsored listing in this search. The same job can be sponsored in one search and not in another.
Search and field limits
How many jobs can I collect?
maxJobs is an upper limit for each target, not a required result count.
Glassdoor can return fewer jobs. Set maxJobs to 0 to remove the Actor
limit. One search returns at most 3,000 results, and some of them repeat. See
How search results work.
A valid search with no matches succeeds with an empty dataset.
Why are some fields empty?
Glassdoor does not show all fields on every job. When some job details are
unavailable, the Actor still saves the job and sets meta.detailStatus to
partial. A partial job has the core job fields only. Its full description,
detailed location, and most employer profile fields are null or empty.
complete means that all job details were collected. It does not mean that
every optional field has a value. applyUrl is null when no apply link is
available for the job.
How does employerSizes work?
The Actor saves only jobs whose employer size matches a selected value. A job with an unknown employer size is not saved.
What happens when a target fails?
The Actor keeps the saved jobs, tries the later targets, and finishes with a warning. Invalid input, no valid target, or a storage error marks the run as failed.
Can a job disappear after I collect it?
Yes. Glassdoor can change or remove listings at any time. A closed job usually leaves the search results, so compare runs of the same input to find the jobs that are gone.
More job scrapers
Compare the same role across job boards. Each Actor saves jobs to a Dataset that you can export in the same way.
- Indeed Jobs Scraper: job listings from 62 countries, with full descriptions, parsed salaries, company profiles, and apply links.
- LinkedIn Jobs Scraper: search by role and location, browse the jobs of one company, or collect jobs by ID. No LinkedIn login is required.
- Google Jobs Scraper: public Google Jobs results with salary data, qualifications, and application links.