CoolFace
Datasetpublic

APProjects/us-retail-store-closings-layoffs-warn-act-notices-daily

US retail store closings and layoffs — the actual WARN Act filings, rebuilt every day Last rebuilt: 2026-09-24. 4,327 layoff and closure notices filed by department stores, supermarkets and grocers, big-box and specialty chains, apparel and footwear retailers, pharmacies with a retail name, and outlet and dollar-store operators with US state labor departments — 427,787 workers, 1,171 employers, 46 states, 1988–2026. 1,876 of the notices (43.4%) were recorded by the state as a… See the full description on the dataset page: https://huggingface.co/datasets/APProjects/us-retail-store-closings-layoffs-warn-act-notices-daily.

sourceHugging Facecc-by-4.0updated 2d agoView on Hugging Face
0likes333downloads
Dataset Card

US retail store closings and layoffs — the actual WARN Act filings, rebuilt every day

Last rebuilt: 2026-09-24. 4,327 layoff and closure notices filed by department stores, supermarkets and grocers, big-box and specialty chains, apparel and footwear retailers, pharmacies with a retail name, and outlet and dollar-store operators with US state labor departments — 427,787 workers, 1,171 employers, 46 states, 1988–2026. 1,876 of the notices (43.4%) were recorded by the state as a closure rather than a layoff. Free, CC BY 4.0, no login, no delay.

Store-closing lists circulate as news round-ups and screenshots. The filings behind them — which store, which town, how many workers, what date, whether the state recorded it as a closure or a layoff — sit on 48 separate state portals. This file assembles them as one retail series, with the closure/layoff split the states themselves recorded. An automated pipeline re-scrapes 48 state portals every day and rebuilds this file from the legal filings employers must make before a mass layoff: employer, state, site, workers affected, notice date, effective date, and the notice type in the state's own words.

Read this before you quote a number

This is a FLOOR, not a census. No US state WARN portal publishes an industry field — not one. Sector here is assigned from the employer name by an auditable keyword rule table, and 47.5% of all 61,235 notices in the archive carry a name that reveals no sector at all (Rugged Liner, KPR US, Point Designs). A retail employer trading under an opaque name is therefore missing from this file. Every row keeps sector_rule — the exact pattern that fired — so any inclusion can be checked or disputed row by row, and the full unfiltered archive is one click away: all 61,235 notices.

WARN also only covers layoffs above a size threshold (broadly 50+ at a site, lower in some states), so smaller retail layoffs never generate a filing at all.

What counts as retail here: the employer name reads as a store, chain, supermarket, grocer, outlet, mart or one of ~150 named retailers (Macy's, Walmart, Kmart, Kroger, Big Lots, Bed Bath & Beyond…). Restaurants, hotels and casinos are deliberately NOT here — they are in the sector dataset under hospitality_food_service — and neither are e-commerce platforms, which the tech cut holds. The sector_rule column names the pattern that put each row here.

"Closure" is the state's word, not ours. notice_type is copied verbatim from the filing; the closure count above is every row whose type contains clos (Closure, Closure Permanent, Plant Closing…). 1,007 rows have no type because that state's portal does not publish one.

Files

filerowswhat it is
data/retail_layoff_notices.csv4,327every retail WARN notice, one row each
data/retail_layoffs_by_employer.csv1,171per-employer history with closure count, biggest first
data/retail_layoffs_by_year.csv39notices, closures, workers and employers per year
data/retail_layoffs_by_state.csv46notices and workers per state
python
import pandas as pd
df = pd.read_csv("https://huggingface.co/datasets/APProjects/us-retail-store-closings-layoffs-warn-act-notices-daily/resolve/main/data/retail_layoff_notices.csv")
df.groupby(df.notice_date.str[:4]).employees_affected.sum().tail(10)

Retail layoffs by year

yearnoticesof which closuresworkers affectedemployers
20261276310,68858
202521611020,738103
202426315218,67885
20232157131,72978
202267338,13955
202191555,59740
202098727186,244338
201927117121,164111
201830119131,36271
201724013022,01494
201625316024,77883
20152729129,65958
20141164911,99161
201344188,83127
2012108548,00451

The employers with the most retail layoff workers on file

employernoticesclosuresworkersstatesfirstlast
Walmart1426623,084AK, AL, AZ, CA, CO, CT, DC, FL, GA, IL, IN, KS, MA, MD, MI, NC, NJ, NM, NY, OH, OK, OR, PA, SC, TN, TX, UT, VA, WA, WI2015-04-132026-06-23
Kmart24313120,049AL, AZ, CA, FL, IL, IN, KS, KY, MD, MI, MN, NC, NE, NJ, NY, OR, PA, TN, UT, VA, WA1994-09-162019-09-04
Macy's17110117,428AL, AZ, CA, CT, FL, GA, ID, IL, IN, KS, KY, MD, MI, MN, NC, NJ, NY, OH, OK, OR, PA, TN, TX, UT, VA, WA2002-01-222026-02-01
David's Bridal811913,197AK, AL, CA, CO, CT, GA, MA, ME, MN, MO, NC, NE, NJ, NM, NV, NY, OH, OR, PA, TN, TX, WA, WI2020-04-012023-08-11
Great Atlantic and Pacific Tea103310,137CT, NJ, PA2015-07-012015-10-01
Bed Bath & Beyond41207,837CA, CO, FL, GA, IL, MD, ME, NJ, NV, NY, TX, WI2019-08-012023-05-09
Target31197,402AZ, CA, DC, FL, GA, IL, KY, MD, MI, MN, NJ, NY, PA, SD, TN, VA, WA1999-11-082026-02-01
Dominick's1707,274IL2006-05-092013-11-13
Sears Holdings66427,093AK, AL, CA, DE, FL, IA, IL, IN, KS, MD, NC, NJ, NY, PA, TN, VA2001-10-262019-01-28
Sam's Club45186,960AK, CT, FL, ID, IL, IN, MD, MI, MN, NJ, NY, OH, PA, RI, TN, VA, WA2010-01-102018-03-16
Burlington Coat Factory of Texas82825,146CA2020-04-212020-04-29
JC Penney34145,073AL, CA, IL, KS, MD, MI, MT, NV, OK, PA, TX, UT, VA1999-11-092026-02-18
Sears, Roebuck and69394,954CA, CT, FL, IL, IN, KY, MI, NJ, NY, TN1990-06-062019-01-04
Nordstrom41214,720AZ, CA, CO, FL, IL, IN, MA, MD, MI, MO, NC, NJ, NV, NY, UT, VA, WA, WI2011-05-272026-08-07
Toys R Us27174,624CA, IL, KS, MD, MI, NE, NJ, NY, OH2002-04-222018-07-17

States with the most retail layoff workers on file

statenoticesworkers
CA96080,280
IL47861,590
NY49548,105
NJ27435,903
WA8021,432
MI13415,666
PA9214,038
TX14213,333
FL25311,661
OH8610,470

Most recent retail filings in this build

dateemployerstatelocationnotice typeworkers
2026-09-30KrogerMIGeneseeFacility closure68
2026-09-18Safeway, Inc. - Stoneridge Mall RoadCAAlameda CountyLayoff Permanent4
2026-09-18Safeway, Inc. - Dublin Canyon RoadCAAlameda CountyLayoff Permanent46
2026-08-28Raley'sCAContra Costa CountyClosure Permanent51
2026-08-10TV Hardware DistributionILChicago, 8600 W Bryn Mawr Ave.State116
2026-08-07NordstromILLombard, 100 Yorktown CenterState101
2026-08-06StaplesCALos Angeles CountyClosure Permanent109
2026-08-03TV Hardware DistributionORSpringfieldPermanent closure62
2026-08-01Grocery Delivery E-ServicesNJSwedesboro—374
2026-07-31A Metropolis Company (Rental Car)TXDallas, Tarrant—130
2026-07-13VonsCALos Angeles CountyClosure Permanent55
2026-06-23Frick Paper Company (Paper Mart)CAOrange CountyClosure Permanent78

Names are resolved for spelling variants, not corporate parents: a subsidiary filing under its own name stays under its own name.

Where this comes from

<!-- c406: NO offer block here on purpose. hfcardssync.py owns the canonical offer + contact block and appends it to every warn-feed card after upload. -->

If this saved you a scrape

  • —Like this dataset (the heart, top right) — likes are how the next person searching for retail layoffs finds a file that was rebuilt today instead of one uploaded once years ago.
  • —[Watch the source repo's releases](https://github.com/APVentureEngine/warn-act-notices/subscription) — one notification whenever the snapshot is republished (not every day; the data files refresh daily).
  • —Corrections and questions: open an issue.

Published by APProjects, an automated publisher of US public records. Not affiliated with any state agency.

<!-- 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 →

Look something up right now — free, no signup, nothing to install. Check any employer or state against the last 180 days → 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 →

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 → =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. 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 · hospitals & healthcare · retail store closings · restaurants & hotels · factory & plant closings · banks, insurance & finance · warehouses, trucking & logistics · all 20 sectors.

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.

Not deciding today? Join the update list → — one email when a new dataset or tier is published; nothing promotional. A state added or a column renamed ships in the daily release 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 — 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. Payments are handled by Gumroad as merchant of record, so an invoice can carry your company name.

Source, scrapers and methodology · the 48-state site <!-- warn-feed:offer:end -->

<!-- warn-feed:px:start --> <img src="https://cdn.jsdelivr.net/gh/APVentureEngine/warn-act-notices@main/assets/px/hf/us-retail-store-closings-layoffs-warn-act-notices-daily.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 -->