---
title: "List MSHA violations"
method: GET
path: "/v1/employers/{employer_id}/msha-violations"
tags: ["Employers"]
---

# List MSHA violations

`GET /v1/employers/{employer_id}/msha-violations`

## Request

- Base URL: `https://api.fastdol.com`
- URL: `https://api.fastdol.com/v1/employers/{employer_id}/msha-violations`
- Auth: API key in header `X-Api-Key`
- TypeScript: <https://skmtc.dev/fastdol/apis/fastdol-api/docs/v1/employers/:employer_id/msha-violations/get.ts> (a function with typed inputs; its response is checked against the schema)

Per-citation MSHA mine-safety enforcement records for an
employer.

Each row is one Mine Safety and Health Administration citation
carrying its violation_no, the mine it occurred at, the section of
the Mine Act cited, the agency's significant-and-substantial (S&S)
flag, the negligence classification, proposed vs paid penalty, and
whether the cited party was the mine operator or an on-site
contractor. Aggregate rollups already live on the employer profile
(`msha_violations`, `msha_assessed_penalties`); this endpoint backs
them with the underlying citation roster.

Lookup: MSHA records carry no zip5 (mines are keyed by mine_id +
county + state, not ZIP), so the join key is `(name_normalized,
state)` resolved through the employer's own profile row. Mirrors
the NLRB endpoint pattern.

Ordered: highest proposed_penalty first, then most-recent
violation_date -- the citations that matter most surface on page 1.

Metered: one lookup per call, same as the other detail endpoints.

## Path parameters

- `employer_id` string, required

## Query parameters

- `limit` integer
- `offset` integer

## Headers

- `X-Api-Key` string

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/fastdol/apis/fastdol-api.md) - [All operations](https://skmtc.dev/fastdol/apis/fastdol-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fastdol/apis/fastdol-api/revisions/c70ba279bbb2?raw)
