Workplace Compliance — OSHA, EPA & DOL Profile
Pricing
Pay per usage
Workplace Compliance — OSHA, EPA & DOL Profile
Unified compliance profile combining **OSHA safety inspections**, **EPA ECHO environmental compliance**, and **DOL Wage & Hour enforcement** data for any U.S. company. Get a single risk-scored report with penalties, violations, back wages, and significant findings — all from one search.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
ryan clinton
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Workplace Compliance Intelligence
Unified compliance profile combining OSHA safety inspections, EPA ECHO environmental compliance, and DOL Wage & Hour enforcement data for any U.S. company. Get a single risk-scored report with penalties, violations, back wages, and significant findings -- all from one search.
What does this actor do?
This actor searches three major federal compliance databases in parallel and merges the results into a single ComplianceProfile with an automated risk assessment:
| Database | Agency | What it covers |
|---|---|---|
| OSHA Inspections | Dept. of Labor | Workplace safety inspections, citations, violation types (Serious, Willful, Repeat), penalties, fatality/catastrophe investigations |
| EPA ECHO | Environmental Protection Agency | Facility-level environmental compliance under Clean Air Act (CAA), Clean Water Act (CWA), RCRA, SDWA, TRI; non-compliance quarters, formal actions |
| WHD Enforcement | Dept. of Labor, Wage & Hour Division | FLSA minimum wage/overtime violations, child labor, FMLA, H-1B/H-2A visa violations, Davis-Bacon, back wages, repeat violator flags |
The output is a structured JSON compliance profile with a computed risk level (Low / Medium / High) based on the severity and frequency of findings across all three sources.
Why use this actor?
- One search, three databases -- no need to run separate queries against OSHA, EPA, and WHD
- Risk scoring -- automated assessment with weighted scoring for fatalities, repeat violations, child labor, significant non-compliance, and large penalties
- Significant findings summary -- plain-English list of the most important compliance issues
- Structured output -- clean, typed JSON ready for dashboards, reports, or downstream processing
- Due diligence -- screen companies before partnerships, acquisitions, or contract awards
- Compliance monitoring -- periodically check suppliers, contractors, or portfolio companies
Use cases
- M&A due diligence: Screen acquisition targets for workplace safety and environmental compliance risks
- Supply chain compliance: Evaluate suppliers and contractors for labor and safety violations
- Government contracting: Check vendors against SAM.gov debarment-adjacent data (OSHA/EPA/WHD records)
- ESG reporting: Gather quantitative compliance data for Environmental, Social, and Governance reports
- Investigative journalism: Research company compliance histories across multiple federal databases
- Insurance underwriting: Assess workplace risk profiles before issuing policies
- Legal research: Gather enforcement history for litigation support or regulatory filings
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
dryRun | boolean | No | true | When true (or no DOL API key provided), returns a sample compliance profile. Set to false with an API key for real data. |
dolApiKey | string | For real data | -- | Your DOL Open Data Portal API key. Register free at https://dataportal.dol.gov/registration. Required for OSHA and WHD data. Not needed for EPA ECHO or dry run mode. |
companyName | string | Yes | -- | Company or business name to search across all 3 databases. Supports partial matching. Examples: WALMART, TYSON, AMAZON. |
state | string | No | -- | U.S. state filter (2-letter code, e.g., TX, CA). Narrows results across all 3 databases. |
city | string | No | -- | City name for additional context (used in EPA ECHO searches). |
naicsCode | string | No | -- | NAICS industry code prefix (2-6 digits). Applied to OSHA and EPA ECHO searches. |
maxOshaResults | integer | No | 25 | Maximum OSHA inspection records to retrieve (1-100). |
maxEchoResults | integer | No | 25 | Maximum EPA ECHO facility records to retrieve (1-100). |
maxWhdResults | integer | No | 25 | Maximum DOL WHD enforcement cases to retrieve (1-100). |
includeOshaViolations | boolean | No | true | Fetch detailed violation/citation records for each OSHA inspection. Requires extra API calls. |
Getting a DOL API Key
OSHA and WHD data require a free API key from the Department of Labor:
- Go to https://dataportal.dol.gov/registration
- Register for a free account
- Your API key will be emailed to you
- Enter the key in the
dolApiKeyinput field (it is stored securely as a secret)
EPA ECHO data is publicly accessible and does not require any API key.
Output format
The actor outputs a single ComplianceProfile object to the default dataset:
{"companyName": "TYSON","searchState": "AR","searchCity": null,"generatedAt": "2025-01-15T12:00:00.000Z","summary": {"overallRiskLevel": "High","totalViolations": 47,"totalPenalties": 285000,"totalBackWages": 120000,"oshaInspections": 12,"epaFacilities": 8,"whdCases": 5,"significantFindings": ["2 OSHA fatality/catastrophe inspection(s)","47 OSHA violations across 12 inspections","$285,000 in OSHA penalties","3 EPA facilities in non-compliance","2 EPA formal enforcement actions","$120,000 in back wages owed"]},"oshaRecord": { ... },"epaRecord": { ... },"whdRecord": { ... }}
Summary section
The summary object provides the high-level risk assessment:
- overallRiskLevel:
Low,Medium, orHighbased on weighted scoring - totalViolations: Combined OSHA + WHD violation count
- totalPenalties: Combined penalties across all 3 databases (in USD)
- totalBackWages: WHD back wages owed to employees (in USD)
- oshaInspections / epaFacilities / whdCases: Record counts per database
- significantFindings: Plain-English list of the most important compliance issues
OSHA record
{"available": true,"inspections": [{"activityNumber": 1234567,"establishmentName": "TYSON FOODS INC - SPRINGDALE","siteAddress": "600 W Oak St","siteCity": "Springdale","siteState": "AR","siteZip": "72764","inspectionType": "A","inspectionTypeDescription": "Fatality/Catastrophe","safetyOrHealth": "Safety","naicsCode": "311615","openDate": "2024-03-15T00:00:00","closeCaseDate": "2024-08-20T00:00:00","violations": [{"citationId": "01001","standard": "1910.147(c)(1)","violationType": "Serious","currentPenalty": 15000,"initialPenalty": 15000,"gravity": "10"}],"violationCount": 1,"totalPenalties": 15000}],"totalInspections": 12,"totalViolations": 35,"totalPenalties": 285000,"fatalityInspections": 2,"complaintInspections": 4}
Inspection type codes: A = Fatality/Catastrophe, B = Complaint, C = Referral, F = Follow-up, H = Planned, J = Unprogrammed Other, K = Programmed Other, L = Other.
Violation type codes: S = Serious, W = Willful, R = Repeat, O = Other, U = Unclassified.
EPA ECHO record
{"available": true,"facilities": [{"registryId": "110012345678","facilityName": "TYSON FOODS SPRINGDALE","city": "SPRINGDALE","state": "AR","programs": ["CAA", "CWA", "RCRA"],"complianceStatus": "Significant Violation","significantNoncompliance": true,"quartersInNoncompliance": 4,"inspectionCount": 5,"lastInspectionDate": "01/15/2025","totalPenalties": 50000,"formalActionCount": 2}],"totalFacilities": 8,"facilitiesInNoncompliance": 3,"totalPenalties": 75000,"totalFormalActions": 4,"programsCovered": ["CAA", "CWA", "RCRA", "TRI"]}
Environmental programs: CAA = Clean Air Act, CWA = Clean Water Act, RCRA = Resource Conservation and Recovery Act, SDWA = Safe Drinking Water Act, TRI = Toxics Release Inventory.
WHD record
{"available": true,"cases": [{"caseId": 1234567,"tradeName": "TYSON FOODS","legalName": "Tyson Foods Inc","city": "Springdale","state": "AR","naicsDescription": "Poultry Processing","totalViolations": 12,"totalPenalties": 0,"totalBackWages": 120000,"employeesViolated": 45,"findingsStartDate": "2023-01-01T00:00:00","findingsEndDate": "2024-06-30T00:00:00","flsaRepeatViolator": false,"childLaborViolations": 0,"topStatutes": ["FLSA"]}],"totalCases": 5,"totalViolations": 12,"totalPenalties": 0,"totalBackWages": 120000,"employeesAffected": 45,"repeatViolator": false,"childLaborCases": 0}
Statutes tracked: FLSA (Fair Labor Standards Act), FMLA (Family and Medical Leave Act), H-1B, H-2A, H-2B (visa programs), SCA (Service Contract Act), DBRA (Davis-Bacon and Related Acts), MSPA (Migrant and Seasonal Agricultural Worker Protection Act), Child Labor.
Risk scoring methodology
The risk assessment uses a weighted point system:
| Finding | Points |
|---|---|
| OSHA fatality/catastrophe inspections | +30 |
| Child labor violation cases | +30 |
| Flagged as FLSA repeat violator | +25 |
| OSHA penalties > $50,000 | +20 |
| EPA facilities in non-compliance | +20 |
| OSHA violations > 10 | +15 |
| Back wages > $100,000 | +15 |
| EPA formal enforcement actions | +10 |
| Employees affected > 50 | +10 |
Risk levels: Low (0-19 points), Medium (20-49 points), High (50+ points).
Dry run mode
By default, dryRun is set to true. This returns a realistic sample compliance profile so you can preview the output format and test integrations without needing an API key. Set dryRun to false and provide a DOL API key to search real data.
Dry run mode is also activated automatically when no DOL API key is provided. This ensures the actor always passes Apify platform auto-tests.
API data sources
| Source | API | Authentication | Rate limits |
|---|---|---|---|
| OSHA Inspections | DOL Open Data Portal v4 | API key (free) | Shared with WHD; 500ms delay between calls |
| EPA ECHO | EPA ECHO REST Services | None (public) | No documented limit |
| WHD Enforcement | DOL Open Data Portal v4 | API key (free) | Shared with OSHA; 500ms delay between calls |
All three databases are searched in parallel where possible. OSHA and WHD share the same DOL API rate limit, so a small delay is introduced between those two requests.
The actor uses exponential backoff retry logic (up to 3 retries) with special handling for HTTP 429 (rate limit) responses.
Example input
Basic search
{"dryRun": false,"dolApiKey": "YOUR_DOL_API_KEY","companyName": "TYSON","state": "AR"}
Broad search with more results
{"dryRun": false,"dolApiKey": "YOUR_DOL_API_KEY","companyName": "WALMART","maxOshaResults": 100,"maxEchoResults": 50,"maxWhdResults": 50,"includeOshaViolations": true}
Quick search without OSHA violation details
{"dryRun": false,"dolApiKey": "YOUR_DOL_API_KEY","companyName": "AMAZON","state": "CA","includeOshaViolations": false}
Integrations and programmatic usage
Apify API
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~workplace-compliance-intel/runs" \-H "Authorization: Bearer YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"dryRun": false,"dolApiKey": "YOUR_DOL_API_KEY","companyName": "TYSON","state": "AR"}'
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("ryanclinton/workplace-compliance-intel").call(run_input={"dryRun": False,"dolApiKey": "YOUR_DOL_API_KEY","companyName": "TYSON","state": "AR",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"Company: {item['companyName']}")print(f"Risk: {item['summary']['overallRiskLevel']}")for finding in item["summary"]["significantFindings"]:print(f" - {finding}")
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('ryanclinton/workplace-compliance-intel').call({dryRun: false,dolApiKey: 'YOUR_DOL_API_KEY',companyName: 'TYSON',state: 'AR',});const { items } = await client.dataset(run.defaultDatasetId).listItems();const profile = items[0];console.log(`Risk Level: ${profile.summary.overallRiskLevel}`);console.log(`Findings: ${profile.summary.significantFindings.join('; ')}`);
Performance
- Typical run time: 5-15 seconds depending on result volume and API responsiveness
- Compute units: Minimal (API calls only, no browser or heavy processing)
- Memory: 256 MB is sufficient for all use cases
- Parallel execution: EPA ECHO runs concurrently with OSHA; WHD starts after a 500ms delay to respect DOL rate limits
Limitations
- OSHA and WHD data require a DOL API key (free registration)
- Company name matching is partial/substring-based -- broad names may return unrelated results
- EPA ECHO penalty amounts may not be available for all facilities
- OSHA violation details require additional API calls per inspection batch (50 at a time)
- Historical data availability varies by database; some records may go back decades, others only a few years
- This actor searches U.S. federal databases only; it does not cover state-level OSHA plans or international data
Related actors
These actors on the Apify platform complement the Workplace Compliance Intelligence actor:
- OSHA Inspection & Citation Search -- standalone deep-dive into OSHA data
- Company Deep Research Agent -- comprehensive company intelligence
- SAM.gov Contract Monitor -- federal contract and debarment data
- CFPB Consumer Complaints -- consumer complaint data
- OpenCorporates Search -- global corporate registry data
- Workplace Compliance MCP Server -- MCP server exposing these same data sources as AI tools
- Compliance Intelligence MCP -- broader compliance MCP server
Support
If you have questions or encounter issues, please open an issue on the actor page or contact the author through Apify.