OSHA Injury Data Scraper - US Employer & Workplace-Safety Leads
Pricing
$5.00 / 1,000 establishment injury record scrapeds
OSHA Injury Data Scraper - US Employer & Workplace-Safety Leads
Scrape OSHA ITA Form 300A injury data: every US establishment that filed an annual injury summary — name, EIN, address, NAICS, employee count, injury counts, TRIR/DART rates & lead score. Filter by state, NAICS, size & injury rate. Firmographic B2B leads + monitoring, no browser.
Pricing
$5.00 / 1,000 establishment injury record scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
OSHA Injury Data Scraper — US Employer & Workplace-Safety Leads
Turn the official OSHA Injury Tracking Application (ITA) Form 300A dataset into a clean, structured US employer database with verified employee counts and workplace-injury intelligence. Every record is one establishment that filed an annual injury & illness summary — with company name, EIN, full address, NAICS/industry, annual-average employees, hours worked, the full injury & illness breakdown, computed TRIR/DART rates, and a 0–100 lead score.
No login, no API key, no browser — fast streaming extraction straight from OSHA's open-data files.
Why this OSHA scraper?
Other "OSHA" scrapers only return enforcement inspections (violations & penalties). This actor ships the dataset none of them do — the annual Form 300A injury summaries that employers self-report to OSHA — which is both a far larger universe and a genuine firmographic goldmine:
| Data | Inspection scrapers | This actor |
|---|---|---|
| Source | OSHA enforcement inspections | OSHA ITA Form 300A self-reported summaries |
| Coverage | Inspected sites only | Every establishment that files (~350k+/yr) |
| Annual-average employee count | ❌ | ✅ rare public firmographic |
| Total hours worked | ❌ | ✅ |
| TRIR / DART injury rates (computed) | ❌ | ✅ |
| Injury vs illness breakdown (skin, respiratory, hearing…) | ❌ | ✅ |
| Employer EIN | ❌ | ✅ |
| NAICS code + industry + sector | partial | ✅ |
| Fatality / lost-workday flags | ❌ | ✅ |
| Lead score (0–100) | ❌ | ✅ |
| Filter by state, NAICS, size & injury rate | partial | ✅ |
| Only-new monitoring | ❌ | ✅ |
Who buys these leads?
- Workplace-safety & PPE vendors — target high-TRIR establishments in high-hazard NAICS codes that clearly need safety solutions.
- Workers' compensation insurance brokers & carriers — underwrite and prospect by industry, employee count and injury rate.
- EHS / safety-management software — sell compliance, recordkeeping and incident-tracking tools to employers that file 300As.
- Occupational health clinics & drug-testing providers — find large local employers by NAICS and headcount.
- Industrial supply, training & safety consultants — reach the exact sites with elevated injury burden.
- Sales & RevOps teams — use it as a clean employer database to size and segment accounts by verified employee count, industry and location.
Use cases
- Lead generation — build targeted lists of employers by state, industry (NAICS), company size and injury rate, scored for outreach.
- Account sizing & ICP targeting — one of the only public datasets with real annual-average employee counts per establishment.
- Risk & underwriting intelligence — rank prospects by TRIR, DART rate, fatalities and lost workdays.
- Market research — analyze injury trends by industry, geography and company size across years 2016–present.
- Monitoring — schedule recurring runs and capture only newly filed establishments as a fresh-leads feed.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the OSHA Injury Data Scraper, choose filters (state, NAICS, employee range, injury rate…), and click Start.
- Watch establishment records stream into the dataset table.
- Export as JSON, CSV, Excel, or XML — or pull results via the Apify API.
Input
{"states": ["TX"],"naicsSectors": ["23"],"minEmployees": 50,"minTrir": 4,"sortBy": "leadScore","maxResults": 500}
- states — 2-letter codes (
TX,CA,OH). Empty = whole national file. - naicsCodes — NAICS prefixes (
23construction,2382building-equipment contractors,311food manufacturing). - naicsSectors — 2-digit sector shortcuts (
23,31/32/33,48/49,62,21,22). - cities / zipCodes / industryQuery / companyNameQuery — extra targeting filters.
- establishmentTypes —
private,stateGovernment,localGovernment. - minEmployees / maxEmployees — target larger (or smaller) employers.
- minRecordableCases / minTrir / hasInjuriesOnly / hasFatalitiesOnly / hasLostTimeOnly — surface high-injury, high-intent sites.
- withEinOnly / minLeadScore — quality gates.
- yearFilingFor — reporting year (default: latest available; OSHA publishes 2016–present).
- sortBy —
leadScore,employeesHigh,trirHigh,recordableCasesHigh,lostWorkdaysHigh,fatalities,name,none. - maxResults / deduplicateResults — output controls.
- monitorMode / monitorKey — only-new-establishments feed (see below).
Output
One record per establishment:
{"recordType": "establishment","establishmentName": "Acme Roofing & Sheet Metal","companyName": "Acme Roofing LLC","ein": "742318890","einFormatted": "74-2318890","street": "1200 Industrial Blvd","city": "Houston","state": "TX","zipCode": "77032","fullAddress": "1200 Industrial Blvd, Houston, TX, 77032","naicsCode": "238160","naicsSector": "Construction","industryDescription": "Roofing contractors","establishmentType": "1","establishmentTypeLabel": "Private","annualAverageEmployees": 240,"employeeSizeTier": "Medium (50-249)","totalHoursWorked": 498000,"yearFilingFor": 2025,"totalDeaths": 0,"totalDafwCases": 9,"totalDjtrCases": 4,"totalOtherCases": 6,"totalRecordableCases": 19,"dartCases": 13,"totalLostWorkdays": 187,"totalInjuries": 17,"totalIllnesses": 2,"trir": 7.63,"dartRate": 5.22,"hasInjuries": true,"hasFatalities": false,"hasLostTimeInjuries": true,"leadScore": 71,"leadSignals": ["High injury rate (TRIR 7.63)", "Many lost-time cases"],"sourceUrl": "https://www.osha.gov/Establishment-Specific-Injury-and-Illness-Data","sourceFields": { "id": "...", "establishment_id": "...", "...": "every raw OSHA column" },"scrapedAt": "2026-06-20T12:00:00.000Z"}
Every raw OSHA column is preserved under sourceFields, so no source data is ever lost.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run weekly/monthly with
monitorModeto capture newly filed establishments as a fresh-leads pipeline. - Webhooks — trigger downstream actions (CRM import, Slack alert) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/osha-injury-data-scraper').call({states: ['CA'],naicsSectors: ['31', '32', '33'],minEmployees: 100,sortBy: 'trirHigh',maxResults: 1000,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} establishment leads`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push new leads straight into your CRM.
- Slack — get notified when a monitored search finds new establishments.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find Texas construction employers with 50+ staff and a TRIR above 4" and let it run this scraper for you.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More scrapers from scrapesage
Build a complete US-B2B & compliance lead-gen stack from official public data:
- EPA ECHO Scraper — facility environmental-compliance & violation leads.
- MSHA Mine Operations Scraper — mine, quarry & aggregate operator leads.
- FMCSA Trucking Scraper — motor carrier & trucking-company leads.
- USDA FSIS Establishment Scraper — meat, poultry & egg plant leads.
- SBA Loan Leads Scraper — financed small-business leads.
- PPP Loan Data Scraper — PPP borrower firmographics.
- Form 5500 ERISA Scraper — 401(k) & benefit-plan sponsor leads.
- Visa Sponsor Leads Scraper — PERM, H-2A & H-2B sponsoring employers.
- US Business Formation Scraper — newly registered companies.
Tips
- Memory: the latest year is a single ~85 MB CSV (~350k rows) and runs comfortably at the default. Older years are ZIP files — give the run 4 GB for the fastest scan.
- High-intent lists: combine
minTrir(4–8) with a high-hazardnaicsSectorsvalue (23construction,31–33manufacturing,48/49transportation) to find sites that most need safety/insurance solutions. - Big employers: set
minEmployeesandsortBy: "employeesHigh"to build an account list of the largest local employers by industry. - Cost control: filters are applied before the cap, so a tight filter + small
maxResultskeeps runs fast and cheap.
FAQ
What is OSHA ITA Form 300A data? Under OSHA's recordkeeping rule, establishments in covered industries electronically submit their annual "Summary of Work-Related Injuries and Illnesses" (Form 300A) each year. OSHA publishes the de-identified establishment summaries as open data — this actor structures and enriches them.
How is this different from OSHA inspection scrapers? Inspection scrapers return enforcement events (citations & penalties) for the minority of sites OSHA inspected. This actor returns the self-reported annual injury summaries from every establishment that files — a much larger universe, plus employee counts, hours, EIN and computed injury rates.
Does it include contact emails or phone numbers? No — OSHA's 300A dataset is firmographic (name, address, industry, size, injuries) and does not contain emails or phones. Pair it with a contact-enrichment step if you need direct contacts. Fields are null only when the source omits them.
Which years are available? OSHA publishes data from 2016 to the present. Leave yearFilingFor empty for the latest year, or set a specific year.
What are TRIR and DART rate? TRIR (Total Recordable Incident Rate) = recordable cases × 200,000 ÷ hours worked. DART rate counts only days-away/restricted/transfer cases. 200,000 = 100 full-time workers × 2,000 hours/year — so both are "per 100 full-time workers."
Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.
How do I get only new establishments? Turn on monitorMode, set a monitorKey, and schedule the run — the actor remembers what it has already emitted and outputs only newly filed establishments.
Is this legal? This actor collects publicly available US-government open data. You are responsible for using the data in compliance with applicable laws and OSHA's terms.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.