How to price a job when you have no salary survey
The P50 team
Published
You can price a job without a salary survey by matching it to a government occupation code, pulling the free wage percentiles from the Bureau of Labor Statistics, adjusting for what that data cannot see, and checking the result against a few public job postings. It takes an afternoon and gives you a number you can defend. It is not as sharp as a survey, and we will say where it falls short.
Step 1: write down what the job actually does
Start with duties, not the title. Titles drift from company to company. A "maintenance technician" at one plant fixes production machines all day; at another, the same title mostly handles building repairs.
Write three to five lines: the main tasks, the tools or systems used, and who the person reports to. Note the level too: entry, mid-level, or the most senior person on the team.
This matters because the government classifies workers "based on their job duties, not their job titles," per the BLS guidance on finding a SOC code. Skip this step and the rest is built on the wrong job.
Step 2: find the matching occupation and its SOC code
SOC stands for Standard Occupational Classification. It is the federal system that sorts every job in the country into one of 867 detailed occupations, each with a code like 49-9041, as described on the BLS SOC home page.
The easiest way to find your code is the keyword search on O*NET OnLine, sponsored by the U.S. Department of Labor. Type a title or a few duty words and pick the description that matches step 1. You can also browse the full list on the BLS occupation profiles page.
When a job straddles two occupations, BLS says to code it "in the occupation that requires the highest level of skill," or if skill is about equal, where the person spends the most time. That rule settles most arguments.
Step 3: pull the OEWS percentile wages
The BLS Occupational Employment and Wage Statistics program (OEWS) publishes employment and wages for about 830 occupations, for the nation, every state, and roughly 530 metro and nonmetro areas, per the May 2025 news release.
For each occupation and area, OEWS reports the 10th, 25th, 50th (median), 75th, and 90th percentile wages. The BLS percentile page explains it this way: "A percentile wage estimate is the value of a wage below which a certain percentage of workers fall." If you are not sure how to read those, see our guide to P25, P50, and P75.
Pull three sets of numbers:
- Your metro area, from the metro area page
- Your state, from the state page
- The national figure, from the occupation profile
Note the date. OEWS data has a May reference period, and as of October 2026 the most recent release (May 2025 data) came out on May 15, 2026, per the news release. So the numbers are about a year old the day they are published. They also blend six half-year survey panels across three years, with older wages adjusted forward to May, as the OEWS FAQ explains. Treat them as a solid floor, not a live quote.
Step 4: adjust for what OEWS cannot see
OEWS is a careful survey, but it is blind to four things you care about.
Level. OEWS does not report by experience, education, or years of service. BLS itself notes that "someone new to the field may expect wages near the 10th or 25th percentile, whereas those with more experience and education could expect wages near the 75th or 90th percentile," on its page about using OEWS data. So use the level you wrote down in step 1 to pick which percentile is your anchor.
Industry. The area and state figures mix every industry together. Each occupation profile has national industry breakdowns, so look at them. If your industry's median sits well above or below the all-industry median, shift your anchor that way.
Company size. OEWS "does not produce estimates based on total establishment employment," per the FAQ. There is no size adjustment to pull from BLS. Use judgment and the postings in step 5.
What counts as a wage. OEWS wages are "straight-time, gross pay, exclusive of premium pay." They include base rate, commissions, production bonuses, and tips. They exclude "overtime pay, severance pay, shift differentials, nonproduction bonuses, employer cost for supplementary benefits, and tuition reimbursements," per the technical note. So compare OEWS numbers to base pay, not total cash. Overtime and year-end bonuses come on top.
Step 5: sanity-check against job postings
Find two or three current postings for the same kind of job in your area with a posted pay range. These are common now. Colorado, for example, requires every job posting to show "the rate of pay or a range of possible offered rates," per the state's INFO #9A guidance, and many other states have similar rules. Our pay transparency article lists them.
Posted ranges are wide and often optimistic at the top, so do not copy them. Use them to check direction only. If every posting sits above your OEWS anchor, your market has moved since the May reference date.
Step 6: set the range and write down your reasoning
Pick a midpoint. Then set a range around it, commonly about 15 percent below and above, so new hires fit at the low end and seasoned people at the high end.
Write one short paragraph: the SOC code and why, the OEWS numbers and their date, each adjustment, and the postings you checked. Save it with the job. When a manager asks why the range is what it is, you will have an answer instead of a guess.
A worked example (all numbers are made up)
Say you run HR at a 400-person manufacturer and need to price a maintenance technician who keeps production equipment running.
| Step | What you did | Example figure |
|---|---|---|
| 1 | Duties: troubleshoot and repair conveyors, presses, and packaging lines; mid-level, 4 to 8 years experience | |
| 2 | SOC match: Industrial Machinery Mechanics (49-9041), not General Maintenance (49-9071), since the work is mostly production machines | |
| 3 | OEWS metro median (illustrative) | $30.80 per hour |
| 3 | OEWS state median (illustrative) | $29.90 per hour |
| 3 | OEWS national median (illustrative) | $29.10 per hour |
| 4 | Level: mid-level, so anchor at the median rather than P25 | $30.80 |
| 4 | Industry: manufacturing median for this occupation runs about 4 percent above all-industry (illustrative), so nudge up | $32.00 |
| 4 | Size: no BLS data; no change | $32.00 |
| 4 | Pay definition: OEWS excludes your year-end bonus, so this stays a base-pay number | $32.00 |
| 5 | Three local postings (illustrative): $28 to $36, $30 to $34, $27 to $33; midpoints average about $31.30 | consistent |
| 6 | Midpoint set at $31.50; range at roughly 15 percent either side | $26.80 to $36.20 per hour |
At 2,080 hours a year, that midpoint is about $65,500 in base pay. Your written reasoning: "Priced to SOC 49-9041 using May 2025 OEWS for our metro, anchored at the median for mid-level, adjusted up for manufacturing, confirmed by three local postings in September 2026."
Those figures are invented to show the steps. Pull your own from BLS.
The honest limits of this method
This gives you a rough, defensible estimate. It does not give you three things a survey does.
First, it cannot tell you what similar employers in your industry pay. The OEWS industry numbers are national and still blend companies of every size and pay philosophy. A survey asks a defined group of employers what they actually pay for a defined job and reports it by industry, size, and region.
Second, it cannot separate levels cleanly. You guessed a percentile for "mid-level." A survey reports level 1, level 2, and level 3 as separate rows.
Third, it is a year behind. BLS data is careful, and careful takes time. A survey with a short collection window can be months fresher.
If you price one or two jobs a year, this method is enough. If you price twenty, or keep losing people to a competitor and cannot see why, a survey earns its place. Our article on what a salary survey is covers how they work.
Where P50 fits
P50 exists for the gap this method leaves. It is a free survey built for employers who have never joined one, and it reports pay by job, level, industry, size, and region in the same percentile format you just learned to read. See how we compute the numbers on our methods page and preview the output in a sample report.
P50 is a free salary survey for employers. Registration for the 2027 survey is open now, and data collection runs March 1 to May 3, 2027. Register for free.
Sources
- BLS Occupational Employment and Wage Statistics (OEWS)
- BLS news release, Occupational Employment and Wages, May 2025
- BLS OEWS frequently asked questions
- BLS OEWS percentile wage estimates
- BLS, Using OEWS data during salary negotiations
- BLS Standard Occupational Classification (SOC) home
- BLS, How do I find my SOC code?
- O*NET OnLine occupation search (U.S. Department of Labor)
- BLS OEWS May 2025 occupation profiles
- BLS OEWS state estimates
- BLS OEWS metropolitan and nonmetropolitan area estimates
- Colorado Department of Labor and Employment, INFO #9A, Transparency in Pay and Job Opportunities