NLRB Cases
Every NLRB case back decades — 512,000+ unfair-labor-practice charges (C-cases) and union representation petitions (R-cases): employer name, city/state, region, filing date, status, closure reason, eligible voters, unit sought, and certified representative. The union-organizing and labor-dispute signal for any employer — same-day fresh for new filings.
GET /v1/nlrb-casesWhat it returns
One record per case number (e.g. 03-CA-390171 — region 03, CA = ULP charge against an employer). case_type splits ULP vs representation; statuses refresh on a trailing 180-day window. On CB charges (against unions) the name field is the union. See the live example below for the full field set.
Filters
| case_number | Direct lookup by NLRB case number (e.g., '03-CA-390171'). Fastest path. |
| employer_name | Case-insensitive substring against the named party (e.g., 'starbucks', 'amazon'). Usually the employer; on CB-type charges the union |
| state | Two-letter state/territory code of the case site (e.g., 'NY', 'CA', 'PR'). |
| case_type | Case family: 'ULP' = unfair-labor-practice charges (C-cases), 'representation' = election/unit petitions (R-cases). |
| case_subtype | Exact case-number code (e.g., 'CA' charge against employer, 'CB' against union, 'RC' certification petition, 'RD' decertification). Client-side filter. |
| status | Case status. Client-side filter. |
| region | Two-digit NLRB region number from the case-number prefix (e.g., '03' Buffalo, '13' Chicago). Client-side filter. |
| since | date_filed lower bound (YYYY-MM-DD inclusive). |
| until | date_filed upper bound (YYYY-MM-DD inclusive). |
| sort_by | Sort key. Only date_filed is supported (the default). |
| sort_order | Default: desc (most recently filed first). |
| limit | Maximum cases to return. Default 50, max 500. |
Example request
curl "https://api.keyvex.com/v1/nlrb-cases?limit=1" \
-H "x-api-key: YOUR_KEY"
Response
{
"results": [
{
"reason_closed": "",
"region_assigned": "Region 01, Boston, Massachusetts",
"eligible_voters": null,
"city": "Boston",
"case_type": "representation",
"source_url": "https://www.nlrb.gov/case/01-RC-389901",
"date_filed": "2026-07-02",
"num_employees": 4,
"date_closed": "",
"scraped_at": "2026-07-08T18:46:06.914Z",
"certified_representative": "",
"name": "WHDH-TV/WLVI-TV",
"case_number": "01-RC-389901",
"id": "01-RC-389901",
"state": "MA",
"unit_sought": "Included: All News Coordinators and Videos Coordinators.\nExcluded: All clerical, confidential employees,managers and supervisors defined by the Act.",
"case_subtype": "RC",
"region": "01",
"status": "Open",
"_first_seen_at": "2026-07-08T18:46:13.395Z",
"_last_history_at": "2026-07-08T18:46:13.395Z",
"_content_hash": "e178e71d973edf2a1d03721064aa2d3a8e150f793c2c1499f9f859efe51e8787"
}
],
"count": 1,
"has_more": false
}
Example questions you can answer
- Union organizing petitions at a company.
- ULP charges against an employer, open vs closed.
- Representation elections by state or region.
- Which employers face repeat NLRB activity?
Related datasets
Hand any AI your key + the OpenAPI spec and it can pull this dataset directly. Free key = full data, 60 requests/day.
Get a free key OpenAPI spec → REST docs →