A company does not announce that it stopped hiring. It just stops, and the postings quietly come down. In 2026 that is the dominant pattern: attrition plus a freeze, vacancies left unfilled instead of a layoff round with a press release.
Job postings are the only public record of it. The problem is that almost everyone reads them wrong.
The naive method, and why it fails
Count the open roles today, count them a month ago, subtract. If the number went down, the company is pulling back.
That falls over on the first company you try it on. Here are two, measured over the same 30 days on 12 September 2026:
speechify opened 1,883 closed 2,086 net -203 still open 1,086
altom-transport opened 46 closed 455 net -409 still open 46
By net change, Speechify looks like the milder case. It is not the same thing at all. Speechify opened almost nineteen hundred roles in a month: that is a company with enormous posting churn, where roles cycle constantly and a negative month means very little. Altom-transport opened forty-six and closed four hundred and fifty-five, and has forty-six left. That is a wall coming down.
Net change alone cannot tell those apart, because it throws away the thing that matters: how much was still being opened while the closing happened.
The shape that holds up
Three numbers together, not one:
Openings near zero. A company that is still opening at its normal rate is not freezing, whatever the net says. This is the filter that removes the churn cases.
Closings well above the baseline. Against the company's own recent rate, not against other companies. A hundred closings is nothing at Carvana and enormous at a fifty person firm.
What is left open. A freeze shows up as the remaining count collapsing toward zero. Altom-transport has 46 left after closing 455. That is the tell.
Add one more if you have it: how long the remaining roles have been open. A freeze leaves behind stale postings that nobody takes down, because taking them down is also work.
Getting the three numbers
One call returns all of them per company:
GET /v1/signals/hiring?direction=freezing&days=30&min_change=20
{
"company": "altom-transport",
"signal": "freezing",
"opened": 46,
"closed": 455,
"net": -409,
"open_now": 46,
"window_days": 30
}
Over 30 days, more than three hundred employers in this set show a net of minus five or worse in a single week. Most of them are churn. The filter above is what separates them.
Source: the applicant tracking systems of 6,384 employers, read directly every night. In the last seven days the set recorded 40,875 openings and 37,502 closings.
What a closing does not prove
This is where most "layoff data" products quietly cheat, so it is worth being exact.
A posting disappears for two reasons: the role was filled, or the role was withdrawn. The public record does not say which, and neither do we. Anyone selling you a layoff signal derived from job postings is guessing at that difference and hoping you do not ask.
What survives that objection is the pattern, not the event. Forty-six openings against four hundred and fifty-five closings is not forty-five hundred and fifty-five roles filled in a month by a company with forty-six left. One closing tells you nothing. Four hundred, against almost no openings, tells you plenty.
Two more limits worth knowing. This set covers 6,384 employers on eight applicant tracking systems, not every company in the world, and an employer that posts only on LinkedIn is invisible here. And the data is refreshed once a night, so the freshest a row can be is last night.
Who asks this question
Investors and researchers. Hiring is a leading indicator that is public, timestamped and hard to dress up. See is this company growing or pulling back for the version that lines this up against what the same company files with the SEC.
Sales teams, in reverse. A frozen account is one to stop working. The same feed with direction=hiring gives you the other half: which companies are hiring right now.
Competitive intelligence. A rival that stops hiring in one department, while still hiring in others, is telling you which bet it just dropped.
Check before you pay
Two endpoints need no key:
curl https://datasignalslab.com/jobs/v1/health
curl https://datasignalslab.com/jobs/v1/coverage
The signals endpoint is on Pro and up, from $45 a month, because it is built on the change feed. Full detail on the Hiring Signals API.