Layoffs WARN Notice Tracker - Employer & Headcount Scraper
Pricing
from $10.20 / 1,000 results
Layoffs WARN Notice Tracker - Employer & Headcount Scraper
Track US WARN Act layoff and plant closing notices by state. Get the employer, city and county, number of employees affected, notice date and effective layoff date for each filed notice. A distress and sales-trigger signal for lead generation, staffing and research. Export to JSON, CSV or Excel.
Pricing
from $10.20 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
US WARN Layoffs Tracker - Employer, Headcount & Closure Scraper
Here is one real result, with every field the actor returns:
{"companyName": "David's Bridal, LLC","city": "Pinole","county": "Contra Costa County","state": "CA","region": null,"employeesAffected": 29,"noticeDate": "2023-04-25","receivedDate": "2023-07-03","effectiveDate": "2023-09-02","layoffType": "Layoff","permanence": "Permanent","industry": null,"warnNumber": null,"latitude": null,"longitude": null,"address": "1212 Fitzgerald Dr Pinole CA 94564","sourceUrl": null,"source": "US WARN Act layoff notices","observedAt": "2026-08-10T14:29:07.061Z","error": null}
The most complete US WARN layoffs scraper available. It returns every field the official state WARN filings expose for each notice, plus normalized fields (parsed city, standardized dates, layoff vs closure, permanent vs temporary), and gives you six filters to target exactly the notices you need across six states.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor reads the official WARN Act layoff and plant-closing notices published by each supported state labor agency, applies the filters you pass as input, paginates through the matching notices, and writes one normalized record per notice to the run's dataset. Dates are normalized to YYYY-MM-DD, missing source values are returned as null, and each record is classified as a layoff or closure and, where the state reports it, permanent or temporary. WARN notices are a distress and sales-trigger signal useful for lead generation, staffing, restructuring research and journalism.
Coverage is six states, each selected with the state input: California (CA), Texas (TX), Washington (WA), Georgia (GA), Maryland (MD) and Oregon (OR). Each state publishes a different set of fields, so some columns (for example warnNumber, latitude, longitude, industry, sourceUrl) are populated only where the source provides them.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the 10 most recent California WARN notices.
{"state": "CA","maxNotices": 10}
Every field except state is optional. Leave the filters empty to pull the most recent notices for the chosen state.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
state | enum | no | CA | Which state's WARN notices to collect. One of CA, TX, WA, GA, MD, OR. Each state publishes its own official filings. |
maxNotices | integer | no | 10 | Maximum number of notices to collect. Free Apify plans are capped at 10 per run. |
keyword | string | no | (empty) | Keep only notices whose employer, city, county or workforce area contains this text, for example an employer name or a city. |
dateFrom | string | no | (empty) | Keep only notices filed on or after this date (YYYY-MM-DD). Applies to noticeDate. |
dateTo | string | no | (empty) | Keep only notices filed on or before this date (YYYY-MM-DD). Applies to noticeDate. |
minEmployeesAffected | integer | no | (any) | Keep only notices where the number of workers affected is at least this value. Use it to focus on the largest layoffs. |
layoffType | enum | no | any | Keep only layoff, only closure, or any. |
permanence | enum | no | any | Keep only permanent, only temporary, or any, where the state reports it. |
Filters combine with logical AND and are applied after the notices are collected from the source.
Output reference
One dataset item per WARN notice. Types: string, integer, number, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
companyName | string | Employer named on the WARN notice. |
city | string | City of the affected site, parsed from the source where present. |
county | string | County of the affected site, where the state reports it. |
state | string | Two-letter state code of the filing. |
region | string | Workforce or local area reported by the state, or null. |
employeesAffected | integer | Number of workers affected by the notice. |
noticeDate | string | Date the notice was filed (YYYY-MM-DD). |
receivedDate | string | Date the state received or processed the notice (YYYY-MM-DD), or null. |
effectiveDate | string | Date the layoff or closure takes effect (YYYY-MM-DD), or null. |
layoffType | string | Layoff or Closure, classified from the source, or null if not stated. |
permanence | string | Permanent or Temporary where the state reports it, otherwise null. |
industry | string | Industry or NAICS code, where the state provides it. |
warnNumber | string | State WARN case number, where the state assigns one. |
latitude | number | Latitude of the affected site, where the state provides coordinates. |
longitude | number | Longitude of the affected site, where the state provides coordinates. |
address | string | Site street address as reported by the state. |
sourceUrl | string | Link to the notice detail page, where the state provides one. |
source | string | Constant label identifying the dataset (US WARN Act layoff notices). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Not every state populates every field. warnNumber, latitude, longitude, sourceUrl, industry and region appear only for the states that publish them.
Example output record
Real record from a live run (input {"state": "GA", "maxNotices": 10}):
{"companyName": "SMBC Manubank","city": null,"county": null,"state": "GA","region": null,"employeesAffected": 5,"noticeDate": "2026-08-12","receivedDate": "2026-08-12","effectiveDate": null,"layoffType": null,"permanence": null,"industry": null,"warnNumber": "GA202600008","latitude": 40.9342099,"longitude": -72.6534758,"address": null,"sourceUrl": "https://www.tcsg.edu/warn-public-view/entry/84050/","source": "US WARN Act layoff notices","observedAt": "2026-08-15T05:53:42.911Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~layoffs-warn-tracker-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"state":"CA","minEmployeesAffected":100,"maxNotices":50}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~layoffs-warn-tracker-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"state":"TX","dateFrom":"2025-01-01","maxNotices":200}'
Apify CLI:
apify call scrapers_lat/layoffs-warn-tracker-scraper \--input '{"state":"WA","layoffType":"closure"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxNotices. - One state per run. Each run collects one state; loop over states to build a national view.
FAQ and troubleshooting
A run returned 0 records. Why?
The filter combination matched nothing for that state. Loosen filters (for example widen the date range or lower minEmployeesAffected), or try another state. Zero-result runs are not charged.
Why are some fields null?
Each state publishes a different set of columns. Fields such as warnNumber, latitude, longitude, industry and sourceUrl are only present for states that report them. Missing source values are returned as null, never invented.
Can I get every state in one run?
No. Pick one state per run with the state input, then loop over CA, TX, WA, GA, MD, OR to assemble a national dataset.
How do I find only the largest layoffs?
Set minEmployeesAffected to a threshold such as 100, optionally combined with layoffType set to closure.
What is the difference between layoff and closure?
A layoff reduces headcount at a site that keeps operating; a closure shuts a site down. The layoffType field classifies each notice where the source states it.
Is this an official government tool? No. This actor is independent and has no affiliation with any state labor agency. It reads only WARN notices that each state publishes publicly. Use it in accordance with each source's terms.
Related scrapers
- OSHA Establishment & Inspection Scraper: US workplace safety inspections and violations.
- SEC EDGAR Company Filings Scraper: SEC filings by ticker or CIK.
- USAspending Federal Award Scraper: US federal prime awards.
- Lever Jobs Scraper: job postings from Lever-hosted career sites.
- LinkedIn Jobs Scraper: public LinkedIn job postings by keyword and location.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with any state labor agency. Accesses only publicly available WARN notice data. Use in accordance with each source's terms of service.
