← Use cases

Use case

Dollar General OSHA Violation History & Risk

Get Dollar General's OSHA inspection and violation history with a severity-weighted risk score, repeat-offender flag, and violations-over-time trend.

Say you’re on a workers’-comp underwriting desk, or writing the safety section of a retail-sector note, and Dollar General is on the list. You need the employer’s OSHA enforcement history — what inspections are on the record, what was cited, at what gravity, for how much, and whether the last few years look worse or better than the few before. It’s all public. The problem is that the public version arrives one inspection at a time, and a national retailer with thousands of stores has a long list.

The manual way, and what it costs

OSHA's public IMIS Establishment Search form
OSHA's IMIS Establishment Search — free, public, and one establishment at a time.

OSHA’s IMIS establishment search is free, needs no login, and will answer this. Type the establishment name, get a table of inspections — each with an ID, an open date, a state, a type. That table has no citations in it. The gravities, the standards cited and the penalty amounts live on each inspection’s own detail page, so every row in that list is another click, another page, another set of numbers to copy out. There’s no export button and no scoring: what you can take away is whatever you retyped into your own spreadsheet.

For one inspection, or a handful, that’s fine and you should just do it — it’s the primary source and it’s free. It stops being reasonable at exactly the point Dollar General puts you: a name with a long inspection list, where you want the citations rolled up rather than read, and where you’ll want the same answer again next quarter.

The faster way

OSHA Violation Risk & Time-Series does the same search once and hands back every row at once.

{
  "employers": [
    "Dollar General"
  ],
  "maxInspectionsPerEmployer": 25
}

One employer name, nationwide, capped at the 25 most recent inspections. Dollar General is the short, canonical spelling, which is what OSHA’s establishment field tends to carry variants of — store numbers and all — and the actor folds every match into one company-level report. The cap matters more than it looks: the score and the totals are computed over the inspections that were pulled, so 25 gives you a recent-history picture. If you want more of the record, raise it (up to 200). If you only care about one state’s stores, add "state": "TX" and the report is built from that state’s inspections alone.

What comes back

{
  "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"
}
FieldExample valueMeaning
queryDollar GeneralThe employer name you searched
risk_score21Deterministic 0-100 severity-weighted, recency-decayed risk score
risk_bandmediumlow / medium / high
repeat_offenderFalseTrue if any Repeat-gravity violations
trendfallingrising / flat / falling (recent vs prior 2-year windows)
by_gravity{"serious": 2}Violation counts by OSHA gravity (willful/repeat/serious/other)

Read the shape of that row, not the numbers in it. The counts, the score and the penalties above are an illustration of the report’s structure — the real ones are whatever OSHA’s live record holds on the day you run it, and we are not going to print a figure for a named company that we haven’t measured. Run it and OSHA fills them in.

What closes the loop is the cluster of risk_score, by_gravity, repeat_offender and trend. by_gravity is the raw fact: how many citations OSHA classified Willful, Repeat, Serious or Other. repeat_offender is true if any of them is a Repeat. trend compares the gravity-weighted violations of the last two years to the two before. risk_score is our arithmetic on top of those facts — gravity-weighted (Willful 10, Failure to Abate 8, Repeat 6, Serious 3, Other 1), decayed by age, scaled onto 0–100. It is deterministic and reproducible, and it is not an OSHA rating: OSHA does not score employers, and nothing here implies OSHA’s assessment of anyone. The how-to prints the full formula so you can check the number rather than trust it.

What you’d do with it

Drop the row into the file the decision actually lives in. For an underwriting or diligence memo, the useful artefact is by_gravity and total_current_penalty as the evidence and risk_score as the sortable summary, with inspections[] — every inspection ID, date, and citation — kept as the audit trail, since each carries a source_url back to the OSHA page it came from. Anyone who challenges a conclusion can be sent to the primary record in one click. Then leave compareToPrevious on and put the run on a schedule: from the second run onward, new_inspections, new_violations and risk_score_delta tell you what moved without re-reading anything.

Worth knowing

Be careful what you conclude. This covers OSHA federal and state-plan inspection data as exposed in the public IMIS establishment search — a record that can lag, and that only contains workplaces that were inspected. An inspection is not a finding of guilt, and citations can be contested and reduced after issuance. Establishment names in OSHA’s data are recorded per inspection and are inconsistent, so the report aggregates at the level of the name you searched: a common name can pull in worksites you didn’t mean, and stores trading under another name won’t be pulled in at all — check the establishments array, and use the state filter to narrow. Inspections are also not evenly distributed: a chain with thousands of stores accumulates far more of them than a small employer ever could, so raw counts across companies of different sizes mislead. And the score reflects recorded violations only, not unreported hazards. It is a relative signal over a public record, not a regulatory determination.


Run it yourself: How to run OSHA Violation Risk & Time-Series walks the whole thing step by step.

Doing this for more than one name at a time? Compare Employers’ OSHA Safety Risk runs the same report across a list and puts the rows side by side. If the company you’re checking is a building contractor, pair this with Multistate Contractor License Lookup — verify the licence is live first, then read the safety record.

Last updated 2026-07-13