NewConnect Claude, Gemini, ChatGPT, and other AI agents to API Ninjas via our MCP server →

Layoff Notices API

The Layoff Notices API returns official WARN Act layoff notices filed with state labor agencies as JSON: which employer is laying off workers or closing a site, where, how many workers are affected and when. Search over 68,000 notices from every state that publishes WARN notices, plus Washington, DC, by company, stock ticker, state, city, county, ZIP code and radius, date, number of workers and event type. New notices are added daily.

Every notice has the same fields, whichever state it was filed in: the employer as filed, the event type (layoff, closure, relocation and more), the notice and effective dates, the workers affected at each location, the industry and NAICS code, the reason and the union. Amended, rescinded and postponed notices are marked, and updated_since returns only new and changed notices, so you can keep a copy in sync.

Paid plans (Developer and above) add company matching (the company behind a notice, with its stock ticker, exchange, SEC CIK, website domain and parent company) and a link to the official notice document. They also get the full history, back to the 1990s for many states, and monthly and yearly totals. The free plan gets notices dated from January 1 of last year.

Use it to track layoffs at companies you sell to, invest in or recruit from, to watch suppliers and borrowers, or to chart job losses by state, county and industry.

Available endpoints:

Event Types

The event_type of each notice, also accepted by the event_type parameter.

event_typeMeaning
layoffWorkers are laid off. temporary is true for a temporary layoff.
closureA plant, store, office or other site closes.
relocationThe work moves to another location.
furloughWorkers are furloughed.
reduced_hoursWorking hours are cut.
otherAnother action named in the notice.
unknownThe notice does not name the type of action.

Notice Status

statusMeaning
filedThe notice as filed.
amendedThe employer filed an amendment, e.g. to change the dates, the sites or the number of workers.
rescindedThe employer withdrew the notice.
postponedThe layoff or closure was postponed.
3 endpoints

https://api.api-ninjas.com/v1/layoffnotices

Searches layoff notices by company, ticker, location, date, number of workers and event type, newest first. Combine any filters, e.g. every closure in Texas this year with at least 100 workers, or every notice within 25 miles of a ZIP code.

Parameters

All parameters are optional. Without any, the latest notices from every state are returned.

  • id  optional

    A notice id from an earlier response. Returns that notice.

  • company  optional

    Part of the employer or company name, e.g. example or example manufacturing. Each word matches the start of a word in the name; case and legal suffixes such as Inc. and LLC are ignored.

  • ticker  optional

    Current stock ticker of the matched company or of its parent company, e.g. EXMF. Returns the notices of the company and its subsidiaries.

  • state  optional

    Two-letter state code, or several separated by commas, e.g. NY or CA,TX. Use DC for Washington, DC.

  • city  optional

    City of an affected location, e.g. Rochester (not case-sensitive).

  • county  optional

    County of an affected location, with or without the word County or Parish, e.g. Monroe.

  • zip  optional

    5-digit ZIP code of an affected location. With radius, the center of the search.

  • radius  optional

    With zip: returns notices with an affected location within this many miles of the ZIP code (1-100).

  • start_date  optional

    Earliest notice date (YYYY-MM-DD), inclusive. A notice without a notice_date is dated by the date the state received or posted it, or else by its effective_date. On the free plan, January 1 of last year or later.

  • end_date  optional

    Latest notice date (YYYY-MM-DD), inclusive.

  • min_workers  optional

    Only notices affecting at least this many workers, e.g. 100.

  • event_type  optional

    One or more event types, separated by commas, e.g. closure or layoff,closure.

  • updated_since  optional

    ISO 8601 date or date-time, e.g. 2026-10-01T00:00:00Z. Only notices added or changed since then, to keep a copy in sync.

  • sort  optional

    date (default, newest first) or workers (most workers first).

  • limit  optional

    Number of notices to return (1-100). Default 25.

  • offset  optional

    Number of notices to skip, for paging (0-10000). Default 0.

Headers

  • X-Api-Key  required

    API Key associated with your account.

Response

The /v1/layoffnotices endpoint returns a JSON array of notices with the following fields (an empty array when nothing matches), or an error if the request is unsuccessful (see errors).

  • id

    Unique id of the notice, e.g. NY-3b9e5f1c07a2. It does not change when the notice is updated; pass it as id to fetch the notice again.

  • state

    Two-letter code of the state the notice was filed in.

  • agency

    The state agency that received the notice, e.g. New York State Department of Labor.

  • employer

    The employer's name, as filed.

  • employer_dba

    The "doing business as" or site name in the notice, if any.

  • company Premium only

    The company the notice is matched to, with the fields below, or null when the employer is not matched to a company. The free plan receives This field is for premium subscribers only.

  • company.name

    The company's name on the notice date.

  • company.ticker

    The company's current stock ticker, e.g. EXMF, when the company itself is listed. A ticker can change over time; cik does not.

  • company.exchange

    The exchange the ticker trades on, e.g. NYSE or Nasdaq.

  • company.cik

    The company's SEC Central Index Key (CIK), without leading zeros, e.g. 320193.

  • company.domain

    The company's website domain, e.g. example.com.

  • company.parent

    When the employer is a subsidiary: its publicly traded parent company on the notice date, with name, ticker and cik. Otherwise null.

  • company.match_confidence

    high or medium. ticker, exchange, cik and parent are returned for high matches; for medium matches they are null.

  • event_type

    The action in the notice: layoff, closure, relocation, furlough, reduced_hours, other or unknown. See event types.

  • temporary

    true for a temporary layoff, false for a permanent one, null when the notice does not say.

  • warn_notice

    true for a notice filed under the federal WARN Act or a state WARN law. false for a layoff the state reports below the WARN thresholds. null when the state does not say.

  • status

    filed, amended, rescinded or postponed. See notice status.

  • notice_date

    Date of the notice (YYYY-MM-DD).

  • received_date

    Date the agency received the notice (YYYY-MM-DD).

  • effective_date

    Date the layoff or closure takes effect (YYYY-MM-DD).

  • effective_date_end

    For a layoff that takes place over a period, e.g. in phases: its last date (YYYY-MM-DD).

  • date_precision

    Only for dates known to the month or year: each such date with month or year, e.g. {"effective_date": "month"}. The date is then the first day of that month or year. null when every date is exact.

  • workers

    Number of workers affected.

  • locations

    Every location in the notice, with the fields below.

  • locations[].address

    Street address, as filed.

  • locations[].city, locations[].county, locations[].zip

    City, county and 5-digit ZIP code.

  • locations[].state

    Two-letter state code of an affected site.

  • locations[].workers

    Number of workers affected at the location.

  • locations[].type

    site (an affected workplace), headquarters (the employer's headquarters address given in the notice) or null when the notice does not say.

  • naics

    NAICS industry code, 2 to 6 digits, as a string, e.g. 333314.

  • industry

    Industry, e.g. Manufacturing.

  • union

    The union representing the affected workers, or whether they have one, as given in the notice.

  • reason

    The reason given for the layoff, e.g. Economic or Loss of contract.

  • notice_url Premium only

    Link to the official notice document. The free plan receives This field is for premium subscribers only.

  • first_seen

    Date the notice was added to the API (YYYY-MM-DD).

  • updated

    When any field of the notice last changed (ISO 8601, UTC). Use it with updated_since.

Live Demo

Live demo · no API key required
Query parameters
company
state
min_workers
sort

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/layoffnotices?state=NY&min_workers=100
Sample response
[
{
"id": "NY-3b9e5f1c07a2",
"state": "NY",
"agency": "New York State Department of Labor",
"employer": "Example Manufacturing, Inc.",
"employer_dba": null,
"company": {
"name": "Example Manufacturing, Inc.",
"ticker": "EXMF",
"exchange": "NYSE",
"cik": "9999999",
"domain": "example.com",
"parent": null,
"match_confidence": "high"
},
"event_type": "layoff",
"temporary": false,
"warn_notice": true,
"status": "filed",
"notice_date": "2026-10-14",
"received_date": "2026-10-14",
"effective_date": "2027-01-12",
"effective_date_end": "2027-03-31",
"date_precision": null,
"workers": 148,
"locations": [
{
"address": "1200 Example Parkway",
"city": "Rochester",
"county": "Monroe",
"state": "NY",
"zip": "14623",
"workers": 148,
"type": "site"
}
],
"naics": "333314",
"industry": "Manufacturing",
"union": null,
"reason": "Economic",
"notice_url": "https://dol.ny.gov/system/files/documents/2026/10/warn-example-manufacturing-inc-2026-0412.pdf",
"first_seen": "2026-10-15",
"updated": "2026-10-15T10:02:41+00:00"
},
"..."
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/layoffnotices?state=NY&min_workers=100" \ -H "X-Api-Key: YOUR_API_KEY"

Premium only

https://api.api-ninjas.com/v1/layoffstats

Returns the number of layoff notices and workers affected per month or per year, nationally or for one state, counted by notice date. Use it for charts and trend lines without paging through notices. Available on paid plans (Developer and above).

Parameters

  • state  optional

    Two-letter state code, e.g. CA. Default: national totals.

  • start_month  optional

    First month (YYYY-MM). Default: January of last year.

  • end_month  optional

    Last month (YYYY-MM). Default: the current month.

  • period  optional

    month (default) or year.

Headers

  • X-Api-Key  required

    API Key associated with your account.

Response

The /v1/layoffstats endpoint returns a JSON object with the following fields, or an error if the request is unsuccessful (see errors).

  • state

    The state, or null for national totals.

  • period

    month or year.

  • results

    One entry per month or year, oldest first. Periods without notices are not listed.

  • results[].period

    The month (2026-01) or year (2026).

  • results[].notices

    Number of notices dated in the period.

  • results[].workers

    Total workers affected by those notices.

Live Demo

Live demo
Query parameters
state
start_month
end_month
period

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/layoffstats?state=CA&start_month=2026-01&end_month=2026-06
Sample response
{
"state": "CA",
"period": "month",
"results": [
{
"period": "2026-01",
"notices": 121,
"workers": 10723
},
{
"period": "2026-02",
"notices": 97,
"workers": 6273
},
{
"period": "2026-03",
"notices": 81,
"workers": 4372
},
{
"period": "2026-04",
"notices": 140,
"workers": 5915
},
{
"period": "2026-05",
"notices": 92,
"workers": 9223
},
{
"period": "2026-06",
"notices": 121,
"workers": 4655
}
]
}

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/layoffstats?state=CA&start_month=2026-01&end_month=2026-06" \ -H "X-Api-Key: YOUR_API_KEY"

https://api.api-ninjas.com/v1/layoffcoverage

Lists every covered state with the agency that receives its notices, the date of its earliest notice, its latest notice date and its number of notices. Available on every plan.

Parameters

  • state  optional

    Two-letter state code, e.g. CA. Default: every state.

Headers

  • X-Api-Key  required

    API Key associated with your account.

Response

The /v1/layoffcoverage endpoint returns a JSON array with one entry per state, with the following fields, or an error if the request is unsuccessful.

  • state

    Two-letter state code.

  • agency

    The state agency that receives WARN notices.

  • history_from

    Date of the state's earliest notice (YYYY-MM-DD).

  • latest_notice_date

    Date of the state's latest notice (YYYY-MM-DD).

  • notices

    Number of notices from the state.

Live Demo

Live demo · no API key required
Query parameters
state

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/layoffcoverage?state=CA
Sample response
[
{
"state": "CA",
"agency": "California Employment Development Department",
"history_from": "2008-09-04",
"latest_notice_date": "2026-10-21",
"notices": 12556
}
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/layoffcoverage?state=CA" \ -H "X-Api-Key: YOUR_API_KEY"

Errors

An invalid request returns HTTP 400 with a JSON body holding a readable error message, e.g. {"error": "radius requires zip."}. Authentication and quota errors use the standard format described in error codes.

CauseExample error
An unknown parameterUnknown parameter: foo.
A value that is not valid, e.g. state=XXInvalid state. Use two-letter US state codes, e.g. CA or CA,TX.
A number out of range, e.g. limit=500Invalid limit. Must be an integer from 1 to 100.
radius without zipradius requires zip.
A start_date before January 1 of last year on the free planNotices before 2025-01-01 are available on paid plans.
/v1/layoffstats on the free planThis endpoint is available on Developer plans and above.

Frequently Asked Questions

  • Yes, but you must have a premium subscription. Commercial use of the Layoff Notices API is not permitted on the free tier. See our pricing page to choose a plan that fits your needs.
  • Sign up for a free account to instantly get your API key, then pass it in the X-Api-Key header on every request. The documentation above includes ready-to-run examples in cURL, Python, JavaScript, Node.js, and more.
  • Your API requests will simply be denied once you hit your monthly quota — you will never be charged more than the plan you signed up for. To increase your quota, you can upgrade your plan any time on our pricing page.
  • The API responds with a standard HTTP status code and a JSON error message describing the problem. See our error codes reference for the full list of codes and how to resolve each one, or contact support if you need help.
  • Under the federal Worker Adjustment and Retraining Notification (WARN) Act, employers with 100 or more employees generally must give 60 days' written notice of a plant closing or mass layoff, including to the state. Several states, such as California, New York and New Jersey, have their own WARN laws with lower thresholds or longer notice periods. Because notices are filed before the layoffs take effect, they are one of the earliest public signals of job cuts. The Layoff Notices API returns these official notices, filed with state labor agencies, as JSON.
  • Every state that publishes WARN notices, plus Washington, DC, with over 68,000 notices in all, updated daily. /v1/layoffcoverage lists each state with the agency that receives its notices, the date of its earliest notice, its latest notice date and its number of notices.
  • Pass part of the name as company, e.g. /v1/layoffnotices?company=example manufacturing; each word matches the start of a word in the employer or company name. On paid plans, notices are matched to the company behind them, with its stock ticker, exchange, SEC CIK, website domain and parent company, so you can also search by ticker and join notices to your own company data.
  • Filter by state (one or several, e.g. CA,TX), city, county or zip. Add radius (1-100 miles) to a zip to get every notice with an affected location within that distance, e.g. /v1/layoffnotices?zip=14623&radius=25. Combine them with start_date, end_date, min_workers and event_type, and use sort=workers to see the largest layoffs first.
  • Store each notice by its id, which does not change when a notice is updated, and call /v1/layoffnotices?updated_since=2026-10-01T00:00:00Z with the time of your last sync to get only new and changed notices. status tells you when a notice has been amended, rescinded or postponed.
  • The free plan gets notices dated from January 1 of last year, with every field except company and notice_url, and /v1/layoffcoverage. Paid plans (Developer and above) get the full history, back to the 1990s for many states, company matching, links to the official notice documents and /v1/layoffstats for monthly and yearly totals.