warn-act-notices / README.md
APProjects's picture
Sync canonical offer/contact block (hf_cards_sync)
40db267 verified
|
Raw History Blame Contribute Delete
14 kB
---
title: US WARN Act Layoff Notices
emoji: πŸ“‰
colorFrom: gray
colorTo: red
sdk: static
pinned: false
license: cc-by-4.0
short_description: 61,431 US WARN Act layoff notices, 48 states, free CSV
tags:
- layoffs
- warn-act
- warn-notices
- layoff-tracker
- labor-market
- public-records
- united-states
- dataset
- daily-updated
- csv
- rss
custom_headers:
cross-origin-opener-policy: same-origin
cross-origin-resource-policy: cross-origin
---
# US WARN Act layoff notices β€” 61,431 notices, 48 states, rebuilt every day
**[Open the live site β†’](https://approjects-warn-act-notices.static.hf.space/)** Β· rebuilt 2026-09-25
| | |
|---|---|
| **61,431** | layoff notices on file, back to 1988 |
| **48** | state portals re-scraped every single day |
| **6,831,447** | workers named across those notices (all of it free, dated 1988-01-01 onward, no delay) |
| **233** | notices filed in the last 30 days (23,474 workers) |
| **5,545** | near-duplicate employer spellings merged onto 1,243 employers, redone every morning (Aramark alone files under 159 spellings) |
| **25** | daily snapshots in the observed change log (2482 field changes / disappearances recorded since 2026-08-30) |
Every US state publishes WARN Act layoff notices in its own format β€” different
columns, different date conventions, some as quarterly PDFs, several with no
notice date at all. This project re-scrapes 48 of them daily, normalizes
them into one schema, deduplicates with stable row ids, and canonicalizes
employer names so `Amazon.com Services LLC` and `Amazon` roll up together.
A one-off copy of this data starts rotting the week it is posted: states amend
headcounts, re-issue notices and silently drop rows. Compare the rebuild date
above with the "last updated" date on any other US WARN dataset before you
choose one.
## Free, no account, no email address
- **Site** β€” [https://approjects-warn-act-notices.static.hf.space/](https://approjects-warn-act-notices.static.hf.space/): state pages, employer pages, weekly / monthly /
yearly roll-ups, search.
- **CSV / JSON** β€” [`/data/warn_notices.csv`](https://approjects-warn-act-notices.static.hf.space/data/warn_notices.csv),
[`/data/coverage.json`](https://approjects-warn-act-notices.static.hf.space/data/coverage.json) (per-state row counts, last-scraped
stamp, newest notice on file).
- **RSS** β€” [all states](https://approjects-warn-act-notices.static.hf.space/feed.xml), or one feed per state.
- **Dataset mirror** β€” [APProjects/us-warn-act-layoffs-notices-daily](https://huggingface.co/datasets/APProjects/us-warn-act-layoffs-notices-daily)
(`load_dataset` in one line).
- **Daily GitHub release** β€” [releases/latest](https://github.com/APVentureEngine/warn-act-notices/releases/latest).
```bash
curl -s https://approjects-warn-act-notices.static.hf.space/data/coverage.json | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['total_rows'], 'notices;', len(d['states']), 'states')"
```
## What a re-scrape cannot give you: the observed change log
State portals overwrite themselves. When an agency amends a headcount, moves an
effective date or quietly removes a notice, the previous value leaves the public
internet. Because this dataset is committed on every daily rebuild, its history
is a point-in-time record of what each portal was publishing on each day, and
that record is published as
[`/data/revisions.csv`](https://approjects-warn-act-notices.static.hf.space/data/revisions.csv)
([README](https://approjects-warn-act-notices.static.hf.space/data/revisions.README.txt)): one row per field change or
disappearance between consecutive daily builds, 25 snapshots since
2026-08-30, 2482 rows so far, 177 of them a tracked
field changing from one non-empty value to another.
Read it honestly: a row means *our build changed*, which can be the agency
amending the notice **or** this project's parser improving. The `cause_class`
column labels only what is mechanically decidable (`field_populated`,
`field_cleared`, `format_only`, `value_changed`); `row_absent` means the row
stopped appearing in our build, not that the employer withdrew it. It grows by
one snapshot a day and cannot be backfilled by anyone starting later.
## Get told when YOUR employers file β€” free, no card
Name up to three employers (or one whole state); every daily rebuild is matched
against them and every match lands on your own alert page with an RSS feed
(plus an optional Slack / Discord / Teams webhook).
**[Start a free 30-day watch β†’](https://approjects-warn-act-notices.static.hf.space/go/hf-free.html)** Β· $0, no card, nothing renews.
Or skip the signup entirely: [match your employers in your own browser](https://approjects-warn-act-notices.static.hf.space/watch-now.html)
and download an **.opml** holding one RSS feed per employer you typed β€” no account, no email
address, no checkout. Every employer that filed in the last 180 days has a static feed at
`/feeds/employer/<name>.xml`, rebuilt each morning with the data. The paid tier is the one that
comes to *you* (Slack / Discord / Teams / private alert page, 500 terms plus whole states); the
feeds wait for your reader to ask.
## Paid tiers
| | |
|---|---|
| **[WARN Watch β€” $49/year](https://approjects-warn-act-notices.static.hf.space/go/hf-buy.html)** | up to 500 employer terms + any number of whole states, matched on every daily refresh for a year. Private alert page + RSS + webhook, no login. [What it looks like](https://approjects-warn-act-notices.static.hf.space/watch.html). |
| **[Full historical archive β€” free](https://github.com/APVentureEngine/warn-act-notices/releases/latest)** | all 61,431 notices, 1988–present, 48 states, CSV + JSON + coverage metadata, rebuilt every morning. No paywalled years since 2026-09-07, no account, CC BY 4.0. |
The free tier is not crippled to sell these: same normalization, same columns,
same CC BY 4.0 licence.
## Largest employers by workers noticed in 2026 so far
| employer | workers noticed in 2026 |
|---|---|
| Ideal US Talent Systems Worker OpCo | 11,973 |
| Spirit Airlines | 6,906 |
| Meta Platforms | 5,686 |
| Amazon | 5,386 |
| Republic National Distributing | 3,533 |
## Honest scope
- 48 states scraped; not covered yet: AR, NH, WY. `coverage.json` is the
authoritative list and is regenerated on every run.
- MI, PA and SC publish no notice date at all; those rows are labelled rather
than guessed.
- Compiled from state workforce-agency portals. Independent project, not
affiliated with any government agency; not legal or financial advice.
- Found a bad row? [Open an issue](https://github.com/APVentureEngine/warn-act-notices/issues)
β€” corrections ship the same day.
Source code: [github.com/APVentureEngine/warn-act-notices](https://github.com/APVentureEngine/warn-act-notices).
Underlying scrapers include Apache-2.0 code from `biglocalnews/warn-scraper`.
<!-- warn-feed:offer:start -->
## A layoff record you can audit, not just download
This dataset is one cut of a single daily rebuild: **61,431 US WARN Act
layoff notices from 48 state agencies, 1988 to today**, one schema, no
login, no delay, CC BY 4.0. Snapshot as of **2026-09-25**; the files above are
rebuilt every day, so the live count is the truth.
Several projects publish a current WARN scrape and two of them carry more rows
than we do. None of them publish what the records **used to say**:
- **2,482 observed changes to already-published notices, logged daily since 2026-08-31.**
`data/revisions.csv` records every field that differed between two consecutive
daily builds β€” employee counts, effective dates, notice types, company names β€”
with the old value, the new value and the date we saw it. We publish the
observation and not the cause: a change is equally explained by the agency
amending the notice or by our own parser improving, and we do not guess which
(see `data/revisions.README.txt`). A scrape that starts tomorrow cannot backfill
any of it; it only exists if someone was watching.
- **6,799 notices whose state agency page no longer lists them.** Agencies
take notices down. We keep them, flagged as archive-only, so a count you ran
last year still reconciles.
- **Point-in-time employer identity.** The ticker crosswalk resolves a filer to
the company as it existed at the time of the notice β€” Kmart, Sears Holdings,
Symantec β€” not to whatever is on today's ticker file.
If you have to defend a number to an editor, a referee or a compliance reviewer,
that provenance layer is the part you cannot rebuild yourself.
[How to cite this dataset β†’](https://github.com/APVentureEngine/warn-act-notices/blob/main/CITATION.cff)
**Look something up right now β€” free, no signup, nothing to install.**
[Check any employer or state against the last 180 days
β†’](https://approjects-warn-act-notices.static.hf.space/watch-now.html) It runs in your browser against these same files.
**Building something with it?** The same files are a free HTTP API β€” JSON and
CSV, no key, no signup, `access-control-allow-origin: *` so `fetch()` works from
a browser: [endpoints, schema and curl examples β†’](https://approjects-warn-act-notices.static.hf.space/api.html)
**Prefer a spreadsheet?** One formula puts the last 90 days, the last 12 months
or any single state into Google Sheets as a live range that refreshes itself β€”
no signup, no add-on: [the formulas, one per state β†’](https://approjects-warn-act-notices.static.hf.space/sheets.html)
`=IMPORTDATA("https://cdn.jsdelivr.net/gh/APVentureEngine/warn-act-notices@main/data/sheets/us-last-90-days.csv")`
**Backtesting, or citing a figure you published last month?** Today's file has
look-ahead and survivorship bias baked in: notices get amended after the fact and
some rows are later deleted. The same table as it stood on any past day since
**2026-08-30** β€” one immutable vintage per day, 25 so far, plus a first-appearance
index giving the first and last day every notice id was in the file β€” is the
[point-in-time snapshot archive](https://huggingface.co/datasets/APProjects/us-warn-act-layoffs-point-in-time-snapshots). Nobody can backfill it.
**Need one industry only?** The same filings, cut by an auditable employer-name
rule (each row keeps the rule that fired): [tech companies](https://huggingface.co/datasets/APProjects/us-tech-company-layoffs-warn-act-notices-daily)
Β· [hospitals & healthcare](https://huggingface.co/datasets/APProjects/us-hospital-healthcare-layoffs-warn-act-notices-daily)
Β· [retail store closings](https://huggingface.co/datasets/APProjects/us-retail-store-closings-layoffs-warn-act-notices-daily)
Β· [restaurants & hotels](https://huggingface.co/datasets/APProjects/us-restaurant-hotel-closings-layoffs-warn-act-notices-daily)
Β· [factory & plant closings](https://huggingface.co/datasets/APProjects/us-factory-plant-closings-manufacturing-layoffs-warn-act-notices-daily)
Β· [banks, insurance & finance](https://huggingface.co/datasets/APProjects/us-bank-insurance-finance-layoffs-warn-act-notices-daily)
Β· [warehouses, trucking & logistics](https://huggingface.co/datasets/APProjects/us-warehouse-trucking-logistics-layoffs-warn-act-notices-daily)
Β· [all 20 sectors](https://huggingface.co/datasets/APProjects/us-layoffs-by-industry-sector-warn-act).
**Or have it watch a list for you.** Coming back to look is the part a CSV cannot
do. **WARN Watch β€” $49 for a year**, one payment, nothing auto-renews, 14-day
refund, no login: up to 500 employer names plus whole states, matched on every
daily refresh, delivered to a private alert page + calendar (.ics) + RSS +
an optional Slack / Discord / Teams webhook. Every alert carries that employer's
whole filing history from the archive, which a keyword rule on an RSS feed cannot
see. There is no built-in email β€” we do not claim one.
- [See a real alert page before paying](https://approjects-warn-act-notices.static.hf.space/watch-sample.html) Β· [what you get](https://approjects-warn-act-notices.static.hf.space/watch.html)
- [Try it free for 30 days, no card](https://approjects-warn-act-notices.static.hf.space/go/hf-free.html) Β· [Buy β€” $49/year](https://approjects-warn-act-notices.static.hf.space/go/hf-buy.html)
**Not deciding today?** [Join the update list β†’](https://approj.gumroad.com/subscribe) β€” one email when a
new dataset or tier is published; nothing promotional. A state added or a column
renamed ships in the [daily release](https://github.com/APVentureEngine/warn-act-notices/releases) instead, no address
needed. The list is
shared across APProjects datasets, holds an email address only, is run by
Gumroad, and any message unsubscribes you. Rather give no address at all?
[Watch the repo's releases](https://github.com/APVentureEngine/warn-act-notices/subscription) β€” GitHub notifies you on
every daily republish, and a new state or changed field is in those notes the
day it lands.
**Reaching a human.** WARN Feed is published by APProjects, an automated data
publisher β€” that is stated plainly rather than dressed up. Corrections, coverage
gaps, schema questions and refund requests all go here and are read:
[open an issue](https://github.com/APVentureEngine/warn-act-notices/issues/new/choose). Payments are handled by Gumroad as merchant of
record, so an invoice can carry your company name.
[Source, scrapers and methodology](https://github.com/APVentureEngine/warn-act-notices) Β· [the 48-state site](https://approjects-warn-act-notices.static.hf.space/)
<!-- warn-feed:offer:end -->
<!-- warn-feed:px:start -->
<img src="https://cdn.jsdelivr.net/gh/APVentureEngine/warn-act-notices@main/assets/px/hf/space-warn-act-notices.png" width="1" height="1" alt="">
<sub>Card views are counted anonymously: one 1Γ—1 image on a public CDN, no cookies, no script, no personal data. The count is public: <a href="https://data.jsdelivr.com/v1/stats/packages/gh/APVentureEngine/warn-act-notices@main/files?period=month">jsDelivr stats</a>.</sub>
<!-- warn-feed:px:end -->