Salary Data API: Pay Benchmarks From Live Job Postings
Pricing
from $13.00 / 1,000 salary benchmarks
Salary Data API: Pay Benchmarks From Live Job Postings
Pay ranges for any job title and location, from the salaries stated in open job postings. Median, percentiles, seniority and country breakdowns, with sample postings.
Pricing
from $13.00 / 1,000 salary benchmarks
Rating
0.0
(0)
Developer
Velavalapalli Mohana Durga Sai Ram
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 minutes ago
Last modified
Categories
Security
Limited permissionsShare
What does Salary Benchmarks do?
Get pay ranges for any job title and location, built from the salaries employers state in their own open job postings. Each benchmark gives the median, percentiles, average range and a breakdown by seniority and country, with sample postings as evidence. The index holds about 170,000 open job postings that state pay and is refreshed daily.
Use it as a salary data API: send job titles and places, and get back one clean benchmark per title and location, ready for a spreadsheet, a compensation tool or an AI agent.
Why use Salary Benchmarks?
- Current pay, not old surveys. Benchmarks come from jobs that are open now, not from salaries people reported years ago.
- Employers' own numbers. Pay transparency laws in several US states, and similar rules spreading in Europe, mean more employers publish a range in the posting itself.
- Evidence you can check. Every benchmark links recent postings with their stated pay.
- Many benchmarks in one run. Ten titles across ten cities is one run with 100 rows.
- You only pay for useful rows. Benchmarks with too few postings are skipped and not charged.
Who uses salary benchmarks?
- HR and compensation teams setting salary bands and offers for a role in a city or country.
- Recruiters and agencies pricing searches and briefing hiring managers with market data.
- Job seekers and career sites showing what a role pays where.
- Salary tools and AI agents that need clean numbers through an API.
What data can Salary Benchmarks extract?
| Field | Type | Description |
|---|---|---|
jobTitle, location | text | The title and place you asked for |
median | number | Median yearly pay, in the main currency |
p10, p25, p75, p90 | number | Percentiles of yearly pay |
averageRangeLow, averageRangeHigh | number | Average bottom and top of the stated ranges |
currency, period | text | Currency of the benchmark; the period is always year |
postingsWithPay, companies | number | How many postings and companies the benchmark uses |
confidence | text | high from 30 postings, medium from 10, low below |
bySeniority, byCountry | list | Median pay per level and per country |
otherCurrencies | list | Postings in other currencies, summarized separately |
sampleJobs | list | Recent postings with their pay and a link |
summary | text | One sentence, such as "$185,000 median yearly pay from 1105 job postings at 591 companies." |
How to get salary data for a job title
- Enter one or more job titles, such as
data engineeror"account executive". - Add locations if you want one benchmark per place: a city, state, country or two-letter country code.
- Click Start. You get one benchmark for every title and location pair.
- Download the results, or read them through the API.
Example input
{"jobTitles": ["data engineer", "product manager"],"locations": ["United States", "London", "Germany"],"minPostings": 5}
How much does salary data cost?
You pay per benchmark returned, and higher Apify plans pay less per benchmark. The pricing panel on this page shows the price for your plan. On the Free and Starter plans:
| Benchmarks returned | Cost |
|---|---|
| 10 | $0.20 |
| 100 | $2.00 |
| 1,000 | $20.00 |
Benchmarks with too few postings are skipped and not charged. Platform usage is included.
Input
See the Input tab for every option:
| Option | What it does |
|---|---|
| Job titles | One benchmark per title. Words in any order, or use double quotes for an exact phrase |
| Locations | One benchmark per location for each title. Leave empty for all locations |
| Exclude title keywords | Skip titles containing these, such as "intern" |
| Seniority | Only count postings at these levels |
| Only remote jobs | Only count remote postings |
| Count remote jobs that name no country | Off by default, because pay for worldwide remote jobs is often set for another market |
| Posted within the last N days | 0 uses every open posting in the index |
| Minimum postings per benchmark | Benchmarks with fewer postings that state pay are skipped and not charged |
| Sample jobs per benchmark | Recent postings with their pay and a link |
Output
Download the dataset as JSON, CSV, Excel, XML, RSS or HTML. Each benchmark looks like this:
Example output
{"jobTitle": "data engineer","location": "London","summary": "£95,000 median yearly pay from 17 job postings at 12 companies.","currency": "GBP","period": "year","median": 95000,"p10": 64000,"p25": 82000,"p75": 110000,"p90": 120000,"averageRangeLow": 85000,"averageRangeHigh": 105000,"postingsWithPay": 17,"companies": 12,"confidence": "medium","bySeniority": [{ "seniority": "mid", "postings": 9, "median": 85000 }, { "seniority": "senior", "postings": 8, "median": 105000 }],"byCountry": [{ "country": "GB", "postings": 17, "median": 95000 }],"otherCurrencies": [],"sampleJobs": [{ "title": "Senior Data Engineer", "company": "Acme", "location": "London, UK", "salary": { "min": 95000, "max": 115000, "currency": "GBP", "period": "year" }, "postedDate": "2026-11-03", "url": "https://job-boards.greenhouse.io/acme/jobs/123" }],"dataAsOf": "2026-11-05T22:01:18.962Z"}
How the numbers are worked out
- Each posting counts once, at the midpoint of its stated range. A posting that states one figure counts at that figure.
- Hourly pay is converted to yearly at 2,080 hours, and monthly pay at 12 months. Pay for other periods is left out.
- Each benchmark uses the currency most of its postings state. Postings in other currencies are summarized in
otherCurrenciesand not converted. - Bonus, equity and benefits are not included, because postings rarely state them in a comparable way.
Tips for better benchmarks
- Use a country instead of a city when a benchmark comes back with
lowconfidence. - Put a title in double quotes for an exact phrase, such as
"product manager". - Raise Minimum postings per benchmark to 10 or more when you only want solid numbers.
Use Salary Benchmarks with the API and AI agents
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('atsfeed/job-salary-benchmarks').call({jobTitles: ['data engineer'],locations: ['United States', 'London'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();
AI agents in Claude, ChatGPT, Cursor or any MCP client can call this Actor as a tool through the Apify MCP server at mcp.apify.com. The API tab has Python, cURL and more.
FAQ
Where does the salary data come from?
From the pay that employers state in their open job postings on Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio and Breezy job boards. No personal data is used: benchmarks describe what employers advertise, not what any person is paid.
Why is a benchmark missing?
It had fewer postings that state pay than your Minimum postings per benchmark. It was skipped and not charged. Try a broader title or a country instead of a city.
Why are some benchmarks in US dollars outside the US?
Some international postings state pay in US dollars. The Actor uses the currency most postings state and lists the rest in otherCurrencies.
Coverage and accuracy
- Index size, November 2026: about 170,000 open job postings that state pay. By currency: US dollars 150,000, euros 8,600, British pounds 6,000, Indian rupees 2,800, Canadian dollars 1,900.
- Coverage is strongest in the United States, where more employers state pay.
- A city matches postings that name that city. A country also matches postings that list it among several countries.
- Pay is taken from the employer's posting with fixed rules. Ranges can be wide, and a few postings state pay for a different market than their location. Check the sample jobs before relying on a number.
Related Actors
- Career Site Jobs API: open jobs from company career sites on eight applicant tracking systems, in one search.
- Daily Jobs Feed: every new job from company career sites in one scheduled run.
- Remote Jobs Scraper: remote jobs straight from company career sites.
- Hiring Signals & Technographics: companies hiring for a role or naming a tool in their postings.
- Job search for a single source: Greenhouse, Lever, Ashby, Workable, SmartRecruiters.
Questions
Found a wrong number, or want a market covered better? Open an issue on the Issues tab with an example.