OSHA Severe Injury Reports Scraper avatar

OSHA Severe Injury Reports Scraper

Pricing

Pay per event

Go to Apify Store
OSHA Severe Injury Reports Scraper

OSHA Severe Injury Reports Scraper

Export OSHA severe workplace injury reports by state, date, NAICS, employer, city, and injury type from the official public SIR dataset.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Extract OSHA Severe Injury Reports from the official public SIR dataset. Filter by event date, state, NAICS industry, employer, city, and injury type, then export normalized incident records with narratives, counts, geocodes, and dataset provenance.

What does OSHA Severe Injury Reports Scraper do?

OSHA Severe Injury Reports Scraper downloads the public OSHA Severe Injury Reports ZIP file, streams the CSV inside it, applies your filters, and saves matching severe workplace injury incidents to an Apify dataset.

Use it when you need structured access to OSHA SIR records without manually downloading a large CSV and filtering it in a spreadsheet.

The actor is designed for:

  • ๐Ÿš‘ severe injury monitoring
  • ๐Ÿญ employer and facility risk research
  • ๐Ÿงฐ industrial safety market intelligence
  • ๐Ÿ“ state and city incident analysis
  • ๐Ÿงพ compliance and insurance workflows

Who is it for?

Safety and compliance consultants can monitor recent hospitalizations, amputations, and loss-of-eye incidents by employer, region, or industry.

Insurance analysts can identify employers and industries with recent severe injury events for risk review.

Industrial suppliers and remediation vendors can discover companies with recent safety incidents that may need training, PPE, guarding, or corrective-action support.

Journalists and researchers can export filtered OSHA incident narratives for regional or industry reporting.

Legal and expert-witness teams can search public injury narratives by company, state, city, and NAICS sector.

Why use this scraper instead of the OSHA dashboard?

The OSHA dashboard is useful for interactive browsing, but repeat workflows usually need automation.

This actor lets you:

  • schedule repeat checks
  • export JSON, CSV, Excel, RSS, or API data
  • filter before export
  • keep dataset provenance with each record
  • integrate with CRMs, BI tools, notebooks, and alerts
  • avoid repeatedly handling the full raw CSV manually

What data can you extract?

Each output item represents one OSHA Severe Injury Report row.

FieldDescription
reportIdOSHA severe injury report ID
eventDateIncident date in ISO format
employerEmployer name from OSHA
address, city, state, zipIncident location fields
latitude, longitudeOSHA geocode coordinates where available
primaryNaicsPrimary NAICS code
hospitalizedCountNumber of hospitalizations
amputationCountNumber of amputations
lossOfEyeCountNumber of eye-loss events
inspectionIdOSHA inspection ID where present
finalNarrativeOSHA narrative description
natureTitleInjury nature description
partOfBodyTitleBody part affected
eventTitleEvent/exposure description
sourceTitleSource of injury
datasetFilenameOSHA ZIP filename used
datasetUrlSource ZIP URL
scrapedAtActor run timestamp

How much does it cost to extract OSHA injury reports?

This actor uses pay-per-event pricing.

  • Start fee: $0.005 per run
  • Per saved report: formula-derived tiered pricing from $0.000039236 down to $0.00001 depending on your Apify plan tier

The actor does not use proxies. Costs are mainly compute time for downloading and scanning the public OSHA CSV plus the per-item charge for records saved.

Use a small maxItems value for tests. Increase it for production exports or scheduled monitoring.

Input options

InputPurpose
maxItemsMaximum matching reports to save
startDateInclude reports on or after a date
endDateInclude reports on or before a date
statesState names or USPS abbreviations
naicsPrefixesMatch Primary NAICS code prefixes
employerQueryCase-insensitive employer substring
cityQueryCase-insensitive city substring
hospitalizedOnlyRequire hospitalization count greater than zero
amputationOnlyRequire amputation count greater than zero
lossOfEyeOnlyRequire loss-of-eye count greater than zero
datasetUrlOptional direct OSHA ZIP URL
includeRawRecordInclude the original CSV row for audit workflows

Example input

{
"maxItems": 100,
"startDate": "2024-01-01",
"states": ["TX"],
"hospitalizedOnly": true
}

Industry monitoring example

Use NAICS prefixes to monitor a sector.

{
"maxItems": 500,
"startDate": "2023-01-01",
"states": ["CA", "NV", "AZ"],
"naicsPrefixes": ["23"],
"amputationOnly": true
}

This exports severe injury reports in construction-related NAICS codes for selected states.

Employer watchlist example

{
"maxItems": 50,
"startDate": "2024-01-01",
"employerQuery": "Academy",
"includeRawRecord": true
}

Use this for company-specific compliance research or lead qualification.

Output example

{
"reportId": "2024010001",
"eventDate": "2024-01-01",
"employer": "Academy Sports and Outdoors",
"city": "FORT WORTH",
"state": "TEXAS",
"primaryNaics": "424330",
"hospitalizedCount": 1,
"amputationCount": 0,
"lossOfEyeCount": 0,
"inspectionId": "1720720",
"finalNarrative": "An employee was testing a bike...",
"datasetFilename": "January2015toOctober2025.zip",
"sourcePageUrl": "https://www.osha.gov/severe-injury-reports"
}

How to run the actor

  1. Open the actor on Apify.
  2. Enter your filters.
  3. Set maxItems to a small number for a first run.
  4. Start the actor.
  5. Download results from the Dataset tab.
  6. Schedule the actor if you need repeat monitoring.

Tips for better results

  • Use state filters to keep exports focused.
  • Use NAICS prefixes rather than full NAICS codes when researching broad industries.
  • Leave endDate empty to include the newest OSHA dataset month.
  • Use includeRawRecord only when you need audit-grade raw CSV fields.
  • Combine startDate with scheduled runs for recent-incident monitoring.

Integrations

You can connect the output dataset to:

  • Google Sheets for analyst review
  • Slack alerts for new severe incidents
  • Airtable or HubSpot for outreach workflows
  • Power BI or Tableau for safety dashboards
  • Python notebooks for injury trend analysis
  • Apify webhooks for automated incident monitoring

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/osha-severe-injury-reports-scraper').call({
maxItems: 100,
startDate: '2024-01-01',
states: ['TX'],
hospitalizedOnly: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient('MY-APIFY-TOKEN')
run = client.actor('automation-lab/osha-severe-injury-reports-scraper').call(run_input={
'maxItems': 100,
'startDate': '2024-01-01',
'states': ['TX'],
'hospitalizedOnly': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~osha-severe-injury-reports-scraper/runs?token=MY-APIFY-TOKEN' \
-H 'Content-Type: application/json' \
-d '{"maxItems":20,"startDate":"2024-01-01","states":["TX"],"hospitalizedOnly":true}'

MCP usage

Use this actor from Claude through Apify MCP:

https://mcp.apify.com/?tools=automation-lab/osha-severe-injury-reports-scraper

Add the Apify MCP server in Claude Code:

$claude mcp add apify --url "https://mcp.apify.com/?tools=automation-lab/osha-severe-injury-reports-scraper"

Or configure an MCP client with JSON:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=automation-lab/osha-severe-injury-reports-scraper"
}
}
}

Example prompts:

  • "Run the OSHA Severe Injury Reports Scraper for Texas hospitalizations since 2024 and summarize the top injury narratives."
  • "Find recent OSHA severe injury reports for construction NAICS code 23 in California."
  • "Export employer names and cities from OSHA amputation reports in the Midwest."

Scheduling and monitoring

For monitoring, schedule the actor weekly or monthly with a recent startDate.

A common workflow:

  1. Run monthly for selected states and NAICS sectors.
  2. Store the dataset in Apify.
  3. Send new records to Slack or email.
  4. Review narratives and employer names.
  5. Route high-priority incidents to sales, safety, or compliance teams.

Data source notes

The actor uses OSHA's public Severe Injury Reports dataset.

The dataset is a federal OSHA public data source and may exclude or represent state-plan jurisdiction data according to OSHA's own publication rules. Always verify regulatory conclusions with the original OSHA source.

OSHA updates the downloadable file periodically. The actor records the dataset filename and URL used for each item so exports remain traceable.

Legality and responsible use

This actor reads a public government dataset. It does not bypass authentication, captchas, or private systems.

You are responsible for using the data lawfully, respecting privacy and employment-law obligations, and verifying facts before taking legal, employment, insurance, or safety actions.

FAQ and troubleshooting

Why did I get zero results?

Your filters may be too narrow. Remove employer or city filters first, then widen date range, state, or NAICS filters.

Why does a small run scan many rows?

The OSHA ZIP contains a large historical CSV. The actor streams it and stops when it finds enough matching rows, but rare filters may require scanning the full file.

Why are some inspections missing?

Not every severe injury report has an inspection ID in the public CSV.

Explore related Automation Lab actors:

Changelog

  • 0.1.0: Initial release with OSHA SIR ZIP discovery, CSV streaming, filters, normalized output, and dataset provenance.

Support

If you need a new filter or output field, open an issue on the actor page and include a sample OSHA report or workflow.