Blog/Sales & enrichment
5 min read

Glassdoor API: Pull Reviews for Many Companies at Once

Glassdoor has no API you can sign up for. How to get ratings and employee reviews for a whole list of companies, and the billing traps to avoid.

Glassdoor API: Pull Reviews for Many Companies at Once

Get Glassdoor review data for a whole list of companies in one prompt. Paste this into your agent:

Set up https://monid.ai/SKILL.md, and then use Monid to pull Glassdoor employee reviews and ratings for every company in my list, and rank them by senior management rating.

One prompt runs the whole list. 1 min setup · 30-60 hrs saved.

You have a list of companies and you want their Glassdoor ratings and employee reviews in one table: for a sales list, a competitor tracker, or an employer-brand study. You search for the Glassdoor API and find old tutorials, a login wall, and datasets that stop last year. This guide shows what actually works for pulling Glassdoor data for many companies at once, what each route costs you in effort, and two traps that quietly wreck large pulls: a billing floor and ratings on mixed scales. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.

What is the easiest way to get Glassdoor reviews through an API?

Monid. Install it once, add a key, and your agent pulls Glassdoor reviews and ratings for a whole list of companies, with no portal, no plan and no vendor account to set up.

  • Pay for what you run. Discovery and inspection are free; only a run bills. Buy credit as you need it: no monthly plan and no minimum top-up.
  • One install, every API. The same key and the same balance call Glassdoor and every other tool on Monid. No new account for the next source you need. Building and wiring those yourself is the 30 to 60 hours this page claims to save.
  • Lives inside your agent. Install the CLI, add your key, run the prompt above, and the tools are there whenever your agent needs them. Your agent reads SKILL.md and learns the rest, so setup is about a minute.

How do you get Glassdoor review data for many companies at once?

Pick a route that returns structured reviews for one company at a time, then loop it over your list. Four routes exist, and they trade control, effort and risk differently.

RouteWho collects the dataEffortBest forWatch for
Download a public datasetWhoever built itNone, you download a fileA first look, or research on past dataIt is a snapshot of one date and covers the companies the author chose
Scrape it yourselfYouYou build it and keep it workingOne-off researchBlocking, upkeep, and Glassdoor's terms
A scraper marketplace, such as the Glassdoor scrapers on ApifyThe scraper's authorOne account per platform, one schema per scraperTeams already on that platformOne more vendor, and scrapers can be pulled
A reviews endpoint through MonidThe provider behind the endpointOne key, one balance, no new vendor accountAgents and pipelines that need ratings and reviews as JSON for a whole listA billing floor, covered below

For a list you need to keep fresh, the last two are the realistic ones, and Monid is built for exactly that job: one key and one balance cover the reviews endpoint and 1,000 other tools, discovery and inspection cost nothing, and an agent can run the whole list for you. Even where an official API does exist, Monid is often the easier way to buy it: you pay per call, and every tool sits under one key and one balance instead of one account per vendor. If you already pay for Apify and mostly live there, stay there; our Apify alternatives guide explains when that is the right answer.

For agents

Copy this line to your agent to pull a company's employee reviews:

set up https://monid.ai/SKILL.md and use akta /v1/company/employee-reviews with limit 50

Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:

set up https://monid.ai/SKILL.md

It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.

For humans

npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main

Pull one company first

monid run -p akta -e /v1/company/employee-reviews \
  --query '{"company":"https://figma.com","limit":50}'

company takes a website or a company name. limit maxes at 100 and should never be set below 50. offset pages.

Then loop it over your list

Put one website or company name per line in companies.txt, then run:

mkdir -p out
while read -r c; do
  monid run -p akta -e /v1/company/employee-reviews \
    --query "{\"company\":\"$c\",\"limit\":50}" > "out/$(echo "$c" | tr '/:.' '___').json"
done < companies.txt

Each company writes one file. Read the total in each before you page for more:

const { total } = res.data.employee_reviews.reviews;   // 259 for ours
const pages = Math.ceil(Math.min(total, cap) / 100);

259 reviews is three calls at limit 100. Decide whether you want all of them before the first call, because the floor means there is no cheap exploratory one.

Or hand the whole job to an agent

Give this to your agent

$Set up https://monid.ai/SKILL.md, and then use Monid to pull 50 employee reviews for each company in this list, split current from former employees, and tell me which company has the widest gap between its overall rating and its senior management rating.

Can you scrape Glassdoor reviews yourself with Python?

Yes, people do it with Selenium or Playwright, and it works until it does not. Glassdoor puts a sign-in wall in front of reviews and treats automated traffic as something to block, which is why so many searches pair the word scraper with phrases like without login. A scraper you write is yours to keep alive: when the page changes, your job breaks.

Scraping also has a rules side. Most sites restrict automated collection in their terms, so read Glassdoor's before you build anything. We are not lawyers, and what you may do depends on where you operate and how you use the data.

For a handful of companies, your own scraper is a reasonable weekend. For a list you refresh monthly, a provider that maintains the collection, as Monid does here, is cheaper than your hours.

📖 See also TripAdvisor API: Pull Hotels, Ratings and Reviews for a Whole City

What does Glassdoor review data look like, and what can you build with it?

Three layers, and only one of them is the reviews.

The headline rating

One number for the company. Ours came back as overall_rating.glassdoor: 3.6.

The dimension ratings

Eight more numbers covering compensation, culture, diversity, senior management, work-life balance, business outlook, CEO approval and whether people would recommend the place. This is the layer most people actually want, because a single 3.6 hides whether the problem is pay or management.

On our company, senior_management was 2.9 against a 3.6 overall, the lowest of the eight. That gap is the whole value of pulling the dimensions.

The reviews

A list of individual reviews, 21 fields each, with pros and cons as separate fields. Every review also carries seven sub-ratings, a job title, whether the person still works there, how long they stayed, and a helpful count.

What you can build with it

  • A sales list ranked by the gap, not the level. A 3.6 overall tells you nothing you can act on. A 3.6 with management at 2.9 tells you where the complaints are, and which pitch will land. Pair it with funding data to rank the whole list.
  • A tracker for competitors' employer reputation. Every review carries a date, so a monthly pull shows whether sentiment is moving. Add a company news feed and you see the cause next to the effect.
  • A check on a partner before the call. Each review says whether the writer is a current or former employee, so you can ask whether the management complaints come from people who left.

📖 See also Turn a Company Name Into an Employer Review Feed

What goes wrong when you pull Glassdoor data in bulk?

Two things hide until you run a list: one costs money, the other ruins your comparison.

Why did asking for 10 reviews bill 50?

Because the billing unit has a floor and limit does not respect it. Two calls, same company, same day, nothing changed but limit:

limitBilled unitsresultCountReviews returned
10505010
100100100100

The price type is PER_UNIT at a rate per 50 units, so 50 is the minimum purchase. Pass anything below it and you buy 50 units and receive what you asked for.

limit 10   50 units  ->  10 reviews   = 5 units per review
limit 50   50 units  ->  50 reviews   = 1 unit per review
limit 100 100 units  -> 100 reviews   = 1 unit per review

A limit of 10 is the single worst value on this endpoint. It costs the same as 50 and delivers a fifth of the data. There is no case for a limit between 1 and 49: round up to 50 and keep the rows.

On a list this adds up fast. One hundred companies at limit 50 is 5,000 units, whether you read 10 reviews each or 50. With Monid, monid inspect shows the unit price for free, and current numbers are on the tool pages.

It is easy to get wrong because limit usually means "spend less". Here it means "receive less", and the endpoint's own docs give the default as 10, exactly the value that wastes the most. Read price.type before you tune a limit on any endpoint.

Why are the ratings on two different scales?

Because three of them are proportions and five are scores, and nothing in the array says which is which.

business_outlook            0.54
ceo                         0.88
recommend_to_friend         0.55
compensation_and_benefits   3.8
culture_and_values          3.7
diversity_and_inclusion     3.9
senior_management           2.9
work_life_balance           3

The first three are shares between 0 and 1: 88% of reviewers approve of the CEO, 55% would recommend the company, 54% expect business to improve. The last five are the familiar five-point averages.

Every entry has the same shape, { type, provider, value }, and sits in the same array. Normalise the array to a five-point scale and ceo: 0.88 becomes a damning 0.88 out of 5 instead of a healthy 88% approval. When you rank a hundred companies, that mistake silently reorders your list.

Keep a per-type map of which scale each key uses and apply it when you ingest the data:

const PROPORTION = new Set(["business_outlook", "ceo", "recommend_to_friend"]);
const ratings = {};
for (const r of res.data.employee_reviews.other_ratings) {
  ratings[r.type] = PROPORTION.has(r.type)
    ? { pct: r.value * 100 }
    : { score: r.value, outOf: 5 };
}

As a safety net, any value under 1.0 in this array is a proportion. That works on the data we saw and fails the day a company genuinely scores 0.9 out of 5 on something, so use it as an alarm and keep the explicit map as the logic.

Which endpoint should I use for which job?

EndpointWhat it doesInputReturnsBillingWatch for
akta/v1/company/employee-reviewsEmployee reviews and ratings (provider key glassdoor)company, limit, offsetOverall, 8 dimensions, reviews with 21 fieldsPer unit, 50-unit blockFloor of 50
trustpilot/get_company_reviewsCustomer reviewsA companyPaginated reviewsPer callDifferent population
clutch/get_company_reviewsB2B service reviewsA companyPaginated reviewsPer callAgencies and vendors
litescrape/yelp/reviewsLocal customer reviewsplace_idUp to 49 reviewsPer callConsumer, not employer

Every row was verified with monid inspect on 2026-10-03. Billing shape is given rather than figures, because shape drives design and current numbers live on monid.ai/tools.

The four rows describe four different populations, and people mix them up constantly. Row one is what staff say about working somewhere. Rows two and four are what customers say about buying. Row three is what clients say about an agency. Blending employee and customer sentiment into one score measures nothing.

📖 See also Yelp API: The Four Ads Above the Results Had 5, 75, 80 and 199 Reviews

When is another route a better fit?

You want one number for a lot of companies. The floor makes a shallow sweep expensive: 50 units per company whether you read 10 reviews or 50. For a hundred companies that is a real invoice, and if all you need is the headline rating, look for an endpoint that sells the aggregate on its own, or start from a public dataset.

You are screening individuals. This is company-level data. It says nothing about a person, and the reviews are written by people who did not expect to be identified from a job title and a date.

You need every review ever written. The total reported here was 259 and that is what this provider's index holds. A company's own Glassdoor page may show a different count, and neither is the complete history.

You are making an employment decision about a named person, or republishing the text. Reviews are anonymous, unverified and self-selected: people write them when they are delighted or furious. They are a useful signal about a company and a terrible basis for anything about an individual. Link to the original through review_link rather than copying it, and take advice if your output faces customers.

And the disclosure: we resell this endpoint. The most valuable line in this post is that you should never pass a limit below 50, which saves money on a call you make through anyone.

Conclusion

You can get ratings and employee reviews for a whole list of companies without building anything. For a list you need to keep fresh, a marketplace scraper or a reviews endpoint through Monid are the practical choices, and Monid is the one where an agent can run the whole list from a single key.

Two traps cost us time on a list. The billing floor: limit: 10 returned ten reviews and billed fifty units, so never pass less than 50. And the ratings array, where three keys are proportions and five are out of five: split them on ingestion, or your ranking will be wrong without any error.

How we estimated the time saved: building and running your own Glassdoor reviews scraper is roughly 10 to 20 hours each for getting past blocking, parsing ratings and reviews into clean fields with paging, and the first month of upkeep. That is 30 to 60 hours. The 1 minute is the install, key and first call once you already have a Monid key.

Free next step: run monid inspect -p akta -e /v1/company/employee-reviews, note the PER_UNIT price with its block size, then make one call at limit 50 and one at 10 and compare billedUnits. The floor is visible in two calls. Start at monid.ai.

FAQ

Is there a free Glassdoor API?

Not free, but you pay only for what you run: discovery and inspection cost nothing, there is no monthly plan and no minimum top-up. The DIY options are your own scraper, a public dataset, or the free tier of a scraper marketplace, each with its own upkeep.

Is it okay to scrape Glassdoor instead of using an API?

That depends on Glassdoor's terms and on where you operate, and we are not lawyers. Most sites restrict automated collection, so read the terms first. Using review data internally to rank or research companies is ordinary; republishing the text under your own name is a different act.

Can you export Glassdoor reviews to a CSV?

Yes, once you have the data as JSON. Pull each company with limit 50, collect the files with the loop above, and write the rows to a CSV with whatever tool you like. A downloadable dataset is quicker for a snapshot, but check its date and coverage first.

What limit should you actually pass?

Fifty, or a hundred, and never anything below fifty. The billing block is fifty units, so a request for ten buys fifty units and hands back ten reviews. Both fifty and a hundred cost one unit per review. If you only want a handful to eyeball, pass fifty anyway and keep the rest: you have already paid for them.

How do you know which rating uses which scale?

By name, and you have to hardcode it. business_outlook, ceo and recommend_to_friend are proportions between 0 and 1; the other five are averages out of five. Nothing in the payload tells them apart, so a mapping table of eight strings is the correct answer.

Published October 2026.

glassdoor apiglassdoor reviews datasetglassdoor scraperemployee reviews apicompany reviews