OSHA Violations → Deal Routing Signals
Pricing
Pay per usage
OSHA Violations → Deal Routing Signals
OSHA news releases → structured deal-routing signals. Per row: company, location, incident type, penalty, pain sentence, supply category, urgency 1-5, routing thesis. Optional Apollo enrichment for decision makers. For people selling safety consulting + remediation.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Saad Belcaid
Actor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Built by Saad Belcaid.
Convert every OSHA news release into a structured deal-routing signal. Each row tells you who the company is, what happened, why timing matters, and what kind of supplier to route them to.
For SSM members selling safety consulting, remediation, risk management, regulatory compliance, or post-incident services to companies that just got cited by OSHA.
The dumb-simple version
OSHA publishes a press release every time it cites a company for a serious safety incident — fatality, fall, trench collapse, chemical exposure, repeated/willful violations, etc. The release names the company, the location, the penalty, and the incident.
A company that just got cited is in immediate crisis mode. Within 30 days they are calling safety consultants, lawyers, and remediation firms. The 30-90 day window after the citation is the highest-conversion window for selling them safety services.
This scraper turns each OSHA press release into one row with 17 fields, including:
- Company name + location
- Exact incident type (mapped to a defined taxonomy)
- Penalty amount
- Pain sentence (the most operationally vivid quote)
- Urgency score 1–5
- Likely supply category (which type of consultant to route them to)
- Suggested decision makers (named contacts via Apollo, or generic role-based suggestions)
- Routing thesis (one-line CRM-ready justification)
On decision makers (the question you asked)
OSHA press releases do NOT name company decision makers. They name OSHA's own media contacts. So the scraper has two paths:
Path A — generic role-based suggestions (default, free): Every row gets a list of likely buyer titles based on the incident type:
- Fatality / willful → COO, CEO added to the top
- Explosion / combustible dust → Process Safety Director, Director of Operations
- Trench collapse → Construction Safety Manager, Project Director
- Plus base titles: EHS Director, VP Operations, Plant Manager, Safety Manager, General Counsel
These are generic but operationally accurate — these ARE the roles that buy safety consulting at US industrial cos.
Path B — Apollo-enriched named contacts (paste an Apollo key):
Each company gets enriched via Apollo's free mixed_people/search endpoint, filtered to the safety-buyer titles above. You get the actual NAMED person at that company plus their LinkedIn URL where available.
Pass apolloApiKey in the input to enable Path B. Apollo's free tier is enough for most runs.
Volume
OSHA's accessible news archive is ~240 releases visible at any time (pagination caps around page 12). A full run pulls all 240 and classifies them.
Each release is a high-signal lead — these companies just got cited.
Max-value playbook
Default — pull everything once
maxReleases: 500maxPages: 30minUrgency: 1
Hit run. Wait ~2–3 min. Get ~200 OSHA-cited companies with full classification.
Filter recipes
Auriel-style hottest leads — fatalities + willful violations:
requireFatality: truerequireWillful: trueminUrgency: 5
Returns ~10–30 ultra-high-urgency cases.
Big penalties only ($100K+):
minPenaltyUsd: 100000
Apollo-enriched run with named decision makers:
apolloApiKey: "YOUR_APOLLO_KEY"
Each row's suggested_decision_makers becomes named people instead of generic roles.
Just trench-collapse cases (for a trench safety consultant):
After scrape, filter the dataset by incident_types contains "trench-collapse". The supply mapping already routes these to trench-safety-consultant.
Output — one row per OSHA citation
| Field | Example |
|---|---|
source_url | https://www.osha.gov/news/newsreleases/atlanta/20260424 |
title | US Department of Labor cites Florida roofing company for willfully exposing workers to safety hazards… |
published_date | 2026-04-24 |
company_name | Max Home Services LLC |
location_city | Fort Lauderdale |
location_state | FL |
incident_types | ["fatality", "fall", "willful-violations", "severe-injury"] |
penalty_amount_usd | 172324 |
penalty_amount_text | $172,324 in penalties |
violation_types | ["willful", "serious"] |
fatality_or_injury_mentioned | true |
fatality_count | 1 |
serious_injury_count | 1 |
short_summary | First 600 chars of the body |
exact_pain_sentence | "two workers from Max Home Services LLC...were installing tarp when they slipped from the roof into an empty pool" |
likely_supply_categories | ["fall-protection-consultant", "osha-safety-consultant", "workplace-safety-remediation-consultant"] |
suggested_supply_search_query | "fatality consultant" FL (NOT "Max Home Services LLC") |
suggested_decision_makers | [{ name: "Jane Doe", title: "EHS Director", source: "apollo", linkedin_url: "..." }, ...] |
company_size | 51-200 (Apollo) |
company_domain | maxhomeservices.com (Apollo) |
urgency_score | 5 |
routing_thesis | "Max Home Services LLC (Fort Lauderdale, FL) cited willful + serious violations involving 1 serious injury, $172,324 penalty, incident type: fatality, fall. fresh — within last 30 days. Urgency 5/5. Best-fit supply: fall protection consultant." |
release_number | 26-415-ATL (158) |
osha_region | atlanta |
Incident taxonomy
Detected from title + body using regex against a curated keyword set:
| Tag | Catches |
|---|---|
fatality | fatal injury, died, death, killed |
severe-injury | serious injury, severe injury, hospitalized |
fall | fall protection, fall from, slipped from roof, unprotected edge |
amputation | amputation, severed finger/hand/arm/leg/foot |
trench-collapse | trench collapse, cave-in, excavation collapse |
explosion | explosion, blast, detonation |
fire | fire, blaze, combustion |
confined-space | confined space, permit-required space, oxygen-deficient |
chemical-exposure | chemical exposure, hazardous chemical, hazard communication |
combustible-dust | combustible dust, dust deflagration |
machine-guarding | machine guarding, unguarded machine, point of operation |
lockout-tagout | lockout/tagout, LOTO, energy control |
electrocution | electrocuted, electrical shock, energized circuit |
heat-illness | heat illness, heat stroke, heat exposure |
crushing-struck-by | struck-by, crushed by, caught-in-between |
repeat-violations | repeat violation, similar citations previously |
willful-violations | willfully violated, X willful violations |
Supply-category mapping
Every incident type maps to one or more supply categories the operator should route to:
| Incident | Supply categories |
|---|---|
fatality / severe-injury | osha-safety-consultant, workplace-safety-remediation-consultant |
fall | fall-protection-consultant, osha-safety-consultant |
trench-collapse | trench-safety-consultant |
explosion | process-safety-consultant, fire-safety-consultant, hazmat-safety-consultant |
combustible-dust | combustible-dust-consultant, fire-safety-consultant, process-safety-consultant |
chemical-exposure | hazmat-safety-consultant, process-safety-consultant |
confined-space | confined-space-consultant |
machine-guarding | machine-guarding-consultant |
lockout-tagout | lockout-tagout-consultant |
electrocution | electrical-safety-consultant |
repeat-violations / willful-violations | workplace-safety-remediation-consultant |
Urgency scoring (1–5)
| Score | Means |
|---|---|
| 5 | Fatality OR willful + serious + recent |
| 4 | Severe injury OR explosion OR amputation |
| 3 | Trench collapse OR combustible dust |
| 2 | Active citation, no fatality |
| 1 | Stale or low-severity case |
Boosters: willful (+1), repeat (+1), $100K+ penalty (+1). Decay: 180+ days old (–1), 365+ days old (–2).
Architecture
- Apify Actor, TypeScript, pure HTTP (no Playwright needed)
- Source: osha.gov/news/newsreleases — paginated server-rendered HTML
- Per-release parser: regex-based extraction for all 17 fields
- Optional Apollo enrichment via
mixed_people/search(free endpoint) - Bounded concurrency (default 6) for fast batch fetching
Costs
- OSHA: free (US Government public data)
- Apollo (optional): free tier sufficient
- Apify compute: ~2–3 min × 256 MB ≈ trivial CU
Connector OS Station integration
Pipe the dataset into Station as the demand side — companies that just got cited and need safety help. Pair with your supply-side scraper of safety consultants (or use SSM members' supply networks). The routing_thesis field plugs straight into the I Layer for evaluation, the likely_supply_categories narrow the match space, and urgency_score becomes the priority signal.
Flow: scrape → dataset → paste dataset ID into Station → match against your supply → scored introductions.
OSHA news data is US Government public record. Apollo enrichment uses your own key.