OSHA Enforcement Monitor — New Inspections, No Login, $20/1k
Pricing
from $20.00 / 1,000 inspection alerts
OSHA Enforcement Monitor — New Inspections, No Login, $20/1k
Watch companies, states or NAICS codes on osha.gov and get only NEW or UPDATED inspections since the last run, with citations, violation counts by type and initial/current penalties. Weekly schedule. No login or API key. MCP-ready. $20 per 1,000 alerts.
Pricing
from $20.00 / 1,000 inspection alerts
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
OSHA Enforcement Monitor
Watch companies, states or industries for new OSHA inspections and for citation and penalty changes on inspections you already know about. Schedule it weekly and every run returns only what changed since the last one, straight from osha.gov's public enforcement records. No login, no API key.
Each alert carries the inspection id, establishment, site address, NAICS, open/close dates, inspection type and scope, case status, violations by type (serious / willful / repeat / other), initial and current penalties and the individual citation items.
Who uses this
- Safety and EHS consultants — get notified when a client, prospect or competitor site is inspected and when citations are issued.
- Insurers and underwriters — track enforcement activity on insured accounts and in high-risk NAICS codes.
- Corporate EHS teams — monitor your own establishments across states, including state-plan states.
- Law firms and labor organizations — follow willful/repeat citations and penalty settlements.
- Analysts and journalists — watch a whole industry (NAICS) or state for enforcement trends.
Input
| Field | Default | Meaning |
|---|---|---|
companyNames | ["Amazon", "Tesla"] | Establishment names (substring match on osha.gov). Clear to watch states or industries only. |
states | [] | Two-letter state codes. Narrows companies/NAICS to those states; alone, watches every inspection in each state. |
naicsCodes | [] | 2–6 digit NAICS codes, e.g. 493110 (warehousing) or 23 (all construction). |
lookbackDays | 30 | Inspections opened within this window are scanned. Keep it longer than your schedule interval. |
includeCitations | true | Fetch each emitted inspection's detail page (violations, penalties, citations, address). Also enables penalty-change detection. |
maxNewPerQuery | 5 | Alerts per company/state/NAICS query per run; the rest arrive on later runs. |
maxItems | 10 | Total alerts per run. |
firstRunMode | emitAll | emitAll emits everything in the window on the first run; baseline records it silently so only future inspections are emitted. |
webhookUrl | "" | POST a run summary plus up to 50 alerts here after each run. |
monitorId | default | Name of the watch list. Each id has its own memory. |
dolApiKey | "" | Optional DOL Open Data API key (see below). |
Query semantics
companyNamesandnaicsCodesare the things you watch;statesrestricts them.["Amazon"]+["TX","CA"]= Amazon inspections in Texas and California.- With no companies and no NAICS codes, each state in
statesis watched on its own (every inspection opened there). - Every alert says which query matched it in
matchedQuery(company:Amazon state:TX,naics:493110,state:DE).
Output
One record per new or updated inspection:
{"activityNr": "1915031.015","establishmentName": "Mtn1 Amazon Fulfillment Center","siteAddress": "1025 Boxwood Rd","city": "Wilmington","state": "DE","zip": "19804","naics": "454110","openDate": "2026-09-03","closeDate": null,"inspectionType": "Complaint","scope": "Partial","caseStatus": "OPEN","office": "Wilmington Area Office","violations": { "serious": 0, "willful": 0, "repeat": 0, "other": 0, "unclassified": 0, "total": 0 },"totalInitialPenalty": 0,"totalCurrentPenalty": 0,"citations": [],"oshaUrl": "https://www.osha.gov/ords/imis/establishment.inspection_detail?id=1915031.015","matchedQuery": "company:Amazon","changeType": "new","firstSeenAt": "2026-09-28T14:02:11.000Z","monitorId": "default"}
citations lists each citation item with citationId, citationType, standardCited, issuanceDate, abatementDueDate, initialPenalty, currentPenalty, ftaPenalty, contest and latestEvent (e.g. I - Informal Settlement).
changeType is new for an inspection the monitor has not seen, or updated when its violation count, case status, close date or penalties changed since the last run. Penalty changes are detected by re-reading cited inspections inside the lookback window on every run (up to 300 per run), which is how settlements and contests show up.
The run's key-value store also gets a SUMMARY record: { newCount, updatedCount, scanned, seenTotal, baseline }.
Scheduling
Create an Apify schedule (weekly is a good default; OSHA posts inspections with a lag of a few days) with your watch list as input. Keep lookbackDays at least twice the schedule interval so nothing falls between runs. The monitor stores seen inspection ids and their citation fingerprint in a named key-value store osha-monitor-<hash of monitorId>; up to 50,000 ids are kept, oldest dropped first.
- First run: with
firstRunMode: "emitAll"you get everything currently in the window (capped bymaxItems), which doubles as a sample. With"baseline"the first run emits nothing and only future activity is reported. - Several watch lists: give each its own
monitorId(e.g.clients,competitors,tx-construction). - Reset: delete the
osha-monitor-…key-value store, or pick a newmonitorId.
Webhook
Set webhookUrl to receive a POST after every run:
{ "monitorId": "default", "runAt": "…", "newCount": 3, "updatedCount": 1, "scanned": 61, "seenTotal": 120, "baseline": false, "inspections": [ …up to 50 records… ] }
Nothing is posted when there is no run (the actor did not start); a run with zero changes still posts a summary with an empty inspections array, so your receiver can tell "checked, nothing new" from "did not check".
Data source: keyless vs. API-key mode
Default (keyless): inspections are listed from OSHA's public Establishment Search (establishment.search, for company names) and Inspections within Industry search (industry.search, for states and NAICS codes), and each emitted inspection's detail page supplies citations and penalties. These are the same pages a human uses on osha.gov; no key or login is needed.
Optional API-key mode: the U.S. Department of Labor also exposes the OSHA inspection table through its Open Data API v4 (free key from dataportal.dol.gov). If you supply dolApiKey, the monitor lists inspections through that API (filtered by open date, establishment name, state and NAICS) and still reads citation details from osha.gov. Any API error or unexpected response falls back to the keyless listing for that run, with a warning in the log. The API mode is offered as a convenience for users who already hold a key; the keyless path is the one this actor is tested against.
Limits and notes
- Up to 1,000 inspections are scanned per query per run (10 pages of 100).
- Establishment name matching is OSHA's own substring match, so
"Amazon"also returns"Amazon Corporate Llc"and"Mtn1 Amazon Fulfillment Center". - OSHA typically publishes an inspection within days of opening; citations appear weeks to months later, which is exactly what
changeType: "updated"catches. - Data covers federal OSHA and state-plan states (the
officefield tells you which).
Pricing
$0.005 per run plus $0.02 per emitted inspection alert. A weekly monitor of a handful of companies typically costs well under $1 per month.