Jobs & Hiring

Glassdoor API

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

10 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary employer/search endpoint returns employers with id, name, category and logo, and you can pull an employer/detail, employer/reviews, employer/interviews, employer/jobs and employer/salaries — each with a harvest variant for bulk collection. It is built for employer-intelligence, recruiting and labor-market research that need Glassdoor data without a login or a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, employer/search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/glassdoor/v1/employer/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "Google"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "glassdoor",
    "endpoint": "employer/search",
    "mode": "live",
    "latency_ms": 637.4,
    "record_count": 7,
    "bytes": 0,
    "cache_hit": false,
    "count": 7
  },
  "data": {
    "results": [
      {
        "employer_id": 9079,
        "name": "Google",
        "category": "company",
        "logo_url": "https://media.glassdoor.com/sqlm/9079/google-squarelogo-[redacted-phone].png"
      },
      {
        "employer_id": 3162960,
        "name": "[redacted-name]",
        "category": "company",
        "logo_url": "https://media.glassdoor.com/sqlm/3162960/google-cloud-squarelogo-[redacted-phone].png"
      },
      {
        "employer_id": 9079,
        "name": "[redacted-name]",
        "category": "multicat",
        "logo_url": "https://media.glassdoor.com/sqlm/9079/google-squarelogo-[redacted-phone].png"
      }
    ]
  }
}
Actions

What the Glassdoor API does

ActionDescriptionConcrete use caseKey params
employer/searchResolve a company name to its Glassdoor employer_id + basic profile. Start here — every other action needs the employer_id.Recruiting teams call employer/search to resolve a company name to its Glassdoor employer_id + basic profile.query
employer/detailEmployer profile + ratings.Labor-market analysts call employer/detail to get employer profile + ratings..employer_id, dynamic_profile_id
employer/reviewsOne page of employer reviews (rating, pros/cons, role).Job boards call employer/reviews to get one page of employer reviews (rating, pros/cons, role)..employer_id, page, cursor, page_size, dynamic_profile_id
employer/reviews-harvestFetch all available Glassdoor reviews across multiple pages — returns every unique review with rating, pros/cons and role.Sales intelligence teams call employer/reviews-harvest to fetch all available Glassdoor reviews across multiple pages.employer_id, dynamic_profile_id, page_size, max_pages, use_proxy_pool, ...
employer/interviewsOne page of interview reports (questions, difficulty, outcome).Recruiting teams call employer/interviews to get one page of interview reports (questions, difficulty, outcome)..employer_id, page, cursor, items_per_page, dynamic_profile_id
employer/interviews-harvestFetch all available Glassdoor interview reports across multiple pages.Labor-market analysts call employer/interviews-harvest to fetch all available Glassdoor interview reports across multiple pages..employer_id, dynamic_profile_id, items_per_page, max_pages, use_proxy_pool, ...
employer/jobsEmployer job listings (one page; cursor pagination).Job boards call employer/jobs to get employer job listings (one page; cursor pagination)..employer_id, page, cursor, page_size, page_cursor
employer/jobs-harvestFetch all available Glassdoor job listings across multiple pages.Sales intelligence teams call employer/jobs-harvest to fetch all available Glassdoor job listings across multiple pages..employer_id, dynamic_profile_id, page_size, max_pages, use_proxy_pool, ...
employer/salariesGlassdoor salary estimates for this employer, broken down by job title. Each title returns the full pay distribution — base pay and total pay percentiles (P10/P25/P50/P75/P90), median base/total/additional pay, plus cash bonus, stock, profit sharing, sales commission and tips bands. Titles are ordered by number of reported salaries (most-reported first).Recruiting teams call employer/salaries to get glassdoor salary estimates for this employer, broken down by job title.employer_id, job_title, page, cursor, page_size, ...
employer/salaries-harvestFetch salary estimates for all job titles at this employer across multiple pages — every title with its full pay distribution.Labor-market analysts call employer/salaries-harvest to fetch salary estimates for all job titles at this employer across multiple pages.employer_id, job_title, page_size, pay_period, max_pages, ...
Code samples

Call employer/search from your stack

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"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.glassdoor.employer/search with {"query":"Google"}.
Use cases

Who uses this API and why

  • Employer-branding teams call employer/reviews to monitor their company's Glassdoor rating and feedback.
  • Recruiting tools use employer/salaries and employer/interviews to prep candidates with real pay and process data.
  • Labor-market researchers use employer/detail across a company list to benchmark employer reputation.
FAQ

Questions developers ask before integrating

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.

Is the Glassdoor API a Glassdoor scraper?

It is the managed alternative to a DIY Glassdoor scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same company reviews, ratings and salary insights back as clean JSON.

Why does my Glassdoor scraper keep getting blocked?

Most Glassdoor scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / glassdoor

Glassdoor

Company reviews, ratings and salary insights.

base /glassdoor/v110 endpoints
post/glassdoor/v1/employer/search1 credit

Resolve a company name to its Glassdoor employer_id + basic profile. Start here — every other action needs the employer_id.

ParameterAllowed / rangeDescription
queryrequiredCompany name to look up.
Try in playground →
post/glassdoor/v1/employer/detail1 credit

Employer profile + ratings.

ParameterAllowed / rangeDescription
employer_idrequiredGlassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.
dynamic_profile_idoptionalAdvanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).
Try in playground →
post/glassdoor/v1/employer/reviews1 credit

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

ParameterAllowed / rangeDescription
employer_idrequiredGlassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.
page = 1optional1–Page number (easy paging: 1, 2, 3…).
cursoroptionalNext page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).
page_size = 10optional1–100Results per page (1–100). Above 100 Glassdoor returns an empty page.
dynamic_profile_idoptionalAdvanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).
Try in playground →
post/glassdoor/v1/employer/reviews-harvest1 credit

Fetch all available Glassdoor reviews across multiple pages — returns every unique review with rating, pros/cons and role.

ParameterAllowed / rangeDescription
employer_idrequiredGlassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.
page_size = 10optional1–100Results per page (1–100). Above 100 Glassdoor returns an empty page.
max_pagesoptional1–Stop the harvest after this many pages (default: run until complete).
use_proxy_pool = trueoptionalAdvanced: rotate network exit nodes between pages during the harvest (recommended for large harvests).
rotate_every = 10optional1–Advanced: rotate the network exit node every N pages during a harvest.
dynamic_profile_idoptionalAdvanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).
Try in playground →
post/glassdoor/v1/employer/interviews1 credit

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

ParameterAllowed / rangeDescription
employer_idrequiredGlassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.
page = 1optional1–Page number (easy paging: 1, 2, 3…).
cursoroptionalNext page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).
items_per_page = 10optional1–100Interview reports per page (1–100).
dynamic_profile_idoptionalAdvanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).
Try in playground →
post/glassdoor/v1/employer/interviews-harvest1 credit

Fetch all available Glassdoor interview reports across multiple pages.

ParameterAllowed / rangeDescription
employer_idrequiredGlassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.
items_per_page = 10optional1–100Interview reports per page (1–100).
max_pagesoptional1–Stop the harvest after this many pages (default: run until complete).
use_proxy_pool = trueoptionalAdvanced: rotate network exit nodes between pages during the harvest (recommended for large harvests).
rotate_every = 10optional1–Advanced: rotate the network exit node every N pages during a harvest.
dynamic_profile_idoptionalAdvanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).
Try in playground →
post/glassdoor/v1/employer/jobs1 credit

Employer job listings (one page; cursor pagination).

ParameterAllowed / rangeDescription
employer_idrequiredGlassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.
page = 1optional1–Page number (easy paging: 1, 2, 3…).
cursoroptionalNext page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).
page_size = 30optional1–100Jobs per page (1–100).
page_cursoroptionalAdvanced: raw Glassdoor pagination cursor. Prefer `cursor`.
Try in playground →
post/glassdoor/v1/employer/jobs-harvest1 credit

Fetch all available Glassdoor job listings across multiple pages.

ParameterAllowed / rangeDescription
employer_idrequiredGlassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.
page_size = 30optional1–100Jobs per page (1–100).
max_pagesoptional1–Stop the harvest after this many pages (default: run until complete).
use_proxy_pool = trueoptionalAdvanced: rotate network exit nodes between pages during the harvest (recommended for large harvests).
rotate_every = 10optional1–Advanced: rotate the network exit node every N pages during a harvest.
dynamic_profile_idoptionalAdvanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).
Try in playground →
post/glassdoor/v1/employer/salaries1 credit

Glassdoor salary estimates for this employer, broken down by job title. Each title returns the full pay distribution — base pay and total pay percentiles (P10/P25/P50/P75/P90), median base/total/additional pay, plus cash bonus, stock, profit sharing, sales commission and tips bands. Titles are ordered by number of reported salaries (most-reported first).

ParameterAllowed / rangeDescription
employer_idrequiredGlassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.
job_titleoptionalOptional: filter salary estimates to job titles matching this text (e.g. 'engineer', 'product manager'). Omit for all titles.
page = 1optional1–Page number (easy paging: 1, 2, 3…).
cursoroptionalNext page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).
page_size = 20optional1–100Job titles per page (1–100).
pay_period = ANNUALoptionalPay period for the estimates: ANNUAL (yearly) or HOURLY.
Try in playground →
post/glassdoor/v1/employer/salaries-harvest1 credit

Fetch salary estimates for all job titles at this employer across multiple pages — every title with its full pay distribution.

ParameterAllowed / rangeDescription
employer_idrequiredGlassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.
job_titleoptionalOptional: filter salary estimates to job titles matching this text (e.g. 'engineer', 'product manager'). Omit for all titles.
page_size = 20optional1–100Job titles per page (1–100).
pay_period = ANNUALoptionalPay period for the estimates: ANNUAL (yearly) or HOURLY.
max_pagesoptional1–Stop the harvest after this many pages (default: run until complete).
use_proxy_pool = trueoptionalAdvanced: rotate network exit nodes between pages during the harvest (recommended for large harvests).
rotate_every = 10optional1–Advanced: rotate the network exit node every N pages during a harvest.
Try in playground →