Every OSHA inspection in the United States is a public record. When OSHA inspects a workplace -- whether it's a planned audit, a complaint-driven visit, or an accident investigation -- the results are published in a federal dataset maintained by the Department of Labor. That includes the employer name, site address, inspection type, violation counts, and penalty amounts.
This data is freely available through the DOL's open data portal, but the search interface is basic and exports are limited. If you need to pull inspection records at scale -- for compliance monitoring, supply chain risk assessment, or competitive research -- you need a programmatic approach.
What the data contains
Each inspection record includes:
- Employer name and site address -- full street address, city, state, and ZIP code
- Inspection dates -- open date, close date
- Inspection type -- Planned, Complaint, Referral, Accident, Follow-up
- Inspection scope -- Complete, Partial, Records-only
- Violations -- count of violations found
- Penalties -- initial penalty amount and current (adjusted) penalty amount in dollars
- Industry codes -- NAICS and SIC codes with descriptions
- Union status -- whether the workplace was unionized
- Advance notice -- whether the employer received advance notice of the inspection
Who uses this
Supply chain and procurement teams use OSHA data to assess vendor risk. A supplier with repeated serious violations is a liability.
Insurance underwriters use inspection history to price workers' compensation and general liability policies. A company with clean OSHA history is a better risk.
ESG and compliance analysts monitor workplace safety records for investment screening. Publicly traded companies with OSHA violations face regulatory and reputational risk.
Journalists use it to investigate workplace safety in specific industries or regions. Construction, manufacturing, and warehousing are the most-inspected sectors.
Law firms use inspection data for litigation support in workplace injury cases.
Competitors can see what violations their industry peers are cited for and ensure they don't have the same gaps.
Searching via API
I built an Apify actor that wraps the DOL's Socrata API and returns clean JSON. You can search by employer name, state, inspection type, and date range.
import requests
API_TOKEN = "your_apify_token"
ACTOR_ID = "pink_comic/osha-workplace-inspection-violations"
run = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR_ID}/runs?token={API_TOKEN}",
json={
"employer": "Amazon",
"state": "CA",
"maxResults": 50
}
).json()
import time
run_id = run["data"]["id"]
while True:
status = requests.get(
f"https://api.apify.com/v2/actor-runs/{run_id}?token={API_TOKEN}"
).json()
if status["data"]["status"] in ("SUCCEEDED", "FAILED"):
break
time.sleep(2)
dataset_id = status["data"]["defaultDatasetId"]
items = requests.get(
f"https://api.apify.com/v2/datasets/{dataset_id}/items?token={API_TOKEN}"
).json()
for insp in items:
print(f"{insp['employerName']} - {insp['siteCity']}, {insp['siteState']}")
print(f" Type: {insp['inspType']}, Violations: {insp['violations']}, Penalty: ${insp['totalCurrentPenalty']}")
print()
Example queries
Find all inspections for a specific employer:
{"employer": "Tesla", "maxResults": 100}
Filter by state and date range:
{"state": "TX", "dateFrom": "2024-01-01", "maxResults": 100}
Find complaint-driven inspections only:
{"inspType": "Complaint", "state": "NY", "maxResults": 50}
The data goes back decades
The DOL dataset includes inspection records going back to the 1970s. Coverage is most complete for recent years, but historical records are available for long-running trend analysis.
Try it here: OSHA Workplace Inspections on Apify
Top comments (0)