WARN Layoff Notice Monitor — 15 States, No Login
Pricing
from $20.00 / 1,000 layoff notices
WARN Layoff Notice Monitor — 15 States, No Login
Watch WARN Act layoff and closure notices in 15 states (CA, NY, FL, WA, PA, VA and more) and get only NEW or updated notices since the last run: company, location, employees affected, notice and effective dates, notice PDF. Daily schedule. No login. MCP-ready. $20 per 1,000 alerts.
Pricing
from $20.00 / 1,000 layoff notices
Rating
0.0
(0)
Developer
Peter Skotte
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
WARN Layoff Notice Monitor
Watches the official state WARN Act feeds (mass layoffs and plant closings) and emits only the notices that are new or changed since the last run. Point it at the states you sell into, schedule it daily or weekly, and get the leads pushed to a webhook.
WARN notices are the earliest public signal that a company is laying off 50+ people. Recruiters, staffing agencies, outplacement firms, workforce boards, lenders and journalists all use them, but every state publishes its own list in its own format. This actor normalizes 15 of them into one schema and remembers what it has already shown you.
State coverage
| State | Source | Feed type | Update cadence | Notes |
|---|---|---|---|---|
| CA | California EDD | XLSX report | Tuesdays and Thursdays | Notice, processed and effective dates, address, industry, closure vs layoff |
| TX | Texas Workforce Commission via data.texas.gov | Socrata JSON API | Batch updates, often weeks to months behind | TWC's own spreadsheet sits behind an AWS WAF challenge, so the open-data mirror is used; expect a lag |
| NY | New York DOL | Tableau Public dashboard exported as CSV | Continuous | Notice date, posted date, site address, county, reason, permanent/temporary |
| FL | Florida DEO (REACT) | HTML table, current year | Continuous | Address, industry, layoff date range |
| PA | Pennsylvania L&I | HTML accordion grouped by month | Monthly grouping | Notice dates are month-level only (noticeDate = first of month, postedDate = end of month or today) |
| WA | Washington ESD | ASP.NET grid (16 per page) | Continuous | Layoff start date, permanent/temporary, PDF link |
| IN | Indiana DWD | HTML table | Continuous | NAICS and industry description, PDF link; fetched through Apify datacenter proxy (in.gov blocks direct cloud traffic) |
| MD | Maryland DLLR | HTML table | Continuous | Address, NAICS, county, effective date |
| VA | Virginia Works | HTML table | Continuous | Address, effective date, collective bargaining unit, PDF link |
| CO | Colorado CDLE | Google Sheet (current-year tab) exported as CSV | Continuous | Workforce area, begin/end dates, reason, occupations |
| UT | Utah DWS | HTML table | Continuous | Notice date, city, headcount only |
| AL | Alabama Department of Workforce | HTML table | Continuous | City, planned start date, closure vs layoff |
| DC | DC DOES | HTML table, current year | Continuous | Effective date may be a range or TBD |
| OR | Oregon HECC Rapid Response | HTML listing (25 per page) | Continuous | City column is the employer's address on file, not necessarily the affected site; PDF link |
| WI | Wisconsin DWD | Google Sheet exported as CSV | Continuous | County, NAICS description, layoff begin date, PDF link |
Not covered (checked September 2026): Illinois (DCEO site does not resolve), Massachusetts (report page removed), Michigan (JavaScript-only search), Ohio (client-rendered dashboard), New Jersey, North Carolina, Tennessee (PDF only), Georgia (list retired), Missouri (Incapsula wall), Arizona (search cannot be sorted by date). Ask if you need one of these.
Output
One record per new or updated notice:
| Field | Description |
|---|---|
state | Two-letter state code |
company | Employer name as published |
location | City (or county / workforce area when the state publishes no city) |
county | County when published |
address | Site address when published |
employeesAffected | Headcount, null when the state lists TBD |
noticeDate | Date of the WARN notice |
postedDate | Date the state posted or processed it (falls back to noticeDate); the lookback window is applied to this |
effectiveDate | First layoff / closure date |
layoffType | closure, layoff or unknown |
industry | NAICS code or industry description when published |
unionInfo | Collective bargaining unit when published (VA) |
noticeUrl | Link to the notice PDF when the state provides one |
sourceUrl, sourceName | Where the record came from |
changeType | new on first sight, updated when the headcount or effective date changed |
previousEmployeesAffected | Prior headcount on updated records |
firstSeenAt | ISO timestamp of the run that first saw the notice |
noticeKey | Stable key (state + company + notice date + site, or the state's own ID) |
monitorId | The monitor this record belongs to |
Some states add layoffDetail, effectiveDateEnd, effectiveDetail, reason, occupations or workforceArea.
Input
| Field | Default | Description |
|---|---|---|
states | ["CA","TX","NY"] | State codes to monitor (see table above) |
companyKeywords | [] | Only notices whose company name contains one of these words |
minEmployees | 0 | Skip notices below this headcount |
lookbackDays | 14 | Only notices posted within this many days; 0 disables the window |
maxNewPerState | 5 | Cap per state per run; the rest carry over to the next run |
maxItems | 10 | Cap per run across all states |
firstRunMode | emitAll | baseline makes the first run record everything and emit nothing |
webhookUrl | "" | POST a JSON summary with up to 50 notices after each run |
monitorId | default | Each ID keeps its own memory of seen notices |
proxyConfiguration | none | Optional; the feeds work without one |
How the monitor works
- Every run fetches the current list from each selected state.
- Notices are filtered by the lookback window, headcount and keywords, then compared with the monitor's memory (a named key-value store,
warn-monitor-<hash of monitorId>, capped at 50,000 keys). - Unseen notices are emitted as
new; notices whose headcount or effective date changed are emitted asupdated; everything else is skipped. - Emitted notices are remembered. Notices cut off by
maxNewPerState/maxItemsare not, so they appear on the next run. - If
webhookUrlis set, one POST is sent per run with{ monitorId, runAt, newCount, updatedCount, perState, errors, notices: [...] }.
Recommended setup
- Weekly digest: schedule weekly,
lookbackDays: 14,maxNewPerState: 50,maxItems: 500. - Daily alerts: schedule daily,
lookbackDays: 7, keep the caps generous, setwebhookUrl. - Fresh start without a backlog: run once with
firstRunMode: "baseline", then schedule normally. Only notices posted after the baseline run will be emitted. - Several watch lists: use a different
monitorIdper filter set (for example one per recruiter territory). - Large layoffs only:
minEmployees: 500.
Pricing
$0.005 per run plus $0.02 per emitted notice. Runs that find nothing new cost only the start fee.