Glassdoor | Jobs & Careers icon

Glassdoor data API: jobs, reviews and salaries

Indeed, Inc. · Identity

Glassdoor | Jobs & Careers signs members in at /v1/auth/session (username, password, MFA challenge), then loads jobs, reviews, salaries and the profile over authenticated JSON. Job search rides /v1/jobs/search and detail /v1/jobs/detail (listingId, payPeriodAdjustedPay percentiles, remoteWorkTypes); the reviews tab pages /v1/employers/reviews (ratingOverall, pros, cons); salary estimates come from /v1/salaries/estimates (basePayStatistics, totalPayStatistics); and the Me tab reads /v1/members/profile (emailAddress, handle). Every call carries a session token header plus a mirrored CSRF token header.

Glassdoor | Jobs & Careers (package com.glassdoor.app, version 13.12.1) is Indeed's Android client for job search, employer reviews, salary estimates and community bowls. Its data API is organized around a username-password sign-in that returns an MFA challenge (activeMfaMethod, mfaStateId, phoneSuffix), after which authenticated calls load job search results (listingId, payPeriodAdjustedPay percentiles, easyApply, isSponsoredJob), a job detail view (description, remoteWorkTypes, map lat/lng), paged employer reviews (ratingOverall, pros, cons, countHelpful), aggregated salary estimates (basePayStatistics, totalPayStatistics) and the signed-in member profile (emailAddress, handle, employer, location). Calls carry a session token header with a mirrored CSRF token header, a mobile-client flag and a client timezone header.

Screenshots

  • Glassdoor | Jobs & Careers screenshot 1
  • Glassdoor | Jobs & Careers screenshot 2
  • Glassdoor | Jobs & Careers screenshot 3
  • Glassdoor | Jobs & Careers screenshot 4
  • Glassdoor | Jobs & Careers screenshot 5

API surface

  • Create member session (username-password sign-in)

    POST /v1/auth/session osint

    Signs the member in with username/password (optional captcha) and returns MFA challenge state — activeMfaMethod, mfaStateId, phoneSuffix, resultType — before the job, review and salary calls.

    Auth: Unauthenticated form sign-in. Subsequent calls attach a session token header plus a mirrored CSRF token header, a mobile-client flag and a client timezone header.

    • username
    • password
    • captchaResponse
    • emailOptOut
    • isCaptchaVisible
    • postLoginUrl
    • activeMfaMethod
    • mfaStateId
    • phoneSuffix
    • resultType

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/auth/session HTTP/1.1
    Content-Type: application/json
    X-Mobile-Client: android
    X-Client-Timezone: America/Los_Angeles
    
    {
      "username": "[email protected]",
      "password": "******",
      "captchaResponse": "",
      "emailOptOut": false,
      "isCaptchaVisible": false,
      "postLoginUrl": "/"
    }
    {
      "activeMfaMethod": "SMS",
      "mfaStateId": "mfa-7c2e91ab",
      "phoneSuffix": "0100",
      "resultType": "MFA_REQUIRED"
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's email sign-in and MFA challenge flow.
    • Captures the session bootstrap every job, review and salary call depends on.
  • Search job listings

    POST /v1/jobs/search opendata

    Runs the Jobs tab search (keyword + location) and returns listingId, employer, location, pay-period-adjusted p10/p50/p90 pay, rating, Easy Apply flags and pagination cursors.

    Auth: Session token header plus a mirrored CSRF token header, a mobile-client flag and a client timezone header.

    • listingId
    • jobTitleText
    • adOrderId
    • ageInDays
    • applied
    • easyApply
    • expired
    • locId
    • locationName
    • normalizedJobTitle
    • employer
    • payPeriod
    • payPeriodAdjustedPay
    • p90
    • p50
    • p10
    • rating
    • salarySource
    • savedJobId
    • isSponsoredJob
    • payCurrency
    • jobViewUrl
    • jobCountryId
    • paginationCursors
    • totalJobsCount

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/jobs/search HTTP/1.1
    Content-Type: application/json
    X-Session-Token: <session-token>
    X-CSRF-Token: <csrf-token>
    X-Mobile-Client: android
    X-Client-Timezone: America/Los_Angeles
    
    {
      "keyword": "Product Manager",
      "locationId": 1147401,
      "locationType": "C",
      "pageSize": 25
    }
    {
      "jobListings": [{
        "listingId": 1004123456,
        "jobTitleText": "Staff Product Manager",
        "locationName": "San Francisco, CA",
        "normalizedJobTitle": "product manager",
        "employer": {"id": 40772, "name": "Example Corp"},
        "payPeriod": "ANNUAL",
        "payPeriodAdjustedPay": {"p90": 245000, "p50": 198000, "p10": 162000},
        "rating": 4.2,
        "salarySource": "EMPLOYER",
        "easyApply": true,
        "isSponsoredJob": true,
        "payCurrency": "USD"
      }],
      "paginationCursors": [{"cursor": "eyJwIjoxfQ==", "pageNumber": 2}],
      "totalJobsCount": 1284
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's Jobs tab keyword + location search.
    • Field set matches the listing cards rendered in search results.
  • Fetch job listing details

    POST /v1/jobs/detail opendata

    Loads the job-details screen for a listingId: description, Easy Apply URL, employer ratings, pay percentiles, remote-work types and map lat/lng.

    Auth: Session token header plus a mirrored CSRF token header, a mobile-client flag and a client timezone header.

    • listingId
    • description
    • jobTitleId
    • applyUrl
    • easyApply
    • employer
    • jobTitleText
    • locationName
    • payPeriodAdjustedPay
    • rating
    • remoteWorkTypes
    • savedJobId
    • headquarters
    • revenue
    • size
    • website
    • yearFounded
    • overallRating
    • compensationAndBenefitsRating
    • address
    • lat
    • lng

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/jobs/detail HTTP/1.1
    Content-Type: application/json
    X-Session-Token: <session-token>
    X-CSRF-Token: <csrf-token>
    X-Mobile-Client: android
    
    {
      "listingId": 1004123456
    }
    {
      "listingId": 1004123456,
      "jobTitleText": "Staff Product Manager",
      "description": "Lead the identity platform.",
      "applyUrl": "https://example.com/apply/1004123456",
      "easyApply": true,
      "locationName": "San Francisco, CA",
      "employer": {"id": 40772, "name": "Example Corp"},
      "payPeriodAdjustedPay": {"p90": 245000, "p50": 198000, "p10": 162000},
      "rating": 4.2,
      "remoteWorkTypes": ["HYBRID"],
      "savedJobId": 0,
      "overview": {
        "headquarters": "San Francisco, CA",
        "revenue": "$1 to $5 billion (USD)",
        "size": "1001 to 5000 Employees",
        "website": "https://example.com",
        "yearFounded": 2008,
        "overallRating": 4.2,
        "compensationAndBenefitsRating": 4.1
      },
      "map": {"address": "1 Market St", "lat": 37.7936, "lng": -122.395}
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's job-details screen for a single listing.
    • Reflects the header, company overview and map blocks on that screen.
  • Fetch signed-in member profile

    POST /v1/members/profile osint

    Returns the signed-in profile record the Me tab hangs off: name, emailAddress, public handle, employer, job title, location and job-seeker profile id.

    Auth: Signed-in session: session token header and mirrored CSRF token header from sign-in, plus a mobile-client flag.

    • firstName
    • lastName
    • emailAddress
    • handle
    • employmentStatus
    • profilePhotoRelativeUrl
    • agreedToArbitration
    • isSourcingEnabled
    • jobTitleId
    • userEnteredJobTitle
    • employer
    • overallRating
    • locationId
    • userEnteredLocation
    • jobSeekerProfile
    • isRedesignProfile

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/members/profile HTTP/1.1
    Content-Type: application/json
    X-Session-Token: <session-token>
    X-CSRF-Token: <csrf-token>
    X-Mobile-Client: android
    
    {
      "bypassCache": false
    }
    {
      "firstName": "Alex",
      "lastName": "Rivera",
      "emailAddress": "[email protected]",
      "handle": "alex-rivera",
      "employmentStatus": "EMPLOYED",
      "profilePhotoRelativeUrl": "/photo/u/alex.png",
      "agreedToArbitration": true,
      "isSourcingEnabled": true,
      "jobTitle": {"jobTitleId": 3001, "userEnteredJobTitle": "Product Manager"},
      "employer": {"id": 40772, "name": "Example Corp", "overallRating": 4.2},
      "location": {"locationId": 1147401, "userEnteredLocation": "San Francisco, CA"},
      "jobSeekerProfile": {"id": "jsp-4412", "isRedesignProfile": true}
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's Me / profile tab.
    • Reflects the identity record the account screen renders.
  • Fetch employer reviews

    POST /v1/employers/reviews opendata

    Pages the employer-reviews tab: reviewId, star ratings (overall, culture, compensation, work-life), pros/cons/advice text, current-job flag and helpful-vote count.

    Auth: Session token header plus a mirrored CSRF token header and a mobile-client flag. Anonymous browse is possible; signed-in sessions unlock extra filters.

    • filteredReviewsCount
    • numberOfPages
    • reviewId
    • featured
    • reviewDateTime
    • summary
    • isCurrentJob
    • lengthOfEmployment
    • ratingOverall
    • ratingRecommendToFriend
    • ratingCompensationAndBenefits
    • ratingCultureAndValues
    • ratingWorkLifeBalance
    • pros
    • cons
    • advice
    • countHelpful
    • hasEmployerResponse
    • jobTitle

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/employers/reviews HTTP/1.1
    Content-Type: application/json
    X-Session-Token: <session-token>
    X-CSRF-Token: <csrf-token>
    X-Mobile-Client: android
    
    {
      "employerId": 40772,
      "page": 1,
      "pageSize": 10,
      "sort": "DATE",
      "onlyCurrentEmployees": false
    }
    {
      "filteredReviewsCount": 12840,
      "numberOfPages": 1284,
      "reviews": [{
        "reviewId": 9123456,
        "featured": false,
        "reviewDateTime": "2026-08-12T16:40:00Z",
        "summary": "Solid engineering culture",
        "isCurrentJob": true,
        "lengthOfEmployment": 3,
        "ratingOverall": 4,
        "ratingRecommendToFriend": 1,
        "ratingCompensationAndBenefits": 4,
        "ratingCultureAndValues": 5,
        "ratingWorkLifeBalance": 4,
        "pros": "Pay, flexibility, smart teammates",
        "cons": "Slow promotion cycles",
        "advice": "Invest in manager training",
        "countHelpful": 42,
        "hasEmployerResponse": true,
        "jobTitle": {"text": "Product Manager"}
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's employer reviews tab.
    • Reflects the paged review cards with star ratings and pros/cons text.
  • Fetch salary estimates

    POST /v1/salaries/estimates opendata

    Returns aggregated salary estimates for an employer + job title + location: base / bonus / stock / total-pay percentile statistics and salaryCount used by the salary-details screen.

    Auth: Session token header plus a mirrored CSRF token header and a mobile-client flag.

    • estimateSourceName
    • estimateSourceVersion
    • salaryCount
    • queryLocation
    • confidence
    • currency
    • payPeriod
    • basePayStatistics
    • cashBonusStatistics
    • stockBonusStatistics
    • totalAdditionalPayStatistics
    • totalPayStatistics
    • percentiles
    • ident
    • value
    • yearsOfExperience

    Illustrative example reconstructed from the app's interface — not a live capture.

    POST /v1/salaries/estimates HTTP/1.1
    Content-Type: application/json
    X-Session-Token: <session-token>
    X-CSRF-Token: <csrf-token>
    X-Mobile-Client: android
    
    {
      "employerId": 40772,
      "jobTitle": "Product Manager",
      "jobTitleId": 3001,
      "cityId": 1147401,
      "countryId": 1,
      "yearsOfExperience": "THREE_TO_FIVE"
    }
    {
      "estimateSourceName": "AGGREGATED",
      "estimateSourceVersion": "2026.09",
      "salaryCount": 186,
      "queryLocation": {"id": 1147401, "name": "San Francisco, CA"},
      "results": [{
        "confidence": "HIGH",
        "currency": {"code": "USD"},
        "payPeriod": "ANNUAL",
        "basePayStatistics": {"percentiles": [{"ident": "P10", "value": 162000}, {"ident": "P50", "value": 198000}, {"ident": "P90", "value": 245000}]},
        "cashBonusStatistics": {"percentiles": [{"ident": "P50", "value": 18000}]},
        "stockBonusStatistics": {"percentiles": [{"ident": "P50", "value": 32000}]},
        "totalAdditionalPayStatistics": {"percentiles": [{"ident": "P50", "value": 50000}]},
        "totalPayStatistics": {"percentiles": [{"ident": "P10", "value": 185000}, {"ident": "P50", "value": 248000}, {"ident": "P90", "value": 310000}]},
        "yearsOfExperience": "THREE_TO_FIVE"
      }]
    }

    Derived from the app's interface; endpoint details are illustrative, not a live capture.

    • Reconstructed from the app's salary-details screen.
    • Reflects the aggregated base/bonus/total pay percentile blocks.

Data categories

  • job listings
  • employer reviews
  • salary estimates
  • member profiles
  • authentication

Where teams use this data

  • Compensation benchmarking

    HR and recruiting tools pull aggregatedSalaryEstimates for an employerId + jobTitle + cityId and chart basePayStatistics / totalPayStatistics P10/P50/P90 against internal bands.

  • Employer-brand monitoring

    Comms teams page EmployerReviewsData for ratingOverall, ratingCultureAndValues, ratingCompensationAndBenefits, pros and cons, then alert when countHelpful spikes on a new reviewId.

  • Job-market intelligence

    Workforce analytics ingest JobsSearchAndroid listingId rows with payPeriodAdjustedPay, isSponsoredJob and easyApply, then open JobDetailsAndroid for description, remoteWorkTypes and map lat/lng.

  • Candidate-profile enrichment

    ATS connectors read ProfileByUserId (emailAddress, handle, jobTitle, employer, location) after HubFree login to prefill a seeker record without scraping the public site.

Frequently asked questions

What does the Glassdoor data API cover?

Six call groups: username-password sign-in at /v1/auth/session, job search at /v1/jobs/search, job detail at /v1/jobs/detail, paged employer reviews at /v1/employers/reviews, aggregated salary estimates at /v1/salaries/estimates, and the signed-in member profile at /v1/members/profile.

How does the app authenticate those endpoints?

A username-password sign-in returns MFA state (activeMfaMethod, mfaStateId, phoneSuffix) before a session is issued. Authenticated calls then send a session token header together with a mirrored CSRF token header, a mobile-client flag and a client timezone header.

Which job and salary fields are on the wire?

Job search and detail return listingId, jobTitleText, employer, locationName and payPeriodAdjustedPay p10/p50/p90 percentiles, plus easyApply, isSponsoredJob and remoteWorkTypes. Salary estimates return basePayStatistics, cashBonusStatistics, stockBonusStatistics and totalPayStatistics percentiles with salaryCount and a confidence rating.

What employer-review and profile fields are exposed?

Employer reviews return reviewId, ratingOverall, ratingCompensationAndBenefits, ratingCultureAndValues, ratingWorkLifeBalance, pros, cons, advice and countHelpful. The member profile returns firstName, lastName, emailAddress, handle, employmentStatus, job title, employer and location.

Topics

  • glassdoor api
  • glassdoor data api
  • job listings api
  • employer reviews api
  • salary estimates api
  • payPeriodAdjustedPay
  • ratingOverall
  • glassdoor profile api
  • job search api
  • salary percentiles

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

Get a quote