Workplace Compliance — OSHA, EPA & DOL Profile avatar

Workplace Compliance — OSHA, EPA & DOL Profile

Pricing

Pay per usage

Go to Apify Store
Workplace Compliance — OSHA, EPA & DOL Profile

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

ryan clinton

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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:

DatabaseAgencyWhat it covers
OSHA InspectionsDept. of LaborWorkplace safety inspections, citations, violation types (Serious, Willful, Repeat), penalties, fatality/catastrophe investigations
EPA ECHOEnvironmental Protection AgencyFacility-level environmental compliance under Clean Air Act (CAA), Clean Water Act (CWA), RCRA, SDWA, TRI; non-compliance quarters, formal actions
WHD EnforcementDept. of Labor, Wage & Hour DivisionFLSA 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

ParameterTypeRequiredDefaultDescription
dryRunbooleanNotrueWhen true (or no DOL API key provided), returns a sample compliance profile. Set to false with an API key for real data.
dolApiKeystringFor 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.
companyNamestringYes--Company or business name to search across all 3 databases. Supports partial matching. Examples: WALMART, TYSON, AMAZON.
statestringNo--U.S. state filter (2-letter code, e.g., TX, CA). Narrows results across all 3 databases.
citystringNo--City name for additional context (used in EPA ECHO searches).
naicsCodestringNo--NAICS industry code prefix (2-6 digits). Applied to OSHA and EPA ECHO searches.
maxOshaResultsintegerNo25Maximum OSHA inspection records to retrieve (1-100).
maxEchoResultsintegerNo25Maximum EPA ECHO facility records to retrieve (1-100).
maxWhdResultsintegerNo25Maximum DOL WHD enforcement cases to retrieve (1-100).
includeOshaViolationsbooleanNotrueFetch 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:

  1. Go to https://dataportal.dol.gov/registration
  2. Register for a free account
  3. Your API key will be emailed to you
  4. Enter the key in the dolApiKey input 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, or High based 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:

FindingPoints
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

SourceAPIAuthenticationRate limits
OSHA InspectionsDOL Open Data Portal v4API key (free)Shared with WHD; 500ms delay between calls
EPA ECHOEPA ECHO REST ServicesNone (public)No documented limit
WHD EnforcementDOL Open Data Portal v4API 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

{
"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 ApifyClient
client = 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

These actors on the Apify platform complement the Workplace Compliance Intelligence actor:

Support

If you have questions or encounter issues, please open an issue on the actor page or contact the author through Apify.