EPA ECHO Facility Violations and Enforcement API avatar

EPA ECHO Facility Violations and Enforcement API

Pricing

from $2.30 / 1,000 facility rows

Go to Apify Store
EPA ECHO Facility Violations and Enforcement API

EPA ECHO Facility Violations and Enforcement 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.

Pricing

from $2.30 / 1,000 facility rows

Rating

0.0

(0)

Developer

Detroit Web Agent - Open Data

Detroit Web Agent - Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

EPA ECHO Facility Violations and Enforcement

EPA ECHO facility violations for the states you choose: Clean Air Act, Clean Water Act and hazardous waste (RCRA) facilities with a current violation, with compliance status, quarters in noncompliance, inspections, formal enforcement actions, penalties and a 0-100 compliance-risk score.

Pull regulated facilities that are out of compliance with the Clean Air Act, the Clean Water Act or the hazardous waste law (RCRA) into one clean table. Each row has the facility name and address, state, industry (NAICS), program, current compliance status, quarters in noncompliance, last inspection date, formal enforcement actions, penalties in dollars, the EPA registry ID, a link to the EPA ECHO report and a simple compliance-risk score. Data comes from the free public EPA ECHO web services. No login, no proxy, no personal data: these are facility-level records only.

What is EPA ECHO Facility Violations and Enforcement?

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. Run it from the Apify Console, the API or a schedule, and export the results as JSON, CSV, Excel or HTML.

Why use it

  • Official source. Data is EPA ECHO, the public compliance database run by the agency.
  • Three programs, one table. Air, water and hazardous waste in the same shape, with ISO dates.
  • Repeatable. Fixed filters and a fixed score, so runs can be compared month to month.

Output

One row per facility and program:

FieldMeaning
facilityName, address, city, state, zip, countyThe facility and where it is.
program, programDetailCAA, CWA or RCRA, plus program details such as permit type or generator size.
naicsCode, naicsDescriptionIndustry code and name when EPA has one.
complianceStatus, inViolation, significantViolationCurrent EPA status and two simple flags. Significant means high priority (air) or significant noncompliance (water, waste).
quartersInNoncomplianceQuarters in noncompliance out of the last 12.
lastInspectionDate, inspectionCountLast inspection (air uses the last compliance evaluation) and how many.
formalEnforcementActions, lastFormalEnforcementDateFormal actions on record. The water service gives only the last date, so the count is empty for CWA rows.
penaltiesUsd, lastPenaltyDatePenalties recorded in dollars and the latest date.
complianceRiskScore, riskLevel0 to 100 score and high, medium, low or none.
registryId, sourceId, echoUrlEPA registry ID, the program permit or site ID and the EPA ECHO facility report link.
scrapedAtWhen the run read the data.

Sample output

{
"facilityName": "ARBOR HILLS LANDFILL, INC.",
"program": "CAA",
"city": "NORTHVILLE",
"state": "MI",
"naicsCode": "221118 562212",
"complianceStatus": "High Priority Violation",
"quartersInNoncompliance": 12,
"lastInspectionDate": "2026-09-01",
"formalEnforcementActions": 3,
"penaltiesUsd": 730109,
"complianceRiskScore": 100,
"riskLevel": "high",
"registryId": "110015815402",
"echoUrl": "https://echo.epa.gov/detailed-facility-report?fid=110015815402"
}

Input

FieldWhat it does
statesTwo-letter state codes, for example MI, OH. Default MI.
programsCAA (air), CWA (water permits), RCRA (hazardous waste). Default: all three.
onlyInViolationKeep facilities with a current violation or quarters in noncompliance. Default on.
minRiskScoreOptional 0 to 100 threshold.
majorOnlyAir and water only: keep major sources and major permits.
nameContainsOptional text that must appear in the facility name.
maxItemsStop after this many rows, highest risk first. Default 100.

Sample input:

{
"states": ["MI", "OH"],
"programs": ["CAA", "CWA"],
"onlyInViolation": true,
"minRiskScore": 50,
"maxItems": 200
}

Pricing

Pay per event. You pay a small fixed amount per facility row delivered, listed on the Pricing tab, plus a tiny start fee per run. You can set a maximum cost per run in the run options.

What does this Actor do?

It calls the EPA ECHO air, water and hazardous waste facility services for the states you choose, reads every active facility in each program, keeps the ones with a current violation (or all of them if you prefer), scores each one and sorts the highest risk first. The actor reports what EPA publishes. It does not decide whether a facility broke the law, and a violation flag is not a finding of guilt.

Run in 30 seconds

  1. Open the Actor and press Try for free (a free Apify account is enough).
  2. Keep the prefilled input (Michigan, all three programs, only facilities in violation) and press Start. A run takes a few minutes because EPA returns whole states at once.
  3. Open the Output tab. Use the table view or download CSV, Excel or JSON.

Use cases

  • Screen suppliers, vendors or acquisition targets for environmental compliance problems before signing.
  • Build a regional list of high-risk industrial sites for environmental consultants, insurers or lenders.
  • Monitor your state or county each month and flag facilities whose quarters in noncompliance or penalties increased.
  • Give journalists and community groups a ranked list of the facilities with the longest violation streaks.
  • Feed rows into an n8n, Make or Zapier workflow that opens a due-diligence task when a matching facility scores high.

Compliance-risk score

A fixed rule of thumb, not an EPA rating: 30 points for a current violation, or 55 if it is significant or high priority, plus up to 25 for quarters in noncompliance (12 of 12 gives 25), plus 5 per formal enforcement action (up to 10), plus up to 10 for penalties on a log scale. Capped at 100. The same record always gives the same score.

Limits

  • Active facilities only. Closed or inactive permits are skipped.
  • Violation data is as reported by EPA and the states, and may be incomplete or later corrected. Do not treat it as legal advice.
  • Large states return thousands of facilities per program, so runs take a few minutes.
  • Other programs (drinking water, toxics release) are not included.

Found a bug or need a field? Open an issue on the Issues tab with the run URL.

FAQ

How fresh is the data? EPA refreshes ECHO regularly, but state reports can lag by weeks or months. Always check the linked ECHO report for the latest.

Why do I get fewer rows than maxItems? Only facilities that match your states, programs and filters exist. Try more states, all three programs, or turn off "only in violation".

Is this an official EPA product? No. It is an independent tool that reads the public EPA ECHO web services. Check echo.epa.gov for authoritative records.

This Actor vs fortuitous_pirate/epa-echo-facilities: that one is the most-used EPA ECHO actor and also extracts permits, violations, inspections and enforcement actions. Choose this one to pull whole states across all three programs at once, keep only facilities in violation, and get every row scored and sorted highest risk first.

More from DWA Open Data

Browse all 69 data Actors, with live prices and sample output, at open-data-actors.pages.dev.


Feedback: if this Actor was useful, or if it fell short, an honest review on the Reviews tab helps other users decide. Problems or feature requests: please open an Issue and we usually reply within one business day.

Changelog

  • 2026-10-22: Initial release.
  • 2026-10-25: Documentation updated: README refreshed.
  • 2026-10-25: Pricing update announced, effective 2026-10-25: Price cut to stay the lowest on the Store.
  • 2026-10-25: Listing refresh: new Store icon, README reorganised (overview, data fields, pricing, FAQ) and changelog tab added. No code change.