OSHA Severe Injury Reports Scraper
Pricing
Pay per event
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
Maintained by CommunityActor 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.
| Field | Description |
|---|---|
reportId | OSHA severe injury report ID |
eventDate | Incident date in ISO format |
employer | Employer name from OSHA |
address, city, state, zip | Incident location fields |
latitude, longitude | OSHA geocode coordinates where available |
primaryNaics | Primary NAICS code |
hospitalizedCount | Number of hospitalizations |
amputationCount | Number of amputations |
lossOfEyeCount | Number of eye-loss events |
inspectionId | OSHA inspection ID where present |
finalNarrative | OSHA narrative description |
natureTitle | Injury nature description |
partOfBodyTitle | Body part affected |
eventTitle | Event/exposure description |
sourceTitle | Source of injury |
datasetFilename | OSHA ZIP filename used |
datasetUrl | Source ZIP URL |
scrapedAt | Actor 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
| Input | Purpose |
|---|---|
maxItems | Maximum matching reports to save |
startDate | Include reports on or after a date |
endDate | Include reports on or before a date |
states | State names or USPS abbreviations |
naicsPrefixes | Match Primary NAICS code prefixes |
employerQuery | Case-insensitive employer substring |
cityQuery | Case-insensitive city substring |
hospitalizedOnly | Require hospitalization count greater than zero |
amputationOnly | Require amputation count greater than zero |
lossOfEyeOnly | Require loss-of-eye count greater than zero |
datasetUrl | Optional direct OSHA ZIP URL |
includeRawRecord | Include 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
- Open the actor on Apify.
- Enter your filters.
- Set
maxItemsto a small number for a first run. - Start the actor.
- Download results from the Dataset tab.
- 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
endDateempty to include the newest OSHA dataset month. - Use
includeRawRecordonly when you need audit-grade raw CSV fields. - Combine
startDatewith 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 ApifyClientclient = 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().itemsprint(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:
- Run monthly for selected states and NAICS sectors.
- Store the dataset in Apify.
- Send new records to Slack or email.
- Review narratives and employer names.
- 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.
Related scrapers
Explore related Automation Lab actors:
- https://apify.com/automation-lab/osha-inspections-violations-scraper
- https://apify.com/automation-lab/cpsc-recalls-scraper
- https://apify.com/automation-lab/fda-recalls-scraper
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.