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/benchmark

The 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

FieldTypeDescription
occupation_codestringISCO-08 code: 4 digits exact (2512), or 1-3 digits to roll up a whole group (25).
titlestringTitle substring match, e.g. data engineer (2-120 characters).
countrystringISO 3166-1 alpha-2 country, e.g. US.
senioritystringentry, mid, senior, lead or exec.
window_daysintegerLook-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: true with percentiles: null.
  • Every response carries a confidence tier: low (30-99 postings), medium (100-999), high (1000+), alongside the exact count.

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"}'
200 OK
{
  "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

StatusMeaning
200Success (possibly suppressed: true)
400Invalid body (for example, neither occupation_code nor title)
401Missing or invalid API key
402Out of credits
429Per-second rate limit exceeded

See errors for handling guidance. The endpoint is also in the API Explorer.

On this page