OSHA Violation Risk & Time-Series
Pricing
$0.02 / employer risk report
OSHA Violation Risk & Time-Series
Turn any US employer's OSHA inspection history into a risk score, repeat-offender flag, and violation time-series — severity-weighted, auditable, and tracked over time.
Pain points
- OSHA's IMIS database has 5M+ inspections and 13M+ violations, but no risk score — you read raw citations by hand.
- Underwriters and due-diligence teams need a defensible safety-risk signal per employer, not a pile of citation rows.
- Spotting repeat offenders and whether violations are trending up requires manually stitching years of inspections together.
What we solve
- Pull every OSHA inspection for an employer and its citations (gravity, penalties, standards, dates).
- Compute a deterministic, auditable 0-100 risk score weighted by violation severity and recency.
- Flag repeat offenders, chart violations over time, and label the trend (rising / flat / falling).
- Run on a schedule to catch new inspections, new violations, and risk-score changes.
Summary
Give it a US employer name and get back an OSHA safety-risk report: every inspection and citation (gravity, penalty, standard, dates) rolled up into a deterministic, auditable risk score (0-100, severity-weighted and recency-decayed), a repeat-offender flag, total penalties, and a violations-over-time series with a rising/flat/falling trend. Built on OSHA's public IMIS data — no scraping fragility, no anti-bot. Run it on a schedule and it also reports what changed since last time: new inspections, new violations, and risk-score movement. Built for safety consultants, insurance underwriters, and supply-chain due-diligence.
Who it's for
- Insurance underwriters pricing workers'-comp and liability risk
- Safety consultants and EHS teams benchmarking employers
- Supply-chain and vendor due-diligence teams
- Investors and M&A diligence screening for safety liabilities
How to use
Set the input, run the actor, and collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API). Example input:
{"employers": ["Dollar General"],"maxInspectionsPerEmployer": 25,"compareToPrevious": true}
See Inputs below for every available field.
What you get
One row per record:
| Field | Description |
|---|---|
query | The employer name you searched |
risk_score | Deterministic 0-100 severity-weighted, recency-decayed risk score |
risk_band | low / medium / high |
repeat_offender | True if any Repeat-gravity violations |
trend | rising / flat / falling (recent vs prior 2-year windows) |
by_gravity | Violation counts by OSHA gravity (willful/repeat/serious/other) |
total_current_penalty | Sum of current penalties (USD) |
violation_time_series | Violations + penalty per year |
inspection_count / violation_count | Totals analyzed |
inspections | Per-inspection detail including each citation |
new_inspections / new_violations / risk_score_delta | What changed since the previous run (monitoring) |
source_url | The OSHA search this report came from |
Sample:
{"query": "Dollar General","state": null,"establishments": ["Dollar General Store 12345"],"inspection_count": 2,"violation_count": 2,"by_gravity": {"serious": 2},"total_current_penalty": 14000,"total_initial_penalty": 14000,"risk_score": 21,"risk_band": "medium","repeat_offender": false,"trend": "falling","violation_time_series": [{"year": 2024,"violations": 2,"penalty": 14000}],"first_seen": false,"new_inspections": 0,"new_violations": 0,"risk_score_delta": 0,"source_url": "https://www.osha.gov/ords/imis/establishment.search?establishment=Dollar+General&state=all"}
Inputs
| Field | Required | Type | Default | Description |
|---|---|---|---|---|
employers | yes | array | ["Dollar General"] | US employer / company names to analyze (e.g. 'Dollar General'). One risk report per name, aggregating all of that employer's OSHA inspections. |
state | no | string | — | Optional two-letter state code (e.g. 'TX') to limit inspections to that state. Leave empty for nationwide. |
maxInspectionsPerEmployer | no | integer | 25 | Cap on inspections pulled per employer (most-recent first). Each inspection is one detail fetch; higher = more complete history, slower run. |
compareToPrevious | no | boolean | true | When on (default), diff each employer against the previous run and report what changed — new inspections, new violations, risk-score delta. Run on a schedule to track employers over time. |
proxyConfiguration | no | object | {"useApifyProxy": false} | Optional. OSHA's public site is reachable directly; a proxy is rarely needed. |
Pricing (Pay Per Event)
You pay per result (dataset-item) — no charge for empty runs. Example: 100 employer risk reports at $0.02/result ≈ $2.00.
One charge per employer risk report produced. Employers with no OSHA inspections found are returned empty and not charged. Apify platform usage (compute) is billed separately per your plan.
Use cases
- Underwriting risk signal — get a defensible, auditable safety-risk score per employer.
- Vendor due diligence — screen suppliers for repeat OSHA violations before contracting.
- Safety benchmarking — compare employers' violation history and penalty totals.
- Monitoring — run weekly to catch new inspections and rising risk on watched employers.
Why this actor
- A risk score, not raw citations — severity-weighted, recency-decayed, and fully auditable (the formula is documented).
- Repeat-offender flag, penalty totals, and a violations-over-time trend in one report.
- Built on OSHA's public data — no anti-bot fragility — and tracks what changes over time.
Limitations & updates
Covers OSHA federal and state-plan inspection data exposed in the public IMIS establishment search. Establishment names in OSHA data are per-inspection and inconsistent, so reports aggregate at the employer-query level (use the state filter to narrow). The risk score reflects recorded violations only — not unreported hazards — and is a relative signal, not a regulatory determination.
FAQ
Where does the data come from?
OSHA's public IMIS enforcement database (inspections + citations). Public data, no login required.
How is the risk score calculated?
A deterministic formula: violations weighted by OSHA gravity (Willful > Repeat > Serious > Other) and decayed by recency, scaled to 0-100. It's reproducible and auditable — the same history always yields the same score.
What counts as a repeat offender?
Any employer with one or more citations OSHA classified as 'Repeat' gravity.
Can I limit to one state?
Yes — pass a two-letter state code to restrict the inspections analyzed; leave it empty for nationwide.
How am I charged?
Per employer risk report produced. Employers with no inspections found are returned empty and not charged.
Can it track changes over time?
Yes — run on a schedule and it reports new inspections, new violations, and risk-score movement since the previous run.