Glassdoor API

Get Glassdoor data with one API

The Glassdoor API returns company reviews, interview reports and salary data as clean JSON.

no credit card1,000 free credits · instant API key · live in 10 seconds
Missing a Glassdoor endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
G
/glassdoor/v1

10 active endpoints. Every call is 1 credit.

  • POST/glassdoor/v1/employer/search
  • POST/glassdoor/v1/employer/detail
  • POST/glassdoor/v1/employer/reviews
  • POST/glassdoor/v1/employer/reviews-harvest
  • POST/glassdoor/v1/employer/interviews
  • POST/glassdoor/v1/employer/interviews-harvest
  • POST/glassdoor/v1/employer/jobs
  • +3 more

What Glassdoor endpoints does ReefAPI ship?

10 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

10 endpoints

employer/search

1 cr

Resolve a company name to its Glassdoor employer_id + basic profile.

required
query
optional

employer/detail

1 cr

Employer profile + ratings.

required
employer_id
optional
dynamic_profile_id

employer/reviews

1 cr

One page of employer reviews (rating, pros/cons, role).

required
employer_id
optional
page, cursor, page_size, dynamic_profile_id

employer/reviews-harvest

1 cr

Fetch all available Glassdoor reviews across multiple pages.

required
employer_id
optional
dynamic_profile_id, page_size, max_pages, use_proxy_pool, rotate_every

employer/interviews

1 cr

One page of interview reports (questions, difficulty, outcome).

required
employer_id
optional
page, cursor, items_per_page, dynamic_profile_id

employer/interviews-harvest

1 cr

Fetch all available Glassdoor interview reports across multiple pages.

required
employer_id
optional
dynamic_profile_id, items_per_page, max_pages, use_proxy_pool, rotate_every

employer/jobs

1 cr

Employer job listings (one page.

required
employer_id
optional
page, cursor, page_size, page_cursor

employer/jobs-harvest

1 cr

Fetch all available Glassdoor job listings across multiple pages.

required
employer_id
optional
dynamic_profile_id, page_size, max_pages, use_proxy_pool, rotate_every

employer/salaries

1 cr

Glassdoor salary estimates for this employer, broken down by job title.

required
employer_id
optional
job_title, page, cursor, page_size, pay_period

employer/salaries-harvest

1 cr

Fetch salary estimates for all job titles at this employer across multiple pages.

required
employer_id
optional
job_title, page_size, pay_period, max_pages, use_proxy_pool, rotate_every

Every parameter, every allowed value →

Glassdoor API

3 of 10 endpoints, ready to run

View docs ↗

Resolve a company name to its Glassdoor employer_id + basic profile.

1 credit1 required · 0 optional
POST/glassdoor/v1/employer/search
ok892 ms · 7 records · sample
{
  "ok": true,
  "meta": {
    "api": "glassdoor",
    "endpoint": "employer/search",
    "mode": "live",
    "latency_ms": 891.6,
    "record_count": 7,
    "cache_hit": false
  },
  "data": {
    "results": [
      {
        "employer_id": 9079,
        "name": "Google",
        "category": "company",
        "logo_url": "https://media.glassdoor.com/sqlm/9079/google-squarelogo-1441130773284.png"
      },
      {
        "employer_id": 3162960,
        "name": "Google Cloud",
        "category": "company",
        "logo_url": "https://media.glassdoor.com/sqlm/3162960/google-cloud-squarelogo-1681973584703.png"
      },
      {
        "employer_id": 9079,
        "name": "Google Software Engineer",
        "category": "multicat",
        "logo_url": "https://media.glassdoor.com/sqlm/9079/google-squarelogo-1441130773284.png"
      }
    ]
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Glassdoor API works

Glassdoor is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 185 engines.

02
Call
POST /glassdoor/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 credit per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Which Glassdoor surfaces answered on 2026-08-27, and what employer_id looks like

Every action on this engine needs an employer_id, and only employer/search hands one out. Glassdoor defends its surfaces unevenly, so the honest thing to publish is what a live call actually returned per action rather than what the schema promises. This table was recorded on 2026-08-27 against two employers, Google (9079) and Siemens (3510), with a repeat attempt on every failure.

ActionResult on 2026-08-27What the live call returned
employer/searchanswered"Google" returned 1 row, employer_id 9079. "Siemens" returned 7 rows: Siemens 3510, Siemens Healthineers 1317005, Siemens Energy 4393689 and four more. "Trendyol" returned 1 row, 722443.
employer/jobsanswered10 job rows for 9079 carrying title, location, salary_min, salary_max, salary_currency, salary_period, posted_age_days, easy_apply, company_rating, goc and job_url.
employer/detailTARGET_BLOCKED"Glassdoor returned anti-bot block" on employer_id 9079 and again on 3510, on two attempts each. Live verification failed: TARGET_BLOCKED.
employer/reviewsTARGET_BLOCKEDSame error on both employers and both attempts. Live verification failed: TARGET_BLOCKED.
employer/interviewsTARGET_BLOCKEDSame error on both attempts. Live verification failed: TARGET_BLOCKED.
employer/salariesTARGET_BLOCKEDSame error with pay_period ANNUAL and with HOURLY, on both employers. Live verification failed: TARGET_BLOCKED.

employer_id is a plain integer with no prefix and no fixed width: 4 digits for long-established profiles (Siemens 3510, Google 9079), 7 digits for newer ones (Siemens Energy 4393689). The same number appears twice more in a response, in the logo_url path (media.glassdoor.com/sqlm/9079/...) and as company_id on every job row.

What people build with Glassdoor

The jobs this data is most often used for.

10

endpoints

1

credit per call

01

Employer-branding teams call employer/reviews to monitor their company's Glassdoor rating and feedback.

02

Recruiting tools use employer/salaries and employer/interviews to prep candidates with real pay and process data.

03

Labor-market researchers use employer/detail across a company list to benchmark employer reputation.

What Glassdoor data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 185 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/glassdoor/v1/employer/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"Google"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/glassdoor/v1/employer/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "Google"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Glassdoor.

Get a free key →
employer/search returned results for a company that does not exist. Why?

It is a fuzzy name matcher and it does not return an empty list. The query "zzqqxx not a real company 8888" came back ok:true with 10 rows, led by Dunton Commercial Real Estate Company and Real Estate Service Solutions Company, because it matched the word "company". Compare results[0].name against what you asked for before feeding its employer_id into another call. Every row we saw carried category "company".

Which actions are actually answering today?

employer/search and employer/jobs returned data. employer/detail, employer/reviews, employer/interviews and employer/salaries all returned error code TARGET_BLOCKED with the message "Glassdoor returned anti-bot block", on two different employers and on repeat attempts in the same session. TARGET_BLOCKED is a statement about the upstream site, not about your request, so retrying later is the right move; changing your parameters will not help.

Can I get an employer rating without employer/detail?

Yes. Every job row carries company_rating on a 0-5 scale with one decimal, and it is identical across all rows for the same employer: 4.4 on all ten Google (9079) rows and 4.1 on all five Siemens (3510) rows. That gives you the headline number while the detail surface is unavailable. It does not give you the sub-ratings breakdown.

What currency and pay period do job salaries use?

Across 15 job rows from two employers, salary_currency was "USD" and salary_period was "ANNUAL" on every single row. salary_min and salary_max are plain integers with no separators and no decimals, for example 224000 and 311000. Both were populated on all 15 rows, but treat them as a band rather than a posted figure.

What is the goc field on a job row?

A normalized lowercase occupation label that the schema does not list but every row carries. Measured values from one page: "support specialist", "employment specialist", "policy analyst", "communications coordinator", "business operations specialist", "data center technician", "customer service representative", "team member" and "other". It is much coarser than title, which is what makes it useful for bucketing, and "other" is a real value rather than a null.

Is job_id stable between calls?

No, and this bites anyone using it as a primary key. Two identical calls seconds apart returned the same three jobs as 5-yul1-0-1k1048kv622rs000-c6f51a806240dca6 and 5-yul1-0-1k1048lungmsj800-c6f51a806240dca6: same leading segment, same trailing hash, different middle segment. Only the last dash-separated hash identifies the job. Dedupe on that segment, or on the jobListingId query parameter inside job_url.

Why do jobs for a German company all sit in the United States?

Because employer/jobs reads the US board. All five Siemens (3510) rows were Raleigh NC, Grand Prairie TX, Peachtree Corners GA, Buffalo Grove IL and San Antonio TX, and all of them were priced in USD per year. Do not use this action to size a company's hiring outside the US.

What do posted_age_days and easy_apply mean in practice?

posted_age_days is an integer count of days since the listing appeared, with measured values from 4 to 29 across the two employers. It is a relative age rather than a date, so it shifts every day you call and it is not a stable field to store. easy_apply is a real boolean and came back false on all 15 rows we saw, meaning those listings route to the employer's own application flow.

What is the Glassdoor API?

Glassdoor API is a ReefAPI endpoint group for company reviews, ratings and salary insights. It returns live JSON through POST requests under /glassdoor/v1.

Is the Glassdoor API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Glassdoor calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Glassdoor login or account?

No login to Glassdoor is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Glassdoor data?

The page example is captured from a live employer/search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Glassdoor API use?

Glassdoor actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Glassdoor from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call glassdoor actions with the same key, credit pool and JSON envelope used by normal REST requests.

15 Jobs & Hiring APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Glassdoor, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 184 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts.