OSHA Enforcement violations & inspections
Pricing
Pay per usage
OSHA Enforcement violations & inspections
US employers with OSHA citations from DOL's bulk Inspection + Violation API (federal + all state plans, daily). Ranked hottest-first by penalty and willful/repeat severity. Company, address, NAICS, decoded standards, penalties, contest status — for OSHA defense attorneys & safety consultants.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Ayoub Ali
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
OSHA Enforcement Leads — ranked by penalty & willful/repeat
US employers with OSHA citations, pulled from DOL's bulk Inspection + Violation
API (api.dol.gov/v4) — federal + all state plans, updated daily. Joined on
activity_nr, ranked hottest-first by penalty and willful/repeat severity.
Buyers: OSHA defense attorneys (open cases, contestable fines) and safety consulting firms (willful/repeat — systemic failures).
Why this is the better engine
- API-first, not HTML scraping. Structured JSON, daily refresh. Doesn't rot when OSHA changes a web page (the failure mode of the old IMIS scraper).
- Ranks the whole recent universe, not a shallow oldest-first sample.
- Fixed urgency scoring. Penalty + violation severity drive the score; recency is a bonus, not a cap — so a big willful case ranks critical regardless of age. (The old actor could never exceed "medium.")
- Fails loud. Schema-checks both datasets first; if DOL renames a field, the run errors instead of emitting junk.
- Readable standards.
19100212 A01→1910.212(a)(1).
Setup — DOL API key (required)
The OSHA data is gated behind a free key:
- Register at dataportal.dol.gov (Login.gov).
- Copy your API key.
- Paste it into the actor's "DOL API key" input.
Rate limit: DOL allows ~250 requests/hour with a small burst. The fetch layer paces at ~15s/request and backs off long on 429, so a normal run stays within quota. Don't fire many runs back-to-back in the same hour.
Filters (all dropdowns, except typed date + max records)
| Filter | Default | Notes |
|---|---|---|
| DOL API key | — | required |
| Inspection opened on/after | last 365 days | typed/picked exact date |
| Violation type | All | willful / repeat / willful-or-repeat / serious+ |
| States | All | multi-select (incl. territories) |
| Industry sector | All | construction, manufacturing, healthcare, … |
| Minimum penalty | Any | $5k / $10k / $25k / $50k / $100k+ |
| Case status | Both | open (attorneys) / closed (consultants) |
| Lead type | All | open hazard / contest / safety rebuild / multiple |
| Max records | All | typed number |
How it works
- Pull inspections opened ≥ date floor + violations issued ≥ date floor (server-side).
- Join on
activity_nr; keep only cited inspections. - Aggregate violations → penalties, willful/repeat/serious counts, decoded standards.
- Classify lead type, score urgency, rank hottest-first, apply filters, cap, push.
Output (36 columns, ordered)
company, recipient_* (enrichment hook — blank until Apollo added), full address, state (full name), NAICS + sector, employee_count, inspection id/type/dates, case_open, violation counts (serious/willful/repeat/other), decoded standards_cited, initial & current penalty + display, abatement_outstanding, contest_filed, lead_type, urgency, urgency_score, signal, recommended_supply, osha_inspection_url, scraped_at.
Source
DOL v4 API — OSHA Inspection (/get/OSHA/inspection/json) + Violation
(/get/OSHA/violation/json).
Not included (by design)
- Contact enrichment —
recipient_*fields are wired but blank in v1; add an Apollo pass to fill person + email.