KeyVex
Regulatory & compliance

EPA Enforcement Cases

Every EPA-lead federal CIVIL enforcement case back to ~1977 — 135,000+ cases flattened to one record each: defendants, statutes cited (CWA, CAA, RCRA, FIFRA, TSCA, CERCLA, SDWA, EPCRA), federal + state penalties, SEP and compliance-action dollars, settlement lodged/entered dates, and the facilities involved with FRS registry IDs and NAICS codes. Criminal prosecutions are a separate EPA system and are NOT included. Refreshed weekly from EPA's Saturday data drop.

EndpointGET /v1/epa-enforcement
SourceEPA ECHO (ICIS FE&C bulk file)
Authx-api-key — a free key works

What it returns

One record per case (doc ID = ICIS case number, e.g. 02-2026-7201 = Region 2, FY2026). Penalty dollars come from the CASE_PENALTIES join — the header totals EPA publishes are blank on most modern cases. Facility state drives the state filter. See the live example below for the full field set.

Filters

case_numberDirect lookup by ICIS case number, format RR-YYYY-NNNN (e.g., 'HQ-1998-0303').
defendant_nameCase-insensitive substring against defendant names + case name (e.g., 'caterpillar', 'exxon').
stateTwo-letter state code of a named facility (e.g., 'TX'). Derived from the case's facilities.
primary_statuteLead statute code (RANK_ORDER=1): CWA (Clean Water Act), CAA (Clean Air Act), FIFRA (pesticides), SDWA (drinking water), RCRA (hazardous waste), TSCA (toxic substances), CERCLA (Superfund), EPCRA (right-to-know). Rare others: AIM, MPRSA, MWTA.
activity_typeadministrative = EPA's own formal actions (~93% of cases); judicial = DOJ-filed civil court cases.
min_penaltyOnly cases with fed_penalty >= this amount (USD).
fiscal_yearEPA fiscal year of the case (e.g., 2024).
sincestatus_date lower bound (YYYY-MM-DD inclusive).
untilstatus_date upper bound (YYYY-MM-DD inclusive).
sort_byDefault: status_date. fed_penalty surfaces the largest federal penalties (cannot be combined with since/until).
sort_orderDefault: desc.
limitMaximum records to return. Default 50, max 500.

Example request

curl "https://api.keyvex.com/v1/epa-enforcement?limit=1" \
  -H "x-api-key: YOUR_KEY"

Response

{
  "results": [
    {
      "penalty_collected": 0,
      "status_date": "1999-07-01",
      "defendants": [
        "CATERPILLAR, INC."
      ],
      "primary_statute": "CAA",
      "case_name": "CATERPILLAR, INC.",
      "defendants_count": 1,
      "federal_cost_recovery": null,
      "source_url": "https://echo.epa.gov/enforcement-case-report?id=HQ-1998-0303",
      "state_local_penalty": 6250000,
      "compliance_action_cost": 250000001,
      "fiscal_year": 1998,
      "activity_type": "judicial",
      "activity_id": "57374",
      "enf_outcome": "Final Order With Penalty",
      "summary_text": "CATERPILLAR INC. PRODUCED 320,000 ENGINES CONTAINING DEFEAT DEVICES SINCE 1988. THESE ENGINES RESULTED IN EXCESS NOX EMISSIONS OF 2.1 MILLION TONS. THE COMPANY WILL PAY A CIVIL PENALTY OF $25 MILLION, AND WILL CONDUCT ENVIRONMENTAL PROJECTS COSTING $35 MILLION.",
      "case_number": "HQ-1998-0303",
      "state": "IL",
      "settlement_lodged_date": "1998-10-22",
      "settlements_count": 1,
      "state_local_cost_recovery": null,
      "voluntary_self_disclosure": false,
      "doj_docket_number": null,
      "activity_type_code": "JDC",
      "facilities_count": 6,
      "multimedia": false,
      "sep_amount": 0,
      "statutes": [
        "CAA"
      ],
      "facilities": [
        {
          "frs_registry_id": "110041082949",
          "name": "CATERPILLAR INC",
          "city": "MOSSVILLE",
          "state": "IL",
          "naics_code": "326299"
        },
        {
          "frs_registry_id": "110041082949",
          "name": "CATERPILLAR INC",
          "city": "MOSSVILLE",
          "state": "IL",
          "naics_code": "333618"
        },
        {
          "frs_registry_id": "110041082949",
          "name": "CATERPILLAR INC",
          "city": "MOSSVILLE",
          "state": "IL",
          "naics_code": "326299"
        },
        {
          "frs_registry_id": "110041082949",
          "name": "CATERPILLAR INC",
          "city": "MOSSVILLE",
          "state": "IL",
          "naics_code": "326299"
        },
        {
          "frs_registry_id": "110041082949",
          "name": "CATERPILLAR INC",
          "city": "MOSSVILLE",
          "state": "IL",
          "naics_code": "333618"
        },
        {
          "frs_registry_id": "110041082949",
          "name": "CATERPILLAR INC",
          "city": "MOSSVILLE",
          "state": "IL",
          "naics_code": "333618"
        }
      ],
      "fed_penalty": 18750000,
      "settlement_entered_date": "1999-07-01",
      "activity_status": "Concluded",
      "region_code": "HQ",
      "_first_seen_at": "2026-07-08T18:45:40.748Z",
      "_last_history_at": "2026-07-08T18:45:40.748Z",
      "_content_hash": "2a63d66609020f29795798805e483c98b88d43b81c6759e845684585efe7642b",
      "scraped_at": "2026-07-08T18:56:47.909Z"
    }
  ],
  "count": 1,
  "has_more": false
}

Example questions you can answer

Related datasets

Query EPA Enforcement Cases from your AI

Hand any AI your key + the OpenAPI spec and it can pull this dataset directly. Free key = full data, 60 requests/day.

Get a free key OpenAPI spec → REST docs →
← All 60+ datasets