I run a thing that snapshots every open role on a few thousand companies' own Greenhouse, Lever, and Ashby boards once a day — about 42,000 live tech jobs right now — and stores the history so I can watch the market move instead of guessing at it.
One number kept bugging me, so I pulled it: of all those postings, how many actually state a salary?
14%.
Not 14% of companies. 14% of postings. Five out of six tech jobs you can apply to today tell you nothing about pay until you're several interviews deep.
The breakdown by niche
It's not evenly distributed. Design discloses the most; data and mobile the least. (I only publish a median band where at least 20 postings disclose — below that the number is noise, so frontend gets an honest "n/a".)
| Niche | Open roles | % that disclose pay | Median disclosed band (USD/yr) |
|---|---|---|---|
| Full-Stack | 11,221 | 16% | $150,000–$199,880 |
| AI/ML | 9,125 | 17% | $152,875–$216,061 |
| DevOps & Infra | 5,358 | 14% | $130,000–$170,000 |
| Data | 4,247 | 11% | $130,000–$167,663 |
| Product | 3,779 | 16% | $145,350–$180,000 |
| Design | 2,277 | 19% | $118,240–$166,830 |
| Backend | 2,165 | 17% | $152,500–$200,000 |
| Security | 1,732 | 13% | $150,000–$179,000 |
| Mobile | 1,207 | 11% | $155,000–$219,000 |
| Frontend | 1,027 | 17% | n/a (only 17 disclosed) |
The part I find genuinely odd: pay-transparency laws keep expanding — more states, more "range required" rules every year — and yet at the level that actually matters to a job-seeker, the live posting, disclosure is still the exception. The laws are ahead of the postings.
How it's measured (since this is dev.to)
Nothing exotic. A daily job pulls the snapshots, Polars does the cleaning, DuckDB does the aggregation, and the whole thing serves off one boring Hetzner box. The actual hard parts were the data, not the stack:
- Dedup. Companies repost the same role constantly. I collapse by company + normalized title, so "42,138 open roles" means distinct live roles, not raw rows.
- Honest salaries. These are disclosed numbers straight from the posting — never inferred, never a model's guess at comp. The trade-off is coverage: I can only speak for the transparent 14%. That's a real limitation, and pretending otherwise is how you end up publishing a confident median off six data points.
- "Open" means open. A role drops out the day the company closes it, so the counts don't rot.
While I was in there: hiring isn't actually stalling
Whatever the layoff headlines say, the postings tell a more boring story. Over the last 28 days I counted 16,256 roles opened vs 10,879 closed — net +5,377. Things open and close; that churn is what a live market looks like. A board that only ever grows is usually a board that doesn't clean up its dead listings.
Where's the growth concentrated? Defense and hardware, quietly: the fastest-growing employers by net new openings right now are SpaceX (+367) and Anduril (+367), with Nscale, Checkout.com, and Shield AI close behind. Not the names the "tech is dying" narrative expects.
If you're job-hunting
Filter for the 14% that post a number. Life's too short to run three interview rounds to find out it was never going to work on comp.
I keep all of this updated daily and free to reuse (CC BY 4.0) here: engradar.com/tech-hiring-statistics — methodology and the machine-readable data are linked from there. Happy to go into the dedup or the velocity metric in the comments if anyone's curious.
Top comments (0)