Job boards & ATS · Live on Apify

Glassdoor Scraper: Jobs, Reviews, Salaries and Company Data

Get public Glassdoor data as table rows. Pick one of 12 modes, such as jobs, reviews, salaries or interviews. It works on 23 country sites without a Glassdoor login.

About $0.36 for 1,000 results$0.00036 per result + $0.0013 per run. Apify bills you, not us.One result in a run of its own: about $0.0017.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

entityTypejob
jobId1010302039988
titleInterim Compliance Data and System Analyst

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: [] in Company URLs. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Collect public Glassdoor jobs with full descriptions, company reviews, salaries, interviews and company profiles from 23 country sites. Research employers, track hiring and compare pay, then export JSON, CSV or Excel with no Glassdoor login.

Good for

  • Track job openings for a role, city or employer, and see only new jobs on each run.
  • Read what employees write about a company: reviews, interviews and benefits.
  • Compare pay for a job title across companies or places.
  • Build company lists by rating, review count or headquarters.

Who uses it

Job market analysts

Track job openings for a role, city or employer.

HR and pay teams

Compare pay for a job title across companies or places.

Researchers

Read what employees write about a company.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.0013 (from $0.00091 on paid Apify plans)Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Job$0.00036 (from $0.000252 on paid Apify plans)One unique job delivered with available full description and employer ratings.
Company profile$0.0009 (from $0.00063 on paid Apify plans)One public company profile delivered.
Review$0.000045 (from $0.000031 on paid Apify plans)One public review delivered, including available full text.
Salary title$0.0027 (from $0.00189 on paid Apify plans)One company salary title or salary market result delivered.
Unblocker page$0.012 (from $0.0084 on paid Apify plans)One successful Apify Unblocker page. Extra to result charges. Failed HTTP responses are not charged.
Company lookup$0.00005 (from $0.000035 on paid Apify plans)One completed public company-name lookup.
Interview$0.0027 (from $0.00189 on paid Apify plans)One public interview record delivered.
Benefit review$0.00004 (from $0.000028 on paid Apify plans)One public benefit review record delivered.
Office location$0.00004 (from $0.000028 on paid Apify plans)One public office location record delivered.
Aggregate culture rating$0.00004 (from $0.000028 on paid Apify plans)One public aggregate culture rating record delivered.
Photo metadata$0.00004 (from $0.000028 on paid Apify plans)One public photo metadata record delivered.
Source work$0.0003 (from $0.00021 on paid Apify plans)For optional enrichment, monitoring, filters, multiple searches or company names, anonymous salary reports, all-country salaries, and empty searches. One unit combines 2 seconds of source work and 100 kB of estimated request data. Fractions add across the run and round up once at the end. Ordinary nonempty results without these options have no work fee.

Examples

  • One result: about $0.0017.
  • 1,000 results: about $0.36.
  • Every day 100 results, for 30 days: about $1.12 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 13,000 results.

Prices checked on 8 November 2026. See the current price on Apify.

Questions

Do I need a Glassdoor account, cookies or an API key?

No. The tool reads public pages and does not log in. Do not send your password or cookies.

Does it collect personal data?

No names of review authors and no personal emails. With enrichEmails it may return generic mailboxes such as info@.

Why did I get fewer rows than I asked for?

maxItems is a limit, not a promise. Glassdoor may have fewer matches, and filters remove rows.

How fresh is the data?

Each row has fetchedAt, the time of the fetch. Job ages and posting dates come from Glassdoor and may be estimates. Run again to refresh.

Can I get only new jobs each day?

Yes. Set onlyNew true and a stateName, and run the Actor on an Apify schedule with the same settings.

Which countries are supported?

The 23 Glassdoor sites in the country list. Company salary and benefit tables use salaryCountryId and benefitsCountryId (1 United States, 2 United Kingdom, 3 Canada).

Is this affiliated with Glassdoor?

No. It is an independent Actor and is not affiliated with, endorsed by or sponsored by Glassdoor.

Details

Step by step on Apify
  1. Open the Input tab. In Data to collect (mode), keep Jobs (box 1 in the picture).
  2. In Job or company name (query) type data analyst. In Job location (location) type London (box 2).
  3. In Country site (country) choose United Kingdom (box 3).
  4. Set Result limit (maxItems) to 10 (box 4). Keep it small for the first run.
  5. Click Start at the bottom of the form.
  6. When the run is done, open the Output tab. Pick a view in the view tabs (1), read the job title, company and rating columns (2) and the salary columns (3), and use Export (4) to download the data.
Use cases
TaskInputYou getKey fieldsNext step
Find data analyst jobs in a citymode jobs, query, location, countryJobtitle, company, location, salaryMin, salaryMax, urlDataset export to CSV or Excel
Monitor new jobs every daymonitor or onlyNew, stateName, an Apify scheduleJobjobId, jobStatus, postedDateEstimate, urlApify schedule and webhook
Read employee feedback for a companymode reviews, companyUrlsReviewtitle, pros, cons, ratingOverall, reviewDateDataset export, API
Find pay for a rolemode salaries, salarySearch or salaryReportsSalarytitle, basePayP50, totalPayP50, currency, periodSpreadsheet
Build a company listmode companySearch, minCompanyRating, minReviewCountCompanycompany, rating, reviewCount, size, headquartersDataset export
Tips for better results
  • Set onlyNew to true and a stateName. Run on a schedule to see only new jobs.
  • Reaching maxItems does not mean you have everything. Check sourceTotal in RUN_SUMMARY.
  • Use several narrow searches to reach more jobs.
Limits and good to know
  • Public data only. No login, no private pages and no paywalled content. The Actor does not collect names of review authors or personal email addresses. enrichEmails reads only the company website (up to five pages) and keeps generic role addresses
  • Source changes. The Actor reads public Glassdoor data that is not documented by Glassdoor. Glassdoor can change or block it. Then a run can fail, and the data can be incomplete
  • Not all results. A search can show more matches than the Actor can collect. Reaching your maxItems does not mean you have everything. RUN_SUMMARY shows sourceTotal (the total Glassdoor shows) and coverageComplete. Use several narrow searches to reach more jobs
  • Speed. The Actor pauses about 0.3 seconds between requests. In our tests 50 full jobs took about 10 seconds, 1,000 reviews about 7 seconds and 7,736 salary titles of one large company about 65 seconds
  • Run time and memory. The default run timeout is 14,400 seconds (4 hours). You can change it in the run options. The Actor stops 15 seconds before the platform timeout. The Actor runs with 256 MB
  • Size. One source response is limited to 16 MB. One Dataset row is limited to about 9 MB. A larger one stops the run with DATASET_ROW_TOO_LARGE, and earlier rows stay saved
  • Monitoring. The history keeps up to 50,000 jobs or 8 MB. Older closed jobs are removed first. Use one run at a time for each stateName. Changed filters need a new stateName. A job missing from a search is not called closed. Glassdoor must show an expiry
  • Dates. sourceDiscoverDate is when Glassdoor found the job. postedDateEstimate is calculated from the listing age. Neither is an exact posting time

Troubleshooting

CodeWhat to do
COMPANY_REQUIREDIn a company mode, add companyUrls, companyNames, employerIds or query.
INVALID_COMPANY_URLUse a public Glassdoor company link (overview, reviews, salaries and other tabs).
INVALID_SEARCH_URLUse a Glassdoor job search link on a supported country site.
SEARCH_URLS_REQUIRE_JOBS_MODEsearchUrls works only in jobs mode.
COMPANY_INPUT_REQUIRES_COMPANY_MODEIn jobs mode use companyName or employerIds, not companyUrls or companyNames.
SALARY_JOB_TITLE_REQUIREDAdd salaryJobTitle for salaryReports.
QUERY_REQUIREDAdd query or queries for salarySearch.
STATE_NAME_REQUIREDAdd stateName when you use monitor, onlyNew or checkClosed.

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "entityType": "job",
  "status": "complete",
  "jobId": "1010302039988",
  "title": "Interim Compliance Data and System Analyst",
  "company": "RHP",
  "companyId": 765675,
  "rating": 4.5,
  "location": "Teddington, South West England, England",
  "url": "https://www.glassdoor.co.uk/job-listing/j?jl=1010302039988",
  "ageInDays": 10,
  "postedDateEstimate": "2026-10-22",
  "postedAt": null,
  "sourceDiscoverDate": "2026-10-21T00:00:00",
  "jobStatus": "stillOpen",
  "employmentType": "Full-time",
  "remoteType": null,
  "description": "What we offer\n\nAlongside a competitive salary, we offer a great range of benefits including: ... (trimmed)",
  "salaryMin": 47195,
  "salaryMax": 47195,
  "salaryCurrency": "GBP",
  "salaryPeriod": null,
  "salarySource": "EMPLOYER_PROVIDED",
  "salaryAnnualMin": null,
  "companySize": "201 to 500 Employees",
  "companyIndustry": "Civic & Social Services",
  "overallRating": 4.5,
  "workLifeBalanceRating": 4.5,
  "recommendToFriendRating": 0.92,
  "source": "Glassdoor",
  "fetchedAt": "2026-11-01T03:40:06.974Z"
}

Use it from code

Actor ID: cliqtomedia/glassdoor-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/glassdoor-scraper").call(run_input={
    "mode": "jobs",
    "query": "data analyst"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~glassdoor-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "jobs", "query": "data analyst"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/glassdoor-scraper")
result = tool.invoke({"run_input": {"mode": "jobs", "query": "data analyst"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Input settings (25)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Data to collectmodestring"jobs"
Job or company namequerystring"data analyst"
Job locationlocationstring"London"
Country sitecountrystring"UK"
Result limitmaxItemsinteger10
Company URLscompanyUrlsarray[]
Company namescompanyNamesarray[]
Job search URLssearchUrlsarray[]
Full job detailsincludeDetailsbooleantrue
Company salary tableincludeSalariesbooleanfalse
Output formatoutputFormatstring"flat"
Maximum job agedaysOldinteger
Easy Apply onlyeasyApplybooleanfalse
Remote jobs onlyremoteWorkTypebooleanfalse
Minimum company ratingminRatingnumber
Company sizeemployerSizesstring
Search distanceradiusstring
Sort ordersortBystring"relevant_desc"
Skip job IDsexcludeJobIdsarray[]
Extra search filtersurlParamarray[]
Track job historymonitorbooleanfalse
New jobs onlyonlyNewbooleanfalse
Check missing jobs for closurecheckClosedbooleanfalse
State namestateNamestring
Job title aliaskeywordsstring

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure