Layoffs
US WARN Act layoff and closure notices, as state labor agencies publish them, each with the company it names when matched, via GET /v1/layoffs.
GET https://api.jobspipe.dev/v1/layoffsUnder the US WARN Act, an employer must give notice of a mass layoff or a plant closing, and each
state labor agency publishes the notices it receives. This endpoint returns those notices, newest
first, each with the company it names when that company is matched to the companies behind our job
postings. Put a company's layoffs next to its live hiring by passing the matched company.key to
the company page, whose layoffs and hiring_monthly sections show
both. Requires authentication.
Notices are refreshed weekly. Not every state is covered yet. When a state amends a notice, the
latest version is returned under the same id.
Pricing
One credit per notice returned. A notice already paid for this calendar month is free, and an
empty page, a 400 and any error cost nothing. metadata.credits_charged and
metadata.notices_already_paid say what the page cost.
Request
| Parameter | In | Description |
|---|---|---|
state | query | US states by two-letter postal code, comma-separated: CA or CA,TX. |
company | query | A company's key (digits, from any company or job response) or its website domain (google.com). Only notices matched to that company are returned. |
notice_date_gte | query | Notices dated on or after this day (YYYY-MM-DD). |
notice_date_lte | query | Notices dated on or before this day (YYYY-MM-DD). |
min_employees | query | Only notices affecting at least this many employees. A notice without a count is left out. |
kind | query | layoff, closure (the site or plant closes) or unknown (the notice does not say). |
limit | query | Notices per page, 1 to 100; 25 by default. |
offset | query | Notices to skip, up to 10,000; pass the previous page's next_offset. |
curl "https://api.jobspipe.dev/v1/layoffs?state=CA&min_employees=100¬ice_date_gte=2026-07-01" \
-H "Authorization: Bearer $JOBSPIPE_API_KEY"import os, requests
r = requests.get(
"https://api.jobspipe.dev/v1/layoffs",
headers={"Authorization": f"Bearer {os.environ['JOBSPIPE_API_KEY']}"},
params={"state": "CA", "min_employees": 100, "notice_date_gte": "2026-07-01"},
)
for notice in r.json()["data"]:
print(notice["notice_date"], notice["employer"], notice["employees"], notice["company"])const res = await fetch(
"https://api.jobspipe.dev/v1/layoffs?company=google.com",
{ headers: { Authorization: `Bearer ${process.env.JOBSPIPE_API_KEY}` } },
);
const { data, metadata } = await res.json();Response
{
"data": [
{
"id": "1460324529164711321",
"state": "CA",
"employer": "Example Robotics Inc.",
"address": "100 Market St",
"city": "San Francisco",
"county": "San Francisco",
"zip": "94105",
"notice_date": "2026-10-14",
"effective_date": "2026-12-13",
"employees": 142,
"kind": "layoff",
"company": { "key": "3837186692681720328", "name": "Example Robotics", "domain": "examplerobotics.com" }
}
],
"metadata": {
"total_results": 1,
"returned_results": 1,
"next_offset": null,
"credits_charged": 1,
"notices_already_paid": 0
}
}| Field | Meaning |
|---|---|
id | The notice's id. Stays the same when the state amends the notice. |
state | Two-letter postal code of the state that published the notice. |
employer | The employer as named on the notice, often its legal name. |
address, city, county, zip | The site affected, as the notice gives it; null when not stated. |
notice_date | The day the notice was given or received. Notices sort on it, newest first; a notice without one sorts last. |
effective_date | The day the layoff or closure takes effect, when stated. |
employees | Employees affected, when stated. |
kind | layoff, closure, or unknown when the notice does not say. |
company | The company the notice names, with its key, name and domain, when it is matched with confidence; null otherwise. |
metadata.total_results | Notices the filters match. |
metadata.next_offset | The offset of the next page; null on the last page. |
How notices are matched to companies
A notice names an employer as it filed ("Example Robotics Inc."); our postings name the company as
it hires. A notice is matched when the two names agree and the company's own US job postings back
the match. A match we are not confident in is not shown: the notice is still returned, with
company: null. A notice filed under a holding company or another legal name the company never
posts under is not matched, so filtering by company can miss some of its notices. Filter by
state and read employer to see them all.
Company Page
One company's page — who it is, how its hiring is changing against the market, its technology changes, its corporate group, its business facts, offices, similar companies, WARN Act layoff notices and monthly hiring — via GET /v1/jobs/companies/{key}, with a short summary from POST /v1/jobs/companies/{key}/summary.
Agentic Search
Search job postings from a plain-language request with POST /v1/jobs/agentic-search.