Salary Benchmarks from Job Postings
InfoTrie's salary benchmarks give the distribution of advertised pay by occupation and geography: for each SOC 2018 occupation (detailed, or its major group) in the United States as a whole or in a metro area, the 10th, 25th, 50th, 75th and 90th percentiles of annual pay, built from one day's job postings collected from employers' own career sites. A cell is published only when it rests on at least 10 postings from at least 3 employers, none above half of them, so no single company's pay grid can be read off it.
Status: In rollout — available on request
Request a sampleView as Markdown
Key facts
| Grain | One row per occupation (SOC 2018, detailed or major group) and geography (United States, or a metro area) |
|---|---|
| Measures | Annual pay at p10, p25, median, p75, p90; median range bounds; postings and employers behind each cell |
| Disclosure rule | At least 10 postings from at least 3 employers, none above 50 %; smaller cells are left out |
| Pay | US postings in USD; a posting's pay is the midpoint of its annualised range; values outside 15,000 to 1,000,000 a year are discarded as errors |
| Frequency | One edition per day |
| Delivery | InfoTrie console datasets (CSV editions) and the BI feed, on job postings plans |
Sources
- InfoTrie job postings, from employers' own career sites and applicant-tracking systems
Data dictionary
| Field | Type | Description |
|---|---|---|
day | date | Delivery day the benchmark is computed from |
key | string | The cell: geo_level:geo_code:soc_level:soc_code |
geo_level / geo_code / geo_title | string | us or cbsa; US or the CBSA code; its title |
soc_level / soc_code / soc_title | string | detailed or major; the SOC 2018 code; its title |
postings / employers | int64 | Postings with a usable annual pay in the cell, and distinct companies among them |
top_employer_share | float64 | Share of the cell's postings from its largest employer |
pay_p10 / pay_p25 / pay_median / pay_p75 / pay_p90 | float64 | Percentiles of annual pay, USD |
range_min_median / range_max_median | float64 | Medians of the ranges' lower and upper bounds |
share_from_description | float64 | Share of the cell's pay read from the description rather than the pay field |
remote_share | float64 | Share of the cell's postings marked remote |
Use cases
- Compensation benchmarking. Compare an offer or a pay band with what employers advertise for the same occupation and metro area.
- Location strategy. Compare advertised pay for an occupation across US metro areas.
- Labour-market research. Follow advertised pay by occupation from the employers' own postings.
Delivery
- InfoTrie console: one edition per day as CSV, its rows and quality status, on job postings plans
- BI feed: OData v4 for Power BI, Excel and Tableau; JSON or CSV pages for Qlik, Google Sheets and Looker Studio
Frequently asked questions
Is this what the market pays?
It is the distribution of published pay ranges. Most published ranges come from postings in states that require them, so a benchmark describes advertised pay, not every salary paid.
Why are some occupations or metro areas missing?
A cell is left out unless it rests on at least 10 postings from at least 3 employers, none above half of them.
Is it a time series?
Each day is published as its own edition. Trends over months are not yet stacked into one series.
See also
- Talent Forensics — the data pillar this dataset belongs to
- Job Postings from Company Career Sites
- Competitor Hiring by Occupation
- Skills in Demand from Job Postings
- BI connectors — API documentation