Tech Salary Data API: Pay Ranges from Job Postings avatar

Tech Salary Data API: Pay Ranges from Job Postings

Pricing

from $20.00 / 1,000 salary benchmarks

Go to Apify Store
Tech Salary Data API: Pay Ranges from Job Postings

Tech Salary Data API: Pay Ranges from Job Postings

Salary benchmarks from posted pay ranges: median, P25 and P75 by role, country and seniority, from 47,000+ live job posts refreshed every day.

Pricing

from $20.00 / 1,000 salary benchmarks

Rating

0.0

(0)

Developer

Eki Soka

Eki Soka

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Share

Tech Salary Data API: pay ranges from fresh job postings

Get salary benchmarks built from thousands of open job postings that publish a pay range, taken straight from companies' own job boards (Greenhouse, Ashby, Lever, Workable, Recruitee, SmartRecruiters, BambooHR, Personio) and refreshed every day.

One row per role (and optionally country, seniority or company) with the median, P25, P75, average min/max and range, the number of postings and companies behind it, and example companies.

Database today: about 48,000 open jobs from 1,250+ company job boards; postings with a published pay range feed the benchmarks.

Who uses it

  • HR and compensation teams: check current market pay for a role before opening it or making an offer.
  • Founders and hiring managers: set salary bands from what similar companies actually publish.
  • Job boards, newsletters and career sites: show "typical pay" for a role.
  • Researchers and analysts: pay-transparency and labour-market studies.

Examples

Software engineer pay by country:

{ "keywords": ["software engineer", "backend engineer"], "groupBy": "role_country" }

Data roles in the US, split by seniority, USD only:

{ "keywords": ["data scientist", "data engineer"], "countries": ["US"], "currencies": ["USD"], "groupBy": "role_country_seniority" }

Which companies pay most for account executives:

{ "keywords": ["account executive"], "groupBy": "company", "minSamples": 1 }

Output

FieldExample
role, country, seniority, companyBackend Engineer, US, senior
currency, periodUSD, year
salary_median, salary_p25, salary_p75165000, 148000, 182000
salary_median_by_company158000: median of each company's own median, so one company posting many roles does not set the benchmark
salary_min_avg, salary_max_avg, salary_lowest, salary_highestaverages and extremes of the posted ranges
sample_size, companies37 postings from 29 companies
remote_share, top_companies, sample_titles, sample_job_urlscontext and links to source postings

Salaries are converted to per year (hourly x 2080, monthly x 12) but never converted between currencies: each currency gets its own row. median uses the midpoint of each posted range. When a few companies post many roles (for example frontier AI labs), compare salary_median with salary_median_by_company: the second counts every company once.

Pricing

Pay per event: one salary benchmark row. A run that finds nothing charges nothing. Use Max results or Apify's maximum cost per run to cap spend.

Coverage and limits

  • Only postings that publish a pay range are used (common in the US, Canada, UK and for many remote roles; rarer elsewhere).
  • Roles are grouped by a cleaned job title (seniority words removed). Use keywords to define the role you want.
  • seniority and country are derived from the posting with rules, so treat them as good filters, not perfect labels.
  • Pay ranges come from the structured salary fields of Ashby, Lever and Recruitee and from the pay-range sentence in the job text for Greenhouse, Workable, Personio and others (for example "Salary: $150,000 - $200,000/yr").
  • Sales postings often publish on-target earnings (base + commission). Those OTE ranges are left out by default so the benchmarks show base pay; set includeOte to include them.

FAQ

Where does the data come from? The official public job board endpoints that companies use for their own career pages, read once a day at a low request rate.

How fresh is it? Refreshed daily; closed jobs drop out on the next refresh.

Can I integrate it? Yes: call it through the Apify API, schedule it, or connect it to Make, Zapier, n8n, Google Sheets or webhooks.

Data and use

Only public job-posting data, aggregated. No personal data.

What you can do with it

  • Get salary data for software engineers, product managers, designers and sales roles
  • Compare pay by country and currency (US, Canada, UK, Germany and more)
  • Benchmark compensation by seniority: junior, mid, senior, staff, manager
  • See what a specific company publishes for a role (group by company)
  • Set salary bands from real posted pay ranges, refreshed daily
  • Export salary benchmarks to CSV, Google Sheets or BI tools

What it costs

ExampleCost
20 salary benchmarksabout $0.40
100 salary benchmarksabout $2.00

You only pay for rows you get. Set Max results (or a maximum cost per run in Apify) to cap spend. Apify's free plan includes monthly credit, so you can try it at no cost. Apify subscribers get automatic Store discounts on some events.

Use it from code, no-code tools or AI agents

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("worthwhile_quinsy/tech-salary-data-api").call(run_input={'keywords': ['software engineer'], 'groupBy': 'role_country', 'maxResults': 20})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('worthwhile_quinsy/tech-salary-data-api').call({"keywords": ["software engineer"], "groupBy": "role_country", "maxResults": 20});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

One HTTP call (returns the rows directly):

curl -X POST 'https://api.apify.com/v2/acts/worthwhile_quinsy~tech-salary-data-api/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"keywords": ["software engineer"], "groupBy": "role_country", "maxResults": 20}'

No-code: connect it to Make, Zapier, n8n, Google Sheets, Slack or a webhook from the Integrations tab, and run it on a Schedule (for example every morning).

AI agents (MCP): use it as a tool in Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server: https://mcp.apify.com?tools=worthwhile_quinsy/tech-salary-data-api. Your agent can then ask for live job data in plain language. Use this tool when the user asks for typical salary or pay range for a role, country or seniority.

More tools from the same job-data suite

All of these read the same daily database of jobs from company career pages, so results are consistent across tools.

ActorWhat it gives you
Company Jobs Search + Hiring SignalsSearch all jobs in the database, check your own list of companies, or get per-company hiring signals.
Remote Jobs APIOnly remote jobs, ready for job boards, newsletters and alert bots.
Companies Hiring by Tech StackB2B buying signals: which companies are hiring for the tools you sell into.
Company Hiring TrendsWhich companies are ramping up hiring, and which are slowing down.
ATS DetectorWhich applicant tracking system (Greenhouse, Lever, Ashby...) a company uses, plus its career page.
Greenhouse Jobs ScraperAll open jobs from any Greenhouse job board, or search every Greenhouse board we track.
Lever Jobs ScraperAll open jobs from any Lever job board, or search every Lever board we track.
Ashby Jobs ScraperAll open jobs from any Ashby job board, or search every Ashby board we track.

Questions and feedback

Found a bug, need another filter, field or ATS? Open an Issue on this Actor's page; issues are answered quickly. If it saved you time, a short review helps other people find it.