Search EPA Enforcement Cases
epa_search_violationsRead-onlyIdempotent
Search EPA civil and criminal enforcement cases by state, regulatory program, or date range. Returns case identifier, regulated facility name and Registry ID, programs involved, penalty assessed, settlement date, and case type. Designed for area-level violation discovery — for a single known facility's enforcement history use epa_get_facility instead. At least one of state or zip_code is required.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of cases to return (1–100) | |
| state | No | 2-letter US state abbreviation to filter cases (e.g. "TX", "CA") | |
| program | No | Filter by regulatory program: CAA=Clean Air Act, CWA=Clean Water Act, RCRA=hazardous waste, SDWA=drinking water, CERCLA=Superfund, FIFRA=pesticides, TSCA=toxic substances | |
| zip_code | No | 5-digit ZIP code to filter cases near that area | |
| case_type | No | Filter by case type: civil (regulatory violations), criminal (willful violations), or all | all |
| date_filed_end | No | End date for case filing date range (ISO 8601: YYYY-MM-DD) | |
| date_filed_start | No | Start date for case filing date range (ISO 8601: YYYY-MM-DD) |
Output Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cases | No | Matching enforcement cases | |
| error | No | Present when the call failed. Absent on success. | |
| message | No | Recovery hint when no cases are found — echoes filters and suggests broadening. Absent when cases are returned. | |
| totalCount | No | Total cases matched before the limit was applied |