Salary benchmark API
Advertised-salary percentiles for an occupation or a job title, computed live from deduplicated job postings.
POST https://api.jobspipe.dev/v1/insights/salary/benchmarkThe salary benchmark answers "what does this role pay?" from job postings that state pay: percentiles of advertised salary for an occupation code or a title match, optionally narrowed by country and seniority. Numbers are computed from deduplicated postings at request time. Occupations use ISCO-08 codes. Requires authentication. Each call that returns data costs 1 credit; an empty or suppressed answer, or an error, costs nothing.
Looking for occupation, industry, skill-trend or AI-exposure breakdowns? That labour-market data is available on request - book a demo and we'll walk you through it.
Request body
| Field | Type | Description |
|---|---|---|
occupation_code | string | ISCO-08 code: 4 digits exact (2512), or 1-3 digits to roll up a whole group (25). |
title | string | Title substring match, e.g. data engineer (2-120 characters). |
country | string | ISO 3166-1 alpha-2 country, e.g. US. |
seniority | string | entry, mid, senior, lead or exec. |
window_days | integer | Look-back window over posting dates. Default 90, max 365. |
Send occupation_code or title (at least one).
Sample sizes and suppression
- A benchmark under 30 postings returns
suppressed: truewithpercentiles: null. - Every response carries a
confidencetier:low(30-99 postings),medium(100-999),high(1000+), alongside the exactcount.
Example
curl -X POST "https://api.jobspipe.dev/v1/insights/salary/benchmark" \
-H "Authorization: Bearer jp_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"title": "data engineer", "country": "US", "seniority": "senior"}'{
"occupation_code": null,
"occupation_label": null,
"window_days": 90,
"country": "US",
"count": 1874,
"currency": "USD",
"percentiles": { "p10": 128000, "p25": 150000, "p50": 172500, "p75": 198000, "p90": 225000 },
"confidence": "high",
"suppressed": false
}Salary figures are advertised pay from postings that state it, annualized. Figures are in USD. They measure what employers offer publicly, which differs from survey-based earnings statistics.
Status codes
| Status | Meaning |
|---|---|
200 | Success (possibly suppressed: true) |
400 | Invalid body (for example, neither occupation_code nor title) |
401 | Missing or invalid API key |
402 | Out of credits |
429 | Per-second rate limit exceeded |
See errors for handling guidance. The endpoint is also in the API Explorer.