Discover/Glassdoor API
live

Glassdoor APIglassdoor.com ↗

Search Glassdoor job listings by keyword, location, and filters. Get full job details including pay estimates, skills, employer info, and more.

Endpoint health
verified 1d ago
search_jobs
get_job_details
2/2 passing latest checkself-healing
Endpoints
2
Updated
1d ago

What is the Glassdoor API?

The Glassdoor API covers job listing data across two endpoints: search_jobs and get_job_details. Search returns up to 50 listing summaries per page — including job title, employer name, pay estimate with source, extracted skills, and posting age — filtered by job type, employer rating, remote options, and days posted. The detail endpoint returns the full record for a single listing, including an HTML job description, employer profile fields, location coordinates, and education or experience requirements.

This call costs3 credits / call— charged only on success
Try it
Job title or search phrase, e.g. one shape: software engineer.
Employment type filter. Omitted = all types.
Free-text city, state or country as typed on the site (e.g. one shape: New York, NY). The first Glassdoor match is used; the resolved place is echoed in the response location object.
Listings per page; clamped to 1-50.
Minimum employer overall rating. Omitted = any rating.
Only listings posted within this many days. Omitted = any time.
Opaque continuation cursor for page_number, copied unchanged from next_page_cursor or pagination_cursors[*].cursor of a previous response with the same search inputs.
Result page to return. Values above 1 require page_cursor.
true restricts results to remote / work-from-home listings.
Search radius around the location in miles. Omitted = site default (25).
true restricts results to listings with Glassdoor Easy Apply.
→ api.parse.bot/scraper/f4f34fc3-2298-4057-b2c0-35f749ea7ca9/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/f4f34fc3-2298-4057-b2c0-35f749ea7ca9/search_jobs?keyword=software+engineer&page_size=5&remote_only=true&location=New+York%2C+NY' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace glassdoor-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Glassdoor Jobs SDK — search listings, drill into details."""
from parse_apis.glassdoor_com_api import Glassdoor, DaysPosted, JobType, UpstreamError

client = Glassdoor()

# Search for recent full-time software engineer jobs, capped at 5 results.
for summary in client.job_summaries.search(
    keyword="software engineer",
    job_type=JobType.FULL_TIME,
    days_posted=DaysPosted.LAST_WEEK,
    limit=5,
):
    pay = f"${summary.pay_estimate.p50:,.0f}/{summary.pay_period}" if summary.pay_estimate and summary.pay_period else "n/a"
    print(f"{summary.title} @ {summary.employer_name} — {summary.location} ({pay})")

# Drill into the first hit for the full description and employer info.
hit = client.job_summaries.search(
    keyword="data scientist",
    remote_only=True,
    limit=1,
).first()

if hit is not None:
  try:
    job = hit.details()
    print(f"\n{job.title}")
    print(f"  Location : {job.location}")
    print(f"  Expired  : {job.expired}")
    print(f"  Skills   : {', '.join(job.skills[:5])}")
    if job.employer and job.employer.name:
        emp = job.employer
        print(f"  Employer : {emp.name} ({emp.size}) — rating {emp.rating}")
        if emp.ratings.overall_rating is not None:
            print(f"  Culture  : {emp.ratings.culture_and_values_rating}")
  except UpstreamError as e:
    # Unknown or removed listing ids cause a site-level server error.
    print(f"Could not fetch details: {e.message}")

print("\nexercised: job_summaries.search / details / jobs.get (via details)")
All endpoints · 2 totalmissing one? ·

Searches Glassdoor job listings for a keyword in a location and returns one page of listing summaries (title, employer, location, posting age, pay estimate with its source, skills, snippet, link). The free-text location is resolved to the first matching Glassdoor city, state or country; when it matches nothing the result is an empty page with location null. Pagination is cursor-based and forward-only through the site's own cursors: page 1 needs no cursor; to fetch a later page pass page_number together with the matching cursor from the previous response (next_page_cursor/next_page_number for the immediate next page, or any entry of pagination_cursors). A page_number above 1 without page_cursor is rejected. page_size is clamped to 1-50 (site default 30). total_jobs_count is the count the site reports for the search; for some filtered searches the site returns fewer listings than that count and no further cursors, so treat next_page_cursor null as the end of accessible results. Each call makes two upstream requests (location lookup plus search). A nonexistent keyword yields total_jobs_count 0 and an empty jobs array.

Input
ParamTypeDescription
keywordrequiredstringJob title or search phrase, e.g. one shape: software engineer.
job_typestringEmployment type filter. Omitted = all types.
locationstringFree-text city, state or country as typed on the site (e.g. one shape: New York, NY). The first Glassdoor match is used; the resolved place is echoed in the response location object.
page_sizeintegerListings per page; clamped to 1-50.
min_ratingstringMinimum employer overall rating. Omitted = any rating.
days_postedstringOnly listings posted within this many days. Omitted = any time.
page_cursorstringOpaque continuation cursor for page_number, copied unchanged from next_page_cursor or pagination_cursors[*].cursor of a previous response with the same search inputs.
page_numberintegerResult page to return. Values above 1 require page_cursor.
remote_onlybooleantrue restricts results to remote / work-from-home listings.
radius_milesstringSearch radius around the location in miles. Omitted = site default (25).
easy_apply_onlybooleantrue restricts results to listings with Glassdoor Easy Apply.
Response
{
  "type": "object",
  "fields": {
    "jobs": "array of listing summaries: job_listing_id (string, input for get_job_details), title, employer_name, employer_id (string or null), employer_rating (number or null), location, age_in_days (integer), easy_apply, is_sponsored, pay_currency, pay_period (ANNUAL|HOURLY or null), pay_estimate ({p10,p50,p90} numbers or null), salary_source (EMPLOYER_PROVIDED|ESTIMATED or null), description_snippet, skills (array of strings), normalized_title, job_url, logo_url (or null)",
    "keyword": "echo of the searched keyword",
    "location": "resolved place: location_id, name, long_name, type (CITY|STATE|COUNTRY), country; null when the location text matched nothing",
    "page_size": "integer effective page size after clamping",
    "page_number": "integer page returned",
    "next_page_cursor": "opaque cursor for next_page_number, or null",
    "next_page_number": "integer page number of the next page, or null when no continuation is offered",
    "total_jobs_count": "integer count the site reports for the search (may exceed the accessible listings)",
    "pagination_cursors": "array of {page_number, cursor} continuations the site offers from this page"
  },
  "sample": {
    "data": {
      "jobs": [
        {
          "title": "Member of Technical Staff (Software Engineer, Computer Growth)",
          "skills": [
            "Android",
            "SQL",
            "Python"
          ],
          "job_url": "https://www.glassdoor.com/job-listing/member-of-technical-staff-software-engineer-computer-growth-perplexity-ai-JV_IC1132348_KO0,59_KE60,73.htm?jl=1010158130702",
          "location": "New York, NY",
          "logo_url": "https://media.glassdoor.com/sql/8515634/perplexity-ai-squareLogo-1706133200580.png",
          "easy_apply": false,
          "pay_period": "ANNUAL",
          "age_in_days": 111,
          "employer_id": "8515634",
          "is_sponsored": false,
          "pay_currency": "USD",
          "pay_estimate": {
            "p10": 220000,
            "p50": 312500,
            "p90": 405000
          },
          "employer_name": "Perplexity AI",
          "salary_source": "EMPLOYER_PROVIDED",
          "job_listing_id": "1010158130702",
          "employer_rating": 4.6,
          "normalized_title": "software engineer",
          "description_snippet": "Design, build, and own growth surfaces across the full funnel…"
        }
      ],
      "keyword": "software engineer",
      "location": {
        "name": "New York, NY",
        "type": "CITY",
        "country": "United States",
        "long_name": "New York, NY (US)",
        "location_id": "1132348"
      },
      "page_size": 30,
      "page_number": 1,
      "next_page_cursor": "AB4AAYEAHgAAAAAAAAAAAAAAAmRPGCgASAEBAQhMoeO+8zPXht6riRw/uFhaSyszpUhWy0KFoPCAbY97Gd2Eixi9HYGT/fyN+lGg/zCJj7imM2A8bHxkzfkG2ZLLJgB7bAAA",
      "next_page_number": 2,
      "total_jobs_count": 3571,
      "pagination_cursors": [
        {
          "cursor": "AB4AAYEAHgAAAAAAAAAAAAAAAmRPGCgASAEBAQhMoeO+8zPXht6riRw/uFhaSyszpUhWy0KFoPCAbY97Gd2Eixi9HYGT/fyN+lGg/zCJj7imM2A8bHxkzfkG2ZLLJgB7bAAA",
          "page_number": 2
        }
      ]
    },
    "status": "success"
  }
}

About the Glassdoor API

Search Endpoint

The search_jobs endpoint accepts a keyword string and an optional free-text location (e.g. New York, NY or Germany). Glassdoor resolves the location text to its first matching place, returning a location object with location_id, name, long_name, type (CITY, STATE, or COUNTRY), and country. Results come back as an array of job summaries under jobs, each carrying a job_listing_id you pass to the detail endpoint, plus title, employer_name, employer_id, a pay estimate with its stated source, a text snippet, extracted skills, and a direct job_url.

Filters and Pagination

You can narrow results with job_type (employment type), days_posted (age cap in days), min_rating (minimum employer overall star rating), and page_size (1–50, clamped). Pagination uses an opaque cursor: the response includes next_page_cursor, next_page_number, and a pagination_cursors array of {page_number, cursor} pairs. Pages beyond the first require the page_cursor copied from the previous response. The total_jobs_count field reflects the count Glassdoor reports for the query, which may exceed the number of listings actually accessible through pagination.

Job Detail Endpoint

get_job_details takes a job_listing_id from a search result and returns the full listing record. Key fields include an HTML description, job_types array, pay_period (ANNUAL, HOURLY, or null), easy_apply boolean, expired boolean, location display name, and arrays for skills, education, and experience labels. The employer object adds size, headquarters, industry, sector, type, revenue, rating, logo_url, and website — data not present in search summaries.

Reliability & maintenanceVerified

The Glassdoor API is a managed, monitored endpoint for glassdoor.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when glassdoor.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official glassdoor.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
1d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Aggregate job postings by keyword and location to track hiring demand across cities or regions using search_jobs.
  • Build a salary intelligence tool using the pay_period and pay estimate fields returned by get_job_details.
  • Filter listings to only remote or Easy Apply jobs and surface them in a specialized job board using easy_apply and job-type filters.
  • Track employer hiring activity over time by querying search_jobs with days_posted and monitoring employer_id frequency.
  • Extract required skills and education from job descriptions using the skills and education arrays in get_job_details.
  • Monitor how long a specific listing has been active by comparing posting_age and discovery_date from the detail endpoint.
  • Enrich a company profile with live job count and employer metadata (industry, sector, revenue, headquarters) from the employer object.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Glassdoor have an official developer API?+
Glassdoor previously offered a public partner API, but it has been retired and is no longer accepting new registrations. No official developer API is currently available for job listing data.
What does the `location` object in `search_jobs` tell me, and what happens if my location string doesn't match?+
Glassdoor resolves the free-text location input to the first matching place in its index and returns a location object with location_id, name, long_name, type (CITY, STATE, or COUNTRY), and country. If the input text matches nothing, the location field comes back as null and the search proceeds without a geographic filter.
How does cursor-based pagination work, and why might `total_jobs_count` be misleading?+
Each response includes a next_page_cursor and a pagination_cursors array. To fetch page 2 or beyond, pass the cursor from the previous response as page_cursor along with the target page_number. The total_jobs_count reflects the count Glassdoor reports for the query, but the actual number of pages you can navigate may be lower — Glassdoor limits deep pagination on its own site.
Does the API return company reviews, interview data, or salary reports from Glassdoor?+
Not currently. The API covers job listing search via search_jobs and per-listing details via get_job_details, including employer metadata like rating, industry, and revenue. Company reviews, interview questions, and standalone salary reports are not included. You can fork this API on Parse and revise it to add an endpoint targeting that data.
Is the full job description text available, and in what format?+
Yes. The get_job_details endpoint returns a description field containing the full job description as HTML. The search_jobs endpoint returns only a short text snippet per listing, not the full description.
Page content last updated . Spec covers 2 endpoints from glassdoor.com.
Related APIs in JobsSee all →
glassdoor.co.in API
Search for Indian companies and access detailed insights including salary information, company overviews, and common interview questions all in one place. Get the data you need to research employers, compare compensation packages, and prepare for job interviews.
indeed.com API
Search and discover job opportunities on Indeed while accessing detailed job descriptions, company profiles, and salary insights all in one place. Get comprehensive career information including specific compensation data to help you find and evaluate the right job opportunity for you.
naukri.com API
Access data from naukri.com.
monster.com API
Search and retrieve job listings from Monster.com. Supports keyword and location-based search with structured results including job descriptions, salary ranges, company info, and employment details. Also provides access to popular job categories.
xing.com API
Access data from xing.com.
totaljobs.com API
Search and browse job listings from across the UK on TotalJobs, then access detailed information about specific positions including requirements, salary, and application details. Quickly compare opportunities and find roles that match your criteria.
ph.jobstreet.com API
Search for jobs and explore detailed listings from JobStreet Philippines, including job descriptions, company profiles, and hiring information. Discover employment opportunities by browsing job classifications and viewing all open positions from specific companies.
Workday Jobs API
Search and retrieve job postings and detailed descriptions from any company's Workday career site. Find open positions across all organizations using Workday's hiring platform and access complete job details in one place.