Glassdoor Scraper avatar

Glassdoor Scraper

Pricing

from $3.49 / 1,000 results

Go to Apify Store
Glassdoor Scraper

Glassdoor Scraper

Scrape Glassdoor reviews, interviews, salaries, jobs, company overviews, office locations, benefits and culture ratings. No login or cookies. Search jobs with filters, monitor new reviews and score jobs against your skills. Export JSON, CSV, Excel.

Pricing

from $3.49 / 1,000 results

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Security

Limited permissions

Share

Glassdoor Scraper

Glassdoor Scraper extracts company data from Glassdoor: employee reviews, interview reports, salaries, jobs, company overviews, office locations, benefit reviews and culture ratings. Paste company URLs and choose a data type, or run a filtered job search. You don't need a Glassdoor account, cookies or an API key.

One actor for all eight Glassdoor data types, with one flat row per item. Mix any companies in one run, monitor new reviews on a schedule, and score jobs against your own skills.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Apify Actor: parsebird/glassdoor-scraper. Scrapes Glassdoor company data and job searches without login or cookies. Call via ApifyClient: client.actor("parsebird/glassdoor-scraper").call(run_input={"startUrls": [{"url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm"}], "command": "reviews", "sortReviewsBy": "DATE", "maxItems": 100}). Give startUrls, or searchJobsByKeyword with searchKeyword and/or searchLocation. Inputs: startUrls (array of {url}, any Glassdoor company tab), command ("reviews" | "interviews" | "locations" | "salaries" | "jobs" | "overview" | "benefits" | "culture"; omitted = follow each URL's tab), includes (string[] keyword filter), maxItems (integer per URL and per job search, 0 = all, default 100), sortReviewsBy ("RELEVANCE" | "DATE" | "DATE_ASC" | "RATING" | "RATING_ASC"), reviewsStartDate, interviewsStartDate, benefitsStartDate (YYYY-MM-DD), monitoringModeForReviews (only reviews newer than the previous run), includeAllReviews (every language), includeCompanyReviewStats, includeCompanyInterviewStats, includeCompanyBenefitsStats, includeAllSalaries (every country), saveOnlyUniqueItems (default true), maxConcurrency, minConcurrency, maxRequestRetries, proxy. Job search: searchJobsByKeyword (boolean), searchKeyword, searchLocation, sortBy ("date_desc" | "date_asc"), maxDaysOld ("1" | "3" | "7" | "14" | "30"), remoteWorkType ("0" | "1" = remote only), applicationType ("0" | "1" = Easy Apply only), jobType ("CF3CP" full-time | "75GKK" part-time | "NJXCK" contract | "4HKF7" temporary | "7SBAT" temp-to-hire | "internship" | "apprenticeship" | "entrylevel"), minSalary, maxSalary (strings), minRating ("1.0"-"4.0"), employerSize ("1"-"5"), radius ("0" | "5" | "10" | "15" | "25" | "50" | "100"), industryNid, sgocId (Glassdoor IDs as strings), deepSearch (boolean), expandKeywords (string[]), resumeKeywords (array of {keyword}; adds description, matchScore, matchedSkills, missingSkills). Output: one flat row per item, with fields that depend on command; see the README. Pricing: pay per result, plus a small run start fee. Full API spec: https://apify.com/parsebird/glassdoor-scraper/api. Get your token: https://console.apify.com/settings/integrations.

What is Glassdoor Scraper?

Glassdoor Scraper turns Glassdoor company pages and job searches into a dataset. Paste a company address from any tab, choose what you want, and click Start. To try it, keep the prefilled Google address, which saves 20 reviews.

It works as a Glassdoor API alternative, since Glassdoor has no open public API for this data. Download the results as JSON, CSV or Excel, or read them through the Apify API.

What can Glassdoor Scraper do?

  • โญ Scrape reviews. Get pros, cons, advice and every sub-rating. Sort them, filter by keyword or date, and read every language.
  • ๐Ÿ”” Monitor new reviews. Schedule a run that saves only reviews newer than the previous run.
  • ๐Ÿ’ฌ Scrape interviews. Get difficulty, experience, outcome, the process description and interview questions.
  • ๐Ÿ’ฐ Scrape salaries. Get pay percentiles by job title for one country or all of them, or the detail for one job title.
  • ๐Ÿ’ผ Scrape jobs. List a company's open jobs, or search all of Glassdoor with filters for date, pay, job type, remote work, rating, company size, radius, industry and job function.
  • ๐ŸŽฏ Score jobs against your skills. Add resume keywords to get a match score and the full description for each job.
  • ๐Ÿข Get company data. Read overviews, office locations, benefit reviews and culture ratings by demographic group.
  • ๐Ÿ“ˆ Add company stats. Attach review, interview or benefit statistics to each row.

Because it runs on Apify, you also get:

What data can you extract from Glassdoor?

Which fields you get depends on the data type. These are the main ones.

Data typeMain fields
reviewsreviewId, reviewDateTime, summary, pros, cons, advice, ratingOverall and 9 other ratings, jobTitle, location, employmentStatus, isCurrentJob, lengthOfEmployment, countHelpful, employer, employerResponses, and companyReviewStats when turned on
interviewsid, reviewDateTime, jobTitle, location, difficulty, experience, outcome, source, durationDays, processDescription, negotiationDescription, userQuestions, and companyInterviewStats when turned on
salariesjobTitle, salaryCount, payPeriod, currency, employer, country, and mean and percentiles for base, total, bonus, stock, commission, profit sharing and tips
jobslistingId, jobTitleText, employerNameFromSearch, locationName, ageInDays, payCurrency, payPeriod, payPeriodAdjustedPay, rating, easyApply, sponsored, remoteWorkTypes, jobLink, seoJobLink, and description, matchScore, matchedSkills, missingSkills with resume keywords
overviewid, shortName, headquarters, size, revenue, type, yearFounded, website, primaryIndustry, ratings, counts, overview, competitors, awards, bestPlacesToWork, squareLogoUrl
locationsid, addressLine1, cityName, administrativeAreaName1, countryName, postalCode, latitude, longitude, metroId
benefitsid, rating, createDate, currentJob, userEnteredJobTitle, city, state, benefitComments, and companyBenefitStats when turned on
culturecategory, such as gender or ethnicity, and categoryRatings with review counts and every rating for each group

Fields a reviewer left out, or that Glassdoor doesn't list, are null or empty.

How to scrape Glassdoor step by step

  1. Open Glassdoor Scraper and sign in to Apify.
  2. Add Company URLs, such as https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm. Or turn on Search jobs by keyword and enter a keyword and location.
  3. Choose a Data type.
  4. Set Max items, the most rows to save for each URL and for the job search.
  5. Open the other sections for dates, sorting, statistics and job filters.
  6. Click Start and wait for the run to finish.
  7. Download your Glassdoor data as JSON, CSV or Excel from the Output tab.

Which Glassdoor URLs can you use?

TabAddress format
Reviews/Reviews/{Company}-Reviews-E{id}.htm
Jobs/Jobs/{Company}-Jobs-E{id}.htm
Salaries/Salary/{Company}-Salaries-E{id}.htm
Interviews/Interview/{Company}-Interview-Questions-E{id}.htm
Overview/Overview/Working-at-{Company}-EI_IE{id}.htm
Benefits/Benefits/{Company}-Benefits-EI_IE{id}.htm

Only the employer ID matters, so any tab works with any Data type. A salary address that names a job title returns one detailed row for that title.

Input parameters

ParameterTypeDefaultDescription
startUrlsarrayโ€”Glassdoor company addresses from any tab
commandstringFollows each URL's tabreviews, interviews, locations, salaries, jobs, overview, benefits or culture
includesstring[]โ€”Keep only rows containing at least one of these words
maxItemsinteger100Most rows per URL and per job search. 0 means everything available.
sortReviewsBystringRELEVANCERELEVANCE, DATE, DATE_ASC, RATING or RATING_ASC
reviewsStartDatestringโ€”Skip older reviews. Format: 2026-01-31.
monitoringModeForReviewsbooleanfalseSave only reviews newer than the previous run
includeAllReviewsbooleanfalseRead reviews in every language
includeCompanyReviewStatsbooleanfalseAdd companyReviewStats to each review
interviewsStartDatestringโ€”Skip older interviews
includeCompanyInterviewStatsbooleanfalseAdd companyInterviewStats to each interview
benefitsStartDatestringโ€”Skip older benefit reviews
includeCompanyBenefitsStatsbooleanfalseAdd companyBenefitStats to each benefit review
includeAllSalariesbooleanfalseRead salaries in every country Glassdoor lists
saveOnlyUniqueItemsbooleantrueSkip rows already saved in this run
maxConcurrency, minConcurrencyinteger3, 1Requests at once. Glassdoor rate-limits fast clients.
maxRequestRetriesinteger4Retries for a failed request
proxyobjectโ€”Leave empty. Residential proxies are built in at no extra cost.

Job search parameters

ParameterTypeDescription
searchJobsByKeywordbooleanTurn on job search
searchKeyword, searchLocationstringJob title or skill, and a city, state or country
sortBystringdate_desc or date_asc. Empty means most relevant.
maxDaysOldstring1, 3, 7, 14 or 30
remoteWorkTypestring1 for remote only
applicationTypestring1 for Easy Apply only
jobTypestringCF3CP full-time, 75GKK part-time, NJXCK contract, 4HKF7 temporary, 7SBAT temp-to-hire, internship, apprenticeship or entrylevel
minSalary, maxSalarystringYearly amounts
minRatingstring1.0, 2.0, 3.0 or 4.0
employerSizestringGlassdoor's bands from 1 (tiny) to 5 (huge)
radiusstringMiles from a city: 0, 5, 10, 15, 25, 50 or 100
industryNidstringIndustry ID, such as 10013 for Information Technology or 10012 for Healthcare
sgocIdstringJob function ID, such as 1011 for Information Technology or 1009 for Healthcare
deepSearchbooleanAlso search the most common job titles in the results, and merge without duplicates
expandKeywordsstring[]Extra job titles to search when Deep search is on
resumeKeywordsarraySkills as {"keyword": "ICU"}. Adds a match score to each job without changing which jobs come back.

These filters also apply to a company's jobs, when the data type is jobs.

Every review of a company, with statistics, newest first:

{
"startUrls": [{ "url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm" }],
"command": "reviews",
"includeAllReviews": true,
"includeCompanyReviewStats": true,
"sortReviewsBy": "DATE",
"maxItems": 1000
}

A wide job search, scored against your skills:

{
"searchJobsByKeyword": true,
"searchKeyword": "registered nurse",
"searchLocation": "Chicago, IL",
"jobType": "CF3CP",
"minSalary": "70000",
"deepSearch": true,
"expandKeywords": ["nurse practitioner"],
"resumeKeywords": [{ "keyword": "ICU" }, { "keyword": "pediatrics" }],
"saveOnlyUniqueItems": true,
"maxItems": 500
}

Output example

A review:

{
"__typename": "EmployerReviewRG",
"reviewId": 106216861,
"reviewDateTime": "2026-11-04T20:27:36.683",
"summary": "Good benefits and nice campus with no complaints",
"pros": "good benefits and compensation, nice campus",
"cons": "i dont really have anything to complain",
"advice": null,
"ratingOverall": 5,
"ratingWorkLifeBalance": 5,
"ratingCompensationAndBenefits": 5,
"ratingCareerOpportunities": 5,
"ratingCultureAndValues": 5,
"ratingDiversityAndInclusion": 5,
"ratingSeniorLeadership": 5,
"isCurrentJob": false,
"employmentStatus": "REGULAR",
"lengthOfEmployment": 0,
"location": { "id": 1147442, "name": "Sunnyvale, CA", "type": "CITY" },
"employer": {
"id": 9079,
"shortName": "Google",
"largeLogoUrl": "https://media.glassdoor.com/sqll/9079/google-squarelogo-1441130773284.png",
"regularLogoUrl": "https://media.glassdoor.com/sql/9079/google-squarelogo-1441130773284.png"
},
"languageId": "eng",
"countHelpful": 0,
"countNotHelpful": 0
}

A salary:

{
"__typename": "AggregatedSalaryEstimatesResult",
"jobTitle": { "id": 4279, "gocId": 100063, "text": "Software Engineer" },
"employer": { "id": 9079, "name": "Google Inc.", "primaryIndustryId": 200063 },
"country": { "id": 1, "name": "United States" },
"currency": { "code": "USD", "symbol": "$" },
"payPeriod": "ANNUAL",
"salaryCount": 51625,
"confidence": "CONFIDENT",
"basePayStatistics": {
"mean": 176776.22,
"percentiles": [
{ "ident": "P10", "value": 144297.03 },
{ "ident": "P50", "value": 176776.22 },
{ "ident": "P90", "value": 216566.01 }
]
}
}

A job from a search with resume keywords:

{
"listingId": 1010011509199,
"__typename": "JobViewHeader",
"jobTitleText": "Registered Nurse - TEAM LEADER-WOMEN/CHILDREN L&D Experience Required",
"employerNameFromSearch": "Methodist Hospitals",
"employer": { "id": 20261 },
"locationName": "Gary, IN",
"ageInDays": 246,
"rating": 3.4,
"easyApply": false,
"sponsored": false,
"jobTypeKeys": ["search-jobs.job-type-options.fulltime"],
"description": "<div>Overview: ...</div>",
"matchScore": 0,
"matchedSkills": [],
"missingSkills": ["ICU", "pediatrics"]
}

These examples are shortened, and other data types have the fields listed above.

How to use the Glassdoor API in Python and JavaScript

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("parsebird/glassdoor-scraper").call(run_input={
"startUrls": [{"url": "https://www.glassdoor.com/Reviews/Google-Reviews-E9079.htm"}],
"command": "reviews",
"sortReviewsBy": "DATE",
"maxItems": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["reviewDateTime"], item["ratingOverall"], item["summary"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('parsebird/glassdoor-scraper').call({
searchJobsByKeyword: true,
searchKeyword: 'registered nurse',
searchLocation: 'Chicago, IL',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((job) => console.log(job.jobTitleText, job.employerNameFromSearch, job.locationName));

Get your token in Apify Console. See every option on the API tab.

Use cases

  • Employer brand monitoring: schedule a run to catch new reviews of your company, or a competitor's.
  • Salary benchmarking: compare pay percentiles by job title, company and country.
  • Interview preparation: collect a company's interview questions and processes by job title.
  • Recruiting and sales leads: see which companies are hiring for a role, with pay ranges and locations.
  • Job hunting: rank search results by how well they match your skills.
  • Workplace research: analyse ratings by demographic group, or the themes in pros and cons.

How does Glassdoor Scraper work?

  1. It reads the employer ID from each URL, and your job search if you turned it on.
  2. It opens a Glassdoor session through residential proxies and paces its requests.
  3. It moves through the data page by page until it reaches Max items, your date cutoff or the end.
  4. It skips rows that are duplicates or don't match your keywords, and saves the rest as it goes, so a stopped run keeps its results.

How much does it cost to scrape Glassdoor?

Glassdoor Scraper uses pay-per-event pricing. Compute and proxy costs are included in the event price.

EventFreeBronzeSilverGold
apify-actor-start, per run$0.005$0.005$0.005$0.005
result-scraped, per 1,000$4.49$3.99$3.79$3.49

A start event fires once per run for each GB of run memory, and the default memory stays within one. A result event fires for each row saved, whatever the data type. So 1,000 reviews cost about $4.50 on the Free tier and $3.50 on Gold.

Duplicates and rows dropped by your keyword filter cost nothing. Each overview is one row, each culture category such as gender is one row, and a salary address that names a job title is one row. To cap your spending, set a maximum cost per run in the run options. The run stops at that limit and keeps what it saved.

Glassdoor Scraper only collects data that Glassdoor shows publicly, without logging in. Web scraping of public data is generally legal, but what you may do with the data depends on your purpose and your country. You can read more in Is web scraping legal?

Reviews are anonymous, but their text, job titles and locations can still be personal data, so laws such as the GDPR and CCPA may apply if you store or use them. Review text may be protected by copyright. Check Glassdoor's terms too, and ask a lawyer if you are unsure. This section is not legal advice.

Other scrapers you may like

FAQ

Do I need a Glassdoor account or cookies? No. Glassdoor Scraper needs no login, no cookies and no setup.

Is there a limit on how many reviews I can get? The scraper doesn't stop at 200 reviews. In our tests it read 3,000 Google reviews in one run, and Glassdoor returned pages far beyond that. Set Max items to 0 for everything.

What does "Include reviews in every language" change? With it off, you get Glassdoor's default view, which was 51,198 of Google's 74,074 reviews in our test. With it on, the scraper reads each language in turn, so DATE order applies within each language rather than across the whole run.

Can I sort reviews by most helpful? No. Glassdoor's data offers relevance, date and rating orders, which is what the scraper provides. You can sort your dataset by countHelpful afterwards.

How does monitoring work? With Save only new reviews on, the scraper remembers the newest review it saw for each company and set of settings, in a key-value store in your account. The next run saves only newer reviews. If a run is stopped by your cost limit, the marker doesn't move, so nothing is skipped.

How many interviews can I get? Glassdoor stops each sort order at 10,000 interviews. For longer histories, the scraper also reads newest first and oldest first and removes repeats at no charge, so it can reach about 20,000 or more of a company's interviews, but maybe not all of them.

Why did one job search return only about 500 jobs? Glassdoor stops a single search at about 500 listings, some of them repeated. Turn on Deep search or add Extra keywords to reach more. Repeats are removed at no charge.

Why do I see jobs of another type? Glassdoor treats job type as a preference. In our tests, full-time returned 30 of 30 full-time jobs, while internship and temporary returned a mix.

How is matchScore calculated? It's the percentage of your resume keywords found in the job description as whole words, ignoring case. Fetching descriptions makes these runs slower. A 500-job run took about three minutes in our test.

Where do my rows go if I mix tabs without choosing a data type? The first type goes to the run's default dataset. Each other type gets its own dataset, and the log gives its ID. To keep everything in one place, choose a Data type.

Why is a salary address returning one row? It names a job title, so you get one detailed row with the estimates for that title, the filters used, and the countries available. Use the company's main salary address for a row per job title.

Which countries do salaries cover? The United States by default, or the country in your URL, such as _IN2 for the United Kingdom. Turn on Include salaries in every country for all the countries Glassdoor lists.

Why did a company return no office locations? Glassdoor doesn't list offices for every company. Google had none in our test. The run logs a warning and charges nothing. latitude and longitude are null when Glassdoor has no position.

Which benefit reviews do I get? Those on Glassdoor's United States benefits page for the company, newest first. For Google that was 8,651 reviews, while the company's overall benefit count, in counts.benefitCount of its overview, is higher.

Why does Google show activeStatus as INACTIVE? That's the value Glassdoor returns. It doesn't appear to mean a company has closed, so don't rely on it.

Can I schedule recurring runs? Yes. Use Apify Schedules to run daily, weekly or at any interval.

Something doesn't work. Where do I report it? Open a ticket on the Issues tab. Include your run link so we can look into it.