WARN Layoffs Scraper - Multi-State Layoff & Closure Notices avatar

WARN Layoffs Scraper - Multi-State Layoff & Closure Notices

Pricing

from $1.00 / 1,000 record scrapeds

Go to Apify Store
WARN Layoffs Scraper - Multi-State Layoff & Closure Notices

WARN Layoffs Scraper - Multi-State Layoff & Closure Notices

Aggregate WARN Act layoff and closure notices across multiple US states. Unified schema covering employer, location, effective date, affected workers, and layoff type. Built for recruiters, financial analysts, journalists, and labor researchers.

Pricing

from $1.00 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

1

Bookmarked

22

Total users

6

Monthly active users

15 days ago

Last modified

Features

Limited permissions

Share

WARN Layoffs Aggregator — Multi-State WARN Act Notice Scraper & Layoff Tracker

Aggregate WARN Act layoff and closure notices across US state labor agencies into a single normalized dataset — a queryable WARN notice database for tracking layoffs by state. Currently covers eight states — California, Florida, Illinois, Maryland, New Jersey, New York, Texas, and Washington — in one schema with employer, location, dates, affected worker counts, and layoff type, plus a canonical employer key so one company counts as one employer across every state.


WARN Layoffs Aggregator Features

  • Pulls WARN notices from CA, FL, IL, MD, NJ, NY, TX, and WA in one run
  • Every state arrives in one consistent schema, whatever the agency publishes
  • employer_name_normalized gives each employer one canonical key across states ("Starbucks Corporation", "STARBUCKS CORP." and "Starbucks, Inc." all become starbucks), so per-employer counts need no cleanup
  • Filters by notice date range, minimum affected workers, and plant-closures-only
  • Classifies each notice as layoff, closure, furlough, or other while keeping the raw source string for reference
  • Stable notice_id per (state, employer, notice_date, effective_date) so dedupe across runs is trivial
  • Pay-per-event pricing at roughly $0.001 per notice

Who Uses This WARN Layoff Data by State?

  • Recruiters and outplacement firms — surface mass layoffs early to source candidates and pitch services
  • Financial analysts and short sellers — track distress signals across portfolio companies and industries
  • Labor researchers and policy teams — build longitudinal datasets on plant closures by state, county, or sector
  • Journalists — monitor new filings for reporting leads on closures, furloughs, and large reductions in force
  • Economic development offices — track employer activity in their jurisdiction without maintaining a feed per state

How WARN Layoffs Aggregator Works

  1. You pick states. Pass ["CA", "FL", "IL", "MD", "NJ", "NY", "TX", "WA"] for everything supported, or a subset. Leave the field empty and it pulls all of them.
  2. The aggregator pulls the notices each state agency has published.
  3. Each notice gets normalized into the shared schema, run through your filters (date range, minimum workers, closure-only), and saved. Output is identical regardless of which state it came from.

Per-state coverage notes

StateNotice dateAlso publishedNot published by the agency
CADayCounty
FLDayWork-site addressCounty, notice type
ILDayWork-site address, notice typeCounty
MDDayCounty, notice type
NJMonth only — dated the 1st of the posting monthCityStreet address, county, notice type
NYDayCounty or regionWorker count on some notices
TXDayCounty, workforce area (region)Street address, notice type
WADayNotice type, permanenceStreet address, county

Where an agency publishes no notice type, layoff_type is other. Texas data arrives with the agency's own publication lag.


Input

Per-employer distress research, five states

{
"states": ["TX", "NJ", "IL", "FL", "WA"],
"noticeDateFrom": "2025-01-01",
"maxItems": 2000
}

Group the result on employer_name_normalized to count recent notices per employer across states.

Default — California, New York and Maryland, recent notices

{
"states": ["CA", "NY", "MD"],
"noticeDateFrom": "2024-01-01",
"maxItems": 100
}

Filter to large layoffs only

{
"states": ["CA"],
"minAffectedWorkers": 250,
"maxItems": 50
}

Plant closures only, single state

{
"states": ["NY"],
"onlyClosures": true,
"noticeDateFrom": "2023-01-01",
"maxItems": 200
}

Input Parameters

FieldTypeDefaultDescription
statesstring[]["CA","NY","MD"]Two-letter state codes. Leave empty to pull all supported states. Supported: CA, FL, IL, MD, NJ, NY, TX, WA.
noticeDateFromstring"2024-01-01"YYYY-MM-DD lower bound on notice date. Empty for no lower bound.
noticeDateTostring""YYYY-MM-DD upper bound on notice date. Empty for no upper bound.
minAffectedWorkersinteger0Drop notices below this worker count. 0 disables the filter.
onlyClosuresbooleanfalseRestrict output to plant closures (excludes mass layoffs and reductions in force).
maxItemsinteger100Maximum notices to return across all states combined.

WARN Layoffs Aggregator Output Fields

{
"notice_id": "9c8f238123cbc6fe",
"source_state": "CA",
"source_url": "https://edd.ca.gov/siteassets/files/jobs_and_training/warn/warn_report1.xlsx",
"employer_name": "Republic National Distributing Company",
"employer_name_normalized": "republic national distributing",
"employer_address": "30825 Wiegman Road",
"city": "Hayward",
"county": "Alameda County",
"state": "CA",
"zip": "94544",
"notice_date": "2025-07-01",
"effective_date": "2025-09-02",
"affected_workers": 104,
"layoff_type": "closure",
"layoff_type_raw": "Closure Permanent",
"closure_permanent": true,
"region": "",
"scraped_at": "2026-04-25T23:08:41.544Z"
}
FieldTypeDescription
notice_idstringStable hash of (state, employer, notice_date, effective_date). Use it as a primary key for dedupe across runs.
source_statestringTwo-letter state code identifying which agency the notice came from.
source_urlstringURL of the listing page or source document the notice was parsed from.
employer_namestringFiling employer's legal or DBA name as printed on the notice.
employer_name_normalizedstringCanonical employer key, the same for every state: lowercase, punctuation and legal suffixes (Inc, LLC, Corp) removed, "d/b/a" tails and site suffixes ("Amazon - SJC13") dropped. Group or join on this to count notices per employer.
employer_addressstringStreet address of the layoff or closure site, when reported.
citystringCity of the layoff or closure site.
countystringCounty or region, when the source provides it.
statestringTwo-letter state code of the layoff site.
zipstringZIP/postal code, when reported.
notice_datestringDate the WARN notice was issued or posted (YYYY-MM-DD).
effective_datestringDate the layoff or closure takes effect (YYYY-MM-DD).
affected_workersnumberNumber of workers affected.
layoff_typestringNormalized type: layoff, closure, furlough, or other.
layoff_type_rawstringRaw type/classification string as printed by the source — useful when the normalized value loses nuance.
closure_permanentbooleanTrue when the notice indicates a permanent closure or non-recall layoff.
regionstringSub-state region (e.g. NY Hudson Valley, Long Island) when the source supplies one.
scraped_atstringISO-8601 UTC timestamp of when this record was scraped.

FAQ

How do I scrape WARN Act notices across multiple states?

WARN Layoffs Aggregator handles this. Pass the state codes you care about (or leave them empty for all supported states) and it returns one normalized dataset. No state-specific parsing on your end.

Is there a WARN notice API or database I can query for layoffs by state?

Yes. This actor acts as a WARN notice database: run it on Apify, filter by states, date range, and worker count, and pull the results as JSON, CSV, or Excel through the Apify dataset API. That gives you a programmatic WARN Act layoff feed without scraping each state agency yourself.

How much does WARN Layoffs Aggregator cost to run?

WARN Layoffs Aggregator uses pay-per-event pricing: $0.10 per actor start plus $0.001 per record. A run that pulls 500 notices across several states costs about $0.60.

Which states are supported?

California, Florida, Illinois, Maryland, New Jersey, New York, Texas, and Washington. File an issue if you need another jurisdiction and we'll prioritize it.

Can I filter by layoff type or company size?

Yes. Set minAffectedWorkers to drop small layoffs and onlyClosures to filter to permanent plant closures only. Combine both for a clean signal on large permanent shutdowns.

How fresh is the data?

WARN Layoffs Aggregator pulls live from each agency's portal on every run. Each state updates on its own cadence — California weekly, the others on rolling schedules — and Texas lags the agency's own listing. Run nightly if you want continuous coverage.


Need More Features?

Need a state we don't yet support, additional fields, or custom filters? File an issue or get in touch.

Why Use WARN Layoffs Aggregator?

  • One schema, eight states — every agency's notices land in one normalized output with a shared employer key, so you don't reconcile state-by-state formats or company spellings.
  • Affordable — Roughly $0.001 per notice, which is cheaper than the time you'd spend reconciling source-specific date formats and column names.
  • Stable record IDs — Every notice gets a deterministic notice_id, so re-running the actor lets you upsert into a database without dedup logic.