Remulous Labs › APIs › LayoffLens
Labor · WARN ActLayoffLens API
Normalized, source-linked U.S. WARN Act layoff and plant-closure notices from 29 states + DC. Track which employers are cutting jobs, where, and how many — with every record traceable back to its official state filing.
What you can build
One API instead of scraping 28 different state WARN portals, each with its own format and schedule — see the full comparison, or browse US layoffs by state.
Layoff monitoring & alerts
Watch a state or employer for new notices and trigger alerts when large layoffs are filed — newest-first, filterable by size.
Company & market research
Pull an employer's full WARN history across states, or aggregate notices by state and period to track labor-market stress.
M&A & investment due diligence
Screen acquisition targets and portfolio companies for workforce-stress signals before they reach press coverage — WARN notices typically lead headlines by weeks.
Workforce analytics platforms
Embed WARN data as a leading-indicator feed inside HR dashboards, headcount trackers, and labor-market intelligence tools — without building your own state scrapers.
Endpoints
Base URL https://layofflens-api.remulouslabs.com — proxied for you by RapidAPI. /v1/openapi.json and /healthz are open (no key).
Filterable, paginated list of WARN notices (newest first).
A single notice by its stable id (same shape as a list item).
All notices matching an employer name (normalized substring match) — one company across states and filings.
Per-state coverage and freshness — notice count, parse rate, latest notice date, last ingest run.
Totals, counts by state, the covered-state list, and source attribution.
Parameters for /v1/notices
| Parameter | Type | Description |
|---|---|---|
state | string | 2-letter state code (e.g. TX). |
employer | string | Substring match on the normalized employer name. |
closure_type | string | layoff, closure, or unknown. |
min_affected | integer | Minimum number of employees affected. |
notice_from / notice_to | date | Filter by notice date (YYYY-MM-DD). |
effective_from / effective_to | date | Filter by effective/layoff date. |
limit | integer | Page size (default 50; capped by plan). |
offset | integer | Pagination offset. |
Try it
Your X-RapidAPI-Key comes from your RapidAPI subscription. Pick a language:
Request
curl -X GET "https://layofflens-warn-data-api.p.rapidapi.com/v1/notices?state=TX&min_affected=100&limit=2" \
-H "X-RapidAPI-Key: YOUR_KEY_HERE" \
-H "X-RapidAPI-Host: layofflens-warn-data-api.p.rapidapi.com"const url =
"https://layofflens-warn-data-api.p.rapidapi.com/v1/notices?state=TX&min_affected=100&limit=2";
const res = await fetch(url, {
headers: {
"X-RapidAPI-Key": "YOUR_KEY_HERE",
"X-RapidAPI-Host": "layofflens-warn-data-api.p.rapidapi.com"
}
});
const data = await res.json();
console.log(data.notices);import requests
url = "https://layofflens-warn-data-api.p.rapidapi.com/v1/notices"
headers = {
"X-RapidAPI-Key": "YOUR_KEY_HERE",
"X-RapidAPI-Host": "layofflens-warn-data-api.p.rapidapi.com",
}
params = {"state": "TX", "min_affected": 100, "limit": 2}
data = requests.get(url, headers=headers, params=params).json()
print(data["notices"])Response
{
"count": 12,
"limit": 2,
"offset": 0,
"filters": { "state": "TX", "min_affected": 100 },
"notices": [
{
"id": "9f3a1c4b2e7d8a01",
"employer": "Acme Logistics, Inc.",
"employer_normalized": "acme logistics",
"state": "TX",
"city": "Houston",
"county": "Harris",
"num_affected": 230,
"notice_date": "2026-06-08",
"effective_date": "2026-08-08",
"closure_type": "layoff",
"temporary": false,
"provenance": {
"source": "TX-TWC",
"source_url": "https://www.twc.texas.gov/.../warn-act-listings-2026-twc.xlsx",
"parse_status": "parsed",
"ingested_at": "2026-06-10T07:25:00+00:00",
"filing_lag_days": 61,
"date_anomaly": false
}
}
],
"disclaimer": "Derived from official U.S. state WARN Act filings..."
}
Response fields
| Field | Notes |
|---|---|
id | Stable, deterministic identifier (dedupes re-ingested filings). |
employer / employer_normalized | Raw and normalized company name. |
parent_company / ticker | Reserved for entity resolution (usually null today). |
state / city / county / address | Location, where the source provides it. |
num_affected | Employees affected. |
notice_date | Date the notice was given/received. |
effective_date | Layoff/closure effective date (start of range, if a range is given). |
closure_type | layoff, closure, or unknown. |
temporary / union | true/false/null where stated. |
reason / industry | Where the source provides them. |
provenance | source, source_url, parse_status, parser, ingested_at, filing_lag_days, and date_anomaly. |
Field availability varies by state — every state publishes a different subset. Use /v1/states/{state}/status and /v1/meta for the live, authoritative coverage map.
Coverage & freshness
29 states + DC
CA, TX, FL, IL, PA, OH, NJ, NC, WA, OR, CO, IN, AZ, MD, IA, SC, NM, UT, NE, AL, RI, SD, ME, DE, VT, ID, KS + Washington, DC — many of the largest U.S. labor markets, and expanding.
Daily ingest
Ingestion checks run daily, with per-state freshness exposed through /v1/states/{state}/status (latest notice date + last run).
Date range
2024–present is reliable on every covered state; most publish a rolling current + prior-year window, while a few (AL, SD) carry deeper archives back as far as 1998.
Source methodology
Each record is parsed from the official state WARN filing and normalized into one schema. The original file is linked as source_url — always verify against it before relying on a record.
Errors & usage
| Status | Meaning |
|---|---|
200 | Success. |
400 | Invalid parameter (e.g. malformed date, bad closure_type). |
404 | No notice / employer found. |
Data & usage notes
- Derived from official state WARN filings and provided as is — filings may contain errors, amendments, late filings, or duplicates. Verify against
source_url. - Informational / transparency use only — not legal or investment advice.
- Prohibited: FCRA-regulated decisioning and individual-level eligibility decisions (credit, insurance, employment, tenant screening), and bulk resale as a competing dataset. See Terms of Use.
Frequently asked questions
Common questions about WARN data, coverage, and the API.
What is a WARN notice?
The Worker Adjustment and Retraining Notification (WARN) Act requires US employers with 100 or more employees to provide at least 60 days' advance notice before a mass layoff or plant closure. Each notice is filed with the relevant state agency, which publishes it publicly. LayoffLens ingests, normalizes, and exposes these notices through a REST API.
Which states does LayoffLens cover?
29 states plus Washington DC. Coverage is limited to jurisdictions whose agencies publish machine-readable WARN data. The full list of covered states is returned by GET /v1/meta.
How current is the data?
Notices are ingested daily. Most records appear within one to three business days of a state agency publishing them. Each record includes an ingested_at timestamp so you can verify freshness.
What fields does the API return?
Each notice includes employer, state, city, county, num_affected, notice_date, effective_date, closure_type (layoff or plant closure), and a provenance block containing source, source_url, and ingested_at linking back to the official state filing.
How do I filter notices by state or employer?
Pass state (two-letter code) or employer (partial string) as query parameters on GET /v1/notices. You can also filter by closure_type, min_affected, and date ranges using notice_from, notice_to, effective_from, and effective_to.
Does LayoffLens have a free tier?
Yes. The free tier on RapidAPI requires no credit card and includes a fixed number of monthly requests. Paid plans increase the monthly call limit; all plans return the same full dataset and fields.