Salary data APIs in 2026: the real options, honestly compared
Survey data, self-reported data and advertised-salary data answer different questions, and every salary API sells one of the three. The options that actually exist - BLS, Adzuna, the enterprise benchmarking vendors, and posting-based percentiles - plus a live benchmark you can run with one curl.
Dvir Atias
Founder, JobsPipe
Every salary dataset answers one of three different questions, and most disappointment with “salary APIs” comes from buying the wrong question. Survey data (the BLS) answers “what are people in this occupation actually paid” - authoritative, slow, aggregate. Self-reported data (Levels.fyi, Glassdoor) answers “what do individuals say they make” - rich for tech, skewed by who reports. Advertised-salary data (job postings) answers “what are employers offering right now” - the freshest signal, limited to postings that state pay. Decide which question your product asks, then pick from the options below.
The options that actually exist
| Source | Data type | Access |
|---|---|---|
| BLS OEWS (US) | Survey; percentiles per SOC per metro | Free public API, annual updates |
| Adzuna | Advertised; histograms and averages | Free API tier |
| Levels.fyi / Glassdoor | Self-reported | No meaningful public API |
| Payscale / Salary.com / Mercer | Survey + modeled benchmarking | Enterprise contracts |
| JobsPipe Insights | Advertised; live percentiles per occupation or title | Self-serve API, free tier |
The BLS is the baseline every US product should know about: real percentile tables keyed to SOC occupation codes, free, methodologically bulletproof - and roughly a year behind the market. Adzuna is the budget advertised-data option, covered in our field guide. The enterprise benchmarking vendors are excellent and priced accordingly. The gap in the middle - current, posting-level, self-serve - is what we built.
Live advertised-salary percentiles in one call
JobsPipe’s salary benchmark computes percentiles at request time from live postings that state pay, normalized to annual USD:
curl -X POST "https://api.jobspipe.dev/v1/insights/salary/benchmark" \
-H "Authorization: Bearer jp_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "data engineer", "country": "US" }'
{
"count": 630,
"currency": "USD",
"percentiles": { "p10": 105000, "p25": 125000,
"p50": 150000, "p75": 186000, "p90": 232000 },
"confidence": "medium",
"suppressed": false
}Every number is measured, not modeled: that response says 630 live US postings matching “data engineer” state pay, and half of them advertise $150k or more. Filters take an occupation code or a title match, plus country and seniority; samples under 30 postings return suppressed: true instead of untrustworthy percentiles, and every response carries a confidence tier. The companion endpoints serve occupation-level compensation and AI-skill salary premiums.
The caveat that applies to everyone
Advertised salary is not paid salary. Employers who post pay skew toward regulated markets (pay-transparency states, public sector) and competitive hiring; negotiated outcomes differ from ranges. The strongest products triangulate: BLS for the level, advertised data for the current market, self-reported for senior tech niches. What matters is knowing which question each source answers - and never presenting one as another.
Benchmark any title against live postings - free tier, one POST.
Get a free API keyFrequently Asked Questions
Is there a free salary data API?
Two real options: the BLS public API serves survey-based percentiles per SOC occupation and metro area for the US, free and authoritative but roughly a year behind the market; and Adzuna's free API tier includes advertised-salary histograms. JobsPipe's salary benchmark endpoint computes live advertised percentiles and is included in its free monthly request tier.
What is the difference between advertised, survey and self-reported salary data?
Survey data (BLS) measures what people are actually paid - authoritative, aggregate, slow. Self-reported data (Levels.fyi, Glassdoor) is what individuals volunteer - deep for tech, skewed by who reports. Advertised data is what employers publish in postings - the freshest signal, limited to postings that state pay. They answer different questions, and a product should never present one as another.
How does the JobsPipe salary benchmark work?
POST an occupation code or a job title, optionally with country and seniority, and it computes p10 through p90 percentiles at request time from live postings that state pay, normalized to annual USD, with the sample count and a confidence tier. Samples under 30 postings return suppressed:true instead of unreliable numbers.
How accurate is salary data from job postings?
It measures advertised ranges precisely, which is not the same as negotiated pay. Postings that state salary skew toward pay-transparency jurisdictions and competitive markets, and final offers can differ from ranges. The robust pattern is triangulation: survey data for the level, advertised data for current market movement, self-reported data for senior tech niches.

