DOL Enforcement Rollup — Employer Wage-Theft Violator API
Pricing
from $4.40 / 1,000 results
DOL Enforcement Rollup — Employer Wage-Theft Violator API
Roll up US Department of Labor enforcement actions by employer. Aggregates WHD wage-theft cases (back wages, penalties, employees affected) with optional EBSA/ERISA into per-employer summaries and repeat-violator flags.
Pricing
from $4.40 / 1,000 results
Rating
0.0
(0)
Developer
Kyle Maloney
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Roll up US Department of Labor enforcement actions by employer. Aggregates Wage and Hour Division (WHD) cases — back wages, civil money penalties, employees affected, repeat/willful flags — into per-employer summaries with repeat-violator flags, or returns one normalized row per case.
Who it's for
- Procurement & vendor risk teams screening suppliers and staffing agencies.
- ESG / labour-rights analysts and journalists tracking wage theft.
- Union research and worker-advocacy organisations.
- Diligence teams pricing labour liability into an acquisition.
- AI agents needing a "check this employer's DOL enforcement history" tool.
It never tells you an employer is clean when it did not get an answer
This is a screening product, so the expensive direction of wrong is the negative: an employer reported as having no enforcement history because a request failed. Three guarantees:
- The DOL endpoint is health-checked live before any result is returned — reachable, still serving the columns the mapper reads, still applying the filter (a negative control query that must match nothing), no unknown value in the repeat/willful vocabulary, and a positive canary that must return rows.
- If no source answers, the run FAILS and bills nothing. It does not return an empty dataset, which would read as a clean record.
- Every row says how complete it is —
enforcement_history_complete,partial_results,sources_failed,result_truncated. When the answer is incomplete, a negativerepeat_violatorverdict is emitted asnull, neverfalse, andrepeat_violator_basissays why.
Zero rows with every source healthy is a real answer — a genuine clean result — and the log says so explicitly.
Getting a key
Free and instant at https://dataportal.dol.gov/registration. Pass it as
apiKey, or set the DOL_API_KEY environment variable. Without one the run
fails with an actionable message rather than returning an empty dataset.
Example input
{"mode": "rollup","state": "CA","sinceDate": "2023-01-01","maxResults": 500}
Look up one employer's full history:
{ "mode": "cases", "employer": "tyson foods", "maxResults": 1000 }
Output fields
Every field below is declared in the dataset schema. Fields are nullable, and
null means DOL does not publish it or the value was not determinable —
never "we checked and it is zero".
Employer identity (both modes)
| Field | What it is |
|---|---|
employer_name | Employer name, whitespace-normalised. |
employer_name_raw | The name exactly as DOL publishes it. |
legal_name | Registered legal name, where DOL publishes it separately from the trade name. |
agency | WHD, EBSA, OFCCP, or MULTIPLE on a rollup spanning agencies. |
agencies | Every agency contributing to a rollup row. |
source_agency | Which DOL agency produced a per-case row. |
naics · naics_description | Industry code and its description. |
city · state · zip · street_address | Establishment location. |
source_url | DOL enforcement-data reference page. |
retrieved_at | When this run pulled the data. |
data_load_date | Date DOL loaded the record into the published extract. |
Per-case rows (mode: "cases")
| Field | What it is |
|---|---|
case_id | DOL case identifier. |
back_wages | Back wages agreed to be paid on the case. |
back_wages_minimum_wage · back_wages_overtime | The FLSA split, where DOL breaks it out. |
civil_penalty | Sum of the per-statute *_cmp_assd_amt penalty columns. |
civil_penalty_case_total | The case-level penalty DOL publishes in cmp_assd. |
civil_penalty_matches_case_total | true when those two reconcile. false means DOL assessed a penalty not broken out by statute, so civil_penalty understates it. null when DOL published no case total. |
employees_affected | Employees found in violation (ee_violtd_cnt). |
employees_paid | Employees the employer agreed to pay (ee_atp_cnt) — a different number. |
minors_employed_illegally | Minors employed in violation of FLSA child-labour provisions. |
violation_count | Violations recorded on the case. |
violation_type | The single largest statute violated. |
violation_types_all | Every statute with a recorded violation, semicolon-separated — a multi-statute case is not one label. |
repeat_violator_flag | true when DOL marks the case repeat or willful. |
repeat_violator_code | The raw code: R, W, RW or N/A. |
finding_start_date · finding_end_date | Investigation period. |
Per-employer rollup rows (mode: "rollup", the default)
| Field | What it is |
|---|---|
total_cases | Cases rolled into this employer. A floor, not a count, when total_cases_is_complete is false. |
total_cases_is_complete | false when the fetch was capped or a source failed. |
total_back_wages · total_civil_penalties · total_employees · total_violations | Sums across the employer's cases. |
total_civil_penalties_case_reported | Sum of DOL's case-level penalty column, for comparison with total_civil_penalties. |
total_employees_paid · total_minors_employed_illegally | Sums of the corresponding per-case fields. |
total_back_wages_minimum_wage · total_back_wages_overtime | The FLSA split, summed. |
largest_single_case_back_wages | Separates one large case from a long tail of small ones. |
first_finding · last_finding | Earliest start and latest end across the employer's cases. |
repeat_violator | true / false / null when not determinable. |
repeat_violator_basis | case_count_and_whd_flag, whd_repeat_or_willful_flag, case_count, no_indicator_found, or not_determinable_incomplete_data. Read this before acting on a negative. |
whd_repeat_or_willful_cases | How many of the employer's cases carry the DOL designation. |
distinct_source_names · source_names_merged | Grouping normalises corporate suffixes, so "ABC Foods Inc" and "ABC Foods LLC" collapse together. These let you audit any merge. |
Run integrity — on every row
| Field | What it is |
|---|---|
enforcement_history_complete | The field to read before acting on a negative. true only when every requested source answered and nothing was truncated. |
partial_results | true when at least one requested source did not answer. Computed from the actual outcomes every run, never a hard-coded false. |
sources_requested · sources_ok · sources_failed · sources_failed_detail | Exactly which DOL sources answered, which did not, and why. |
result_truncated · truncated_sources | true when a source returned exactly maxResults cases, so more exist than were counted. |
run_mode | rollup or cases. |
Use as an MCP tool
Exposed to AI agents via mcp.apify.com as a "check an employer's DOL
enforcement history" tool. The per-source status fields matter here: an agent
can distinguish a verified clean record from an unavailable source instead of
reporting the second as the first.
FAQ
Is this a background check? No. It is a screening tool over DOL's own published enforcement extract, not a determination about any employer. Confirm against the DOL case record before acting.
Why is repeat_violator sometimes null? Because the fetch was capped by
maxResults, or a source did not answer. total_cases is then a floor, and a
"not a repeat violator" verdict would be a claim the data cannot support. Raise
maxResults for a determinate answer.
Why did I get zero rows? If sources_failed is null on the log line, every
source answered and genuinely had nothing — a real clean result for those
filters. Otherwise the run fails loudly instead.
Which agencies are covered? WHD by default. EBSA (ERISA Form 5500 penalties)
is opt-in via sources. OFCCP is scaffolded but not enabled — no keyless
DOL-portal endpoint has been verified for it.
How far back does it go? WHD publishes concluded compliance actions from FY2005 onward.
Source
US Department of Labor Open Data API v4 (apiprod.dol.gov/v4/get), agency
WHD, endpoint enforcement. Free key required. DOL caps a single response at
6 MB, so this actor paginates in verified-safe pages and shrinks automatically
rather than failing.
Pricing (Pay Per Result)
Billed per row returned, with graduated discounts on paid Apify plans. A run that cannot reach DOL fails instead of billing.
Related actors
- Bank Enforcement Tracker — OCC / FDIC enforcement actions by institution.
- License Verifier — professional and occupational licence status, 19 boards.
- KYB Company Verifier · US Business Entity Search — entity registration and standing, to attach an enforcement history to a verified legal entity.