Glassdoor API — Company Salaries by Role
Documentation menu
FetchLayer FetchLayer API

Get reported pay by role

Return the roles with the most reported salaries at one company, each with base pay and total pay — base plus bonus, stock and other additional pay — at the 10th, 25th, 50th, 75th and 90th percentiles, the number of salaries behind those figures, the ISO currency code they are in, and when the newest was reported. This endpoint reads the first page of the company's salaries listing and nothing beyond it: there is no pages parameter and no cursor, because the upstream listing is not routed past page one. limit trims what comes back from that page rather than walking further, so treat the result as the most-reported roles at the company, not every role.

POST /company-salaries Salaries
https://api.fetchlayer.dev/glassdoor/company-salaries
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

company string required

Glassdoor company id, or any Glassdoor URL containing one. Use /search-companies to turn a name into an id.

limit number optional

Maximum roles returned from the first page (max 200), or -1 for everything on it. (default: 30)

Response Fields

company-salaries

Get reported pay by role

employerId string

The company this pay belongs to.

companyName string | null

Company name as published.

roles object[]

The most-reported roles on the first page of the salaries listing.

roles[].jobTitle string | null

Role as Glassdoor normalises it.

roles[].salaryCount number | null

Salaries reported for this role — the sample size behind the percentiles.

roles[].currency string | null

ISO currency code the figures are in. Not every role at a company reports in the same currency.

roles[].basePay object

Base salary only, at p10, p25, p50, p75 and p90.

roles[].totalPay object

Base plus bonus, stock and other additional pay, at the same five percentiles.

roles[].mostRecentAt string | null

When the newest of these salaries was reported — how stale the benchmark is.

roleCount number

Number of roles in this response.

requestedUrl string

The Glassdoor page this result corresponds to.

scrapedAt string

When the page was collected, as an ISO 8601 timestamp.

notes string[]

Plain-language caveats about this particular result — a walk that stopped short, a listing with more pages, an upstream limit that was hit. Read it: a well-formed response can still be incomplete, and this is where that is said.

blocked boolean

Always false on a successful response.

Request

curl -X POST "https://api.fetchlayer.dev/glassdoor/company-salaries" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"company":"671954","limit":25}'

Response

{
  "employerId": "671954",
  "companyName": "Stripe",
  "roleCount": 25,
  "roles": [
    {
      "jobTitle": "Software Engineer",
      "salaryCount": 412,
      "currency": "USD",
      "basePay": {
        "p10": 148000,
        "p25": 168000,
        "p50": 192000,
        "p75": 221000,
        "p90": 254000
      },
      "totalPay": {
        "p10": 182000,
        "p25": 214000,
        "p50": 253000,
        "p75": 301000,
        "p90": 358000
      },
      "mostRecentAt": "2026-08-28"
    }
  ],
  "notes": [
    "Salaries are read from the first page of the listing only; roles beyond it are not reachable."
  ]
}