OrbTop

OSHA Inspection & Violation Crawler

BUSINESSLEAD GENERATIONOTHER

OSHA Inspection & Violation Crawler

Scrape workplace safety inspection records from the OSHA IMIS database, the U.S. Department of Labor's official enforcement data system. Returns 23 structured fields per inspection — establishment details, site addresses, SIC/NAICS codes, inspection type and scope, violation classifications, penalty amounts, abatement dates, and cited standards across 4M+ records nationwide.


OSHA Inspection Crawler Features

  • Extract inspection records from all 50 U.S. states plus D.C.
  • Filter by state, date range, SIC industry code, and inspection type (Planned, Complaint, Referral, Accident, Follow-Up) — or combine them however you want
  • Returns 23 fields per record including penalty amounts, violation types, and cited OSHA standards
  • Covers 4M+ inspection records going back decades, which is more workplace safety data than most people know exists
  • No proxies needed. Government site, no anti-bot measures, generous rate limits.
  • Pay-per-event pricing at $0.001 per record

Who Uses OSHA Inspection Data?

  • Safety compliance officers — audit inspection history for facilities by state and industry before site visits
  • Insurance underwriters — pull violation and penalty data for risk models, because spreadsheets from 2019 are not a risk model
  • Legal teams — research establishment inspection history, penalty trends, and cited standards for litigation or regulatory defense
  • Investigative journalists — identify patterns in workplace safety enforcement across industries and geographies
  • B2B sales teams — build prospecting lists of establishments with specific inspection profiles and industry codes
  • ESG researchers — quantify workplace safety records for corporate sustainability reporting

How OSHA Inspection Crawler Works

  1. Pick one or more U.S. states and optionally narrow by date range, SIC code, or inspection type.
  2. The crawler searches the OSHA IMIS system and pages through listing results for each selected state, extracting inspection IDs.
  3. Each inspection detail page is fetched and parsed — establishment info, addresses, violation summaries, penalty amounts, and cited standards are assembled into a clean record.
  4. Records are delivered as structured JSON. The crawler handles pagination and retries, so you configure it and walk away.

Input

Basic: Crawl inspections for a single state

{
  "states": ["AZ"],
  "maxItems": 500
}

Narrow by date range and inspection type

{
  "states": ["CA", "TX"],
  "inspectionType": "Complaint",
  "dateFrom": "2024-01-01",
  "dateTo": "2025-01-01",
  "maxItems": 1000
}

Filter by industry (SIC code)

{
  "states": ["NY"],
  "sicCode": "3599",
  "maxItems": 200
}

Input Parameters

Field Type Default Description
states string[] One or more U.S. state abbreviations (e.g. AZ, CA, TX). At least one is required.
inspectionType string "" Filter by type: Planned, Complaint, Referral, Accident, or FollowUp. Leave empty for all.
dateFrom string "" Inspection date range start (YYYY-MM-DD).
dateTo string "" Inspection date range end (YYYY-MM-DD).
sicCode string "" Standard Industrial Classification code (e.g. 3599 for industrial machinery).
maxItems integer 500 Maximum records to return. Set to 0 for unlimited.
proxyConfiguration object {useApifyProxy: false} Proxy settings. Government sites do not require proxies.

OSHA Inspection Crawler Output Fields

{
  "activity_nr": "Cpx2025xtn976x0044",
  "estab_name": "Sf Markets, Llc (Fn) Dba Sprouts Farmers Market",
  "site_address": "7750 N 16th St",
  "site_city": "Phoenix",
  "site_state": "AZ",
  "site_zip": "85020",
  "sic_code": "5411",
  "naics_code": "445110",
  "insp_type": "Complaint",
  "insp_scope": "Partial",
  "open_date": "2025-01-08",
  "close_date": "2025-03-15",
  "case_status": "Closed",
  "viol_type": "Serious",
  "gravity": null,
  "initial_penalty": 16131,
  "current_penalty": 12524,
  "nr_exposed": null,
  "abate_date": "2025-02-28",
  "owner_type": "Private",
  "safety_hlth": "Safety",
  "union_status": "NonUnion",
  "nr_instances": 3,
  "standard": "1910.303(b)(1)"
}
Field Type Description
activity_nr string OSHA inspection activity number (unique ID)
estab_name string Establishment or company name
site_address string Inspection site street address
site_city string Inspection site city
site_state string Inspection site state abbreviation
site_zip string Inspection site ZIP code
sic_code string Standard Industrial Classification code
naics_code string North American Industry Classification System code
insp_type string Inspection type (Planned, Complaint, Referral, Accident, FollowUp)
insp_scope string Inspection scope (Complete, Partial, Records)
open_date string Inspection opening date (YYYY-MM-DD)
close_date string Inspection case close date (YYYY-MM-DD)
case_status string Case status (Open, Closed)
viol_type string Violation type (Serious, Willful, Repeat, Other-than-Serious)
gravity string Violation gravity assessment
initial_penalty number Initial assessed penalty amount in USD
current_penalty number Current penalty amount after adjustments in USD
nr_exposed number Number of employees exposed to the hazard
abate_date string Abatement completion date (YYYY-MM-DD)
owner_type string Establishment owner type (Private, Federal, State, Local)
safety_hlth string Whether the violation is Safety or Health related
union_status string Union status of the establishment
nr_instances number Number of violation instances
standard string OSHA standard cited in the violation (e.g. 1910.303(b)(1))

FAQ

How do I scrape OSHA inspection data?

OSHA Inspection Crawler handles it. Select one or more states, optionally filter by date range, industry code, or inspection type, and run the actor. Records arrive as structured JSON — no manual searching through the IMIS interface required.

How much does OSHA Inspection Crawler cost to run?

Roughly $0.001 per record. A typical run pulling 1,000 inspections for a single state costs about $1.10 (including the $0.10 actor start fee). That is considerably less than assembling the same data by hand.

Does OSHA Inspection Crawler need proxies?

No. OSHA's IMIS system is a public government database with no anti-bot protections. The crawler ships with proxies disabled by default because it does not need them — just polite rate limiting, which is handled for you.

Can I filter by industry?

Yes. Pass a Standard Industrial Classification (SIC) code in the sicCode field. SIC 3599 gets you industrial machinery, 5411 gets you grocery stores, 1542 gets you commercial construction. The Department of Labor has been classifying industries since before most of us were born.

What inspection types are available?

Five types: Planned (routine scheduled inspections), Complaint (employee or public complaints), Referral (referred by another agency), Accident (workplace injury or fatality), and Follow-Up (revisit of a previous inspection). Filter by any single type or leave blank for all of them.


Need More Features?

Need custom fields, filters, or a different target site? File an issue or get in touch.

Why Use OSHA Inspection Crawler?

  • 23 fields per record — Penalty amounts, violation types, cited standards, SIC/NAICS codes, and full site addresses. Most alternatives return a fraction of that, or nothing structured at all.
  • Priced at $0.001/record — Three times cheaper than the nearest competitor charging per-record, and free alternatives have no schemas or output structure to speak of.
  • No proxies, no browser — Hits the OSHA IMIS system directly with lightweight HTTP requests. Runs fast, costs less in compute, and does not break when a CSS class changes.