Home › Funding, grants and compliance › EPA ECHO Violations API
Find facilities in violation of the Clean Air Act, Clean Water Act or RCRA from the free EPA ECHO web services: address, NAICS, quarters in noncompliance, inspections, enforcement, penalties and a compliance-risk score. No login.
| Field | Name | Required | What it does |
|---|---|---|---|
states | States | no | Two-letter US state or territory codes, for example MI, OH, TX. Facilities are filtered by their state. |
programs | Programs | no | CAA = Clean Air Act, CWA = Clean Water Act (NPDES permits), RCRA = hazardous waste. Leave empty for all three. |
onlyInViolation | Only facilities in violation | no | Keep facilities with a current violation or quarters in noncompliance. Turn off to include compliant facilities. |
minRiskScore | Minimum compliance-risk score | no | Optional 0 to 100. Keep only rows at or above this score. |
majorOnly | Major facilities only | no | Air and water only: keep facilities EPA classes as major sources or major permits. Hazardous waste has no such flag and is not filtered. |
nameContains | Facility name contains | no | Optional text that must appear in the facility name, for example "steel" or "refinery". |
maxItems | Max rows | no | Stop after this many rows, highest compliance-risk score first. |
One row per result. These are the 26 fields declared in the actor's dataset schema (field list from the schema, not a sample run).
| Field | Type | Meaning |
|---|---|---|
facilityName | string | |
program | string | |
address | string | |
city | string | |
state | string | |
zip | string | |
county | string | |
naicsCode | string | |
naicsDescription | string | |
programDetail | string | |
complianceStatus | string | |
lastInspectionDate | string | |
inspectionCount | integer | |
lastFormalEnforcementDate | string | |
lastPenaltyDate | string | |
registryId | string | |
sourceId | string | |
inViolation | boolean | |
significantViolation | boolean | |
quartersInNoncompliance | integer | |
formalEnforcementActions | integer | |
penaltiesUsd | integer | |
complianceRiskScore | integer | |
riskLevel | string | |
echoUrl | string | |
scrapedAt | string |
Public data only, no login. Fields a source does not publish come back empty rather than guessed. Coverage and freshness follow the underlying public source.
Pay on Apify, no subscription: $0.0023 per facility row (pay per event). The live price is on the actor page.
Disclosure: we build and maintain this actor.