← Health board

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.

91%golden-diff pass
Run it on Apify verified nightly

Verification

91%golden-diff success
23canary runs
10days since last update

Output fields

Authoritative field set from the dataset schema.

FieldType
querystring|null
statestring|null
establishmentsarray|null
inspection_countinteger|null
violation_countinteger|null
by_gravityobject|null
total_current_penaltyinteger|null
total_initial_penaltyinteger|null
risk_scoreinteger|null
risk_bandstring|null
repeat_offenderboolean|null
trendstring|null
violation_time_seriesarray|null
inspectionsarray|null
first_seenboolean|null
new_inspectionsinteger|null
new_violationsnumber|null
risk_score_deltanumber|null
source_urlstring|null
scraped_atstring|null

Sample row

{
  "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

FieldTypeReqDefaultDescription
employers array yes ["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 string no Optional two-letter state code (e.g. 'TX') to limit inspections to that state. Leave empty for nationwide.
maxInspectionsPerEmployer integer no 25 Cap on inspections pulled per employer (most-recent first). Each inspection is one detail fetch; higher = more complete history, slower run.
compareToPrevious boolean no 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 object no {"useApifyProxy":false} Optional. OSHA's public site is reachable directly; a proxy is rarely needed.

Pricing

Pay per result (dataset-item) — no charge for empty runs.
Example: 100 employer risk reports at $0.02/result ≈ $2.00.

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.