Skip to main content
Five endpoints, one subscription, all scraped from Glassdoor’s public pages (browser, bot-walled). Search and Job read job listings. Company search, Company, and Salaries read employer ratings, reviews, and pay. Pages behind Glassdoor’s login (full review history, interviews) are not offered. Not Glassdoor’s private API. See the Glassdoor API: overview, pricing, and free tier.

Jobs

GET /v1/glassdoor/jobs · 1 request
Do not send limit, cursor, or ats. next_cursor is the next page number. Each hit includes position, id, title, company, location, workplace_type, job_type, salary_text, salary, rating, posted_age, snippet, skills, employer_id, company_logo, easy_apply, url, and apply_url. job_type, workplace_type, and skills come from Glassdoor’s listing data when the card does not print them. salary is { min, max, median, currency, period, source } or null. period is year, month, week, day, or hour. source is employer when the posting states the pay, estimated when it is the board’s estimate, or null when the board does not say. salary_text stays as the board prints it. Glassdoor publishes a band, so min and max are its 10th and 90th percentile and median its 50th. For employer pay that is the posted range.

Job

GET /v1/glassdoor/job · 1 request
id is the numeric listing id from a search result. The body is job: title, company, location, workplace_type, remote, salary_text, salary, job_type, posted_at, valid_through, company_logo, company_url, industry, education, experience_months, skills, coordinates, direct_apply, url, apply_url, highlights, and paragraphs. highlights groups the description’s bullet points into qualifications, responsibilities, and benefits by the heading above them. Bullets without a recognised heading are left out, so a posting with no headed lists returns empty arrays. paragraphs still has the full text. GET /v1/glassdoor/companies · 1 request
q is a company name, up to 100 characters. Each result has position, employer_id, name, slug, logo, rating, reviews_count, salaries_count, jobs_count, and url. Company and Salaries need both employer_id and slug. The slug is case-sensitive (Google, not google), so take it from this endpoint rather than building it.

Company

GET /v1/glassdoor/company · 1 request
The body is company: employer_id, name, legal_name, slug, logo, website, headquarters, size, industry, sector, description, ratings, ceo, rating_distribution, counts, latest_reviews, and url.
  • ratings has overall and the six category scores (1–5), plus recommend_to_friend_pct, ceo_approval_pct, and business_outlook_pct.
  • rating_distribution counts 1–5 star reviews for overall and each category, and recommend / not_recommend for recommend_to_friend.
  • counts is { reviews, rated_reviews, salaries }.
  • latest_reviews holds the newest reviews Glassdoor shows without a login, usually 3. Each has id, title, pros, cons, advice, rating, per-category ratings, job_title, location, employment_status, current_employee, helpful_count, employer_responded, and date.
A wrong employer_id or slug returns 404 not_found.

Salaries

GET /v1/glassdoor/salaries · 1 request
Do not send limit or cursor. next_cursor is the next page number, or null after the last page or page 20. The body has employer, location (the place the figures cover), job_titles_count, pages_count, locations, and results. Each result has position, job_title, job_title_id, salaries_count, currency, period, base_pay, total_pay, and last_reported_at. base_pay and total_pay are { p10, p25, p50, p75, p90 }: Glassdoor’s percentile estimates from reported salaries. Titles come in Glassdoor’s order, most reported first. locations lists the states and cities Glassdoor offers for this employer, each { id, name, type } with type state or city. Pass a name or id as location to get pay for that place. A place not in the list returns 400 unknown_location, with the names that are. A name shared by a state and a city returns 400 ambiguous_location; pass the id instead. Auth, plans, rate limits, and error codes: Authentication.