Only the jobs that publish a salary

Measured 2026-10-24 · 266 companies · 18,668 postings scanned

Most job feeds hand you everything and let you filter. That is fine until you are paying per row, and roughly three in five postings never state a number. Here is the same pool, split by whether the employer actually published pay:

8,039
postings with a pay range (43.1%)
10,629
postings with no pay range
$200,000
median annual pay (USD)

Where pay gets published, by board

This is a property of the board, not of the employer's generosity: Greenhouse usually carries pay in the description, Ashby ships a structured field, Lever almost never does, Workable does not have a field at all.

BoardPostingsWith payRate
greenhouse11,5615,13344.4%
ashby5,3562,74251.2%
lever1,7511649.4%

What a filtered run costs you

Billing is per returned row, so rows removed by salaryOnly are never charged. Move the slider to see the arithmetic - start fee $0.0005 per run plus $0.0015 per row you keep:

Estimated: $0.1505

Without the filter you would be paying the same $0.0015 per row for a stream that is only ~43% usable, and you would spend your own compute or eyeballs separating the rest.

How to use it

One switch on the ATS Job Feed actor:

{"useVerifiedPool": true, "salaryOnly": true, "maxJobs": 100}

Add "minSalaryUsd": 150000 to keep only postings that clear a floor, or "includeDescriptions": false for a cheaper run that still carries pay for Ashby and Lever (Greenhouse pay lives inside the description, so it disappears in that mode). If you do not want to pay at all, the same numbers are in the free CSV (8,039 rows, CC BY 4.0) and you can check a single employer on the lookup page.

Honest limits

Run it in 60 seconds →