Which ATS platforms actually publish salary

Of the 18 platforms in this index, 4 publish a structured pay band. Across all 1,735,328 roles, 109,152 carry one, which is 6.3%.

Every "salary data" claim is true of an index holding a single row with a number in it. The useful version has a denominator, so here is ours, per platform, from tonight's build.

PlatformRoles With a bandShareWhere from Median annual floor
Greenhouse170,31566,48639.0%read from the description$109,200
Ashby56,72522,33239.4%published field$150,000
Breezy32,50215,67148.2%published field$70,500
Icims57,8183,1885.5%published field$45,760
Personio20,9771,4757.0%published field$42,000
Workday795,89800.0%none
Oracle Recruiting269,59700.0%none
ADP103,98100.0%none
Workable76,10800.0%none
BambooHR43,84300.0%none
Teamtailor22,86600.0%none
Eightfold22,21000.0%none
Recruitee15,66300.0%none
Successfactors14,24600.0%none
Rippling13,92900.0%none
Amazon10,00000.0%none
Phenom7,86600.0%none
Radancy78400.0%none

The "where from" column is the distinction most salary claims skip. A published field is the employer filling in a box their ATS gave them. Read from the description means we found the range written in the body text and parsed it, which is an inference about the posting rather than a field anybody filled in, and the parser drops anything ambiguous rather than guess. Currently 66,486 rows are of the second kind.

The medians are not a cost-of-labour comparison and should not be read as one. They mostly reflect who uses each platform: Ashby is concentrated in US technology, Breezy in smaller employers, Personio in the German-speaking mid-market.

Why the number needs normalising before you can sort it

The 109,152 bands arrive in 31 different currencies and on 5 different periods: year (74,560), hour (29,302), week (2,662), month (1,684), day (114). An hourly rate and an annual one in the same column, sorted, puts every salaried role above every hourly one regardless of what either pays.

So each row also carries an annualised floor and ceiling, on the employer's own numbers: hourly x 2,080, daily x 260, weekly x 52, monthly x 12. The currency is kept as published and never converted, because a conversion needs a rate and a date, and a made-up rate is worse than an honest EUR.

The honest gap

Seven platforms publish no structured pay field at all, and that is the source's shape rather than something we dropped. A separate thing is true of Greenhouse in particular: it publishes no pay field, but many US employers write the range into the description text to satisfy state disclosure law. Sampled on 563 postings across ten US-heavy Greenhouse boards on 2026-08-11, 270 of them contained a currency range somewhere in the body, and it splits by employer rather than by posting: three of the ten boards did it on every role and three on none. We do not parse that today. Reading a number out of prose is how an index ends up billing somebody for a "$2,000,000" salary that was a budget the role manages, and a wrong salary is worse than an absent one.

Using it

Filter the whole index by an annualised floor with ATS Jobs Search, or take the two platforms that publish most of it directly: Ashby Jobs API and Breezy Jobs API.