EPA ECHO Enforcement & Compliance Scraper avatar

EPA ECHO Enforcement & Compliance Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
EPA ECHO Enforcement & Compliance Scraper

EPA ECHO Enforcement & Compliance Scraper

Scrape EPA ECHO enforcement case data and facility compliance status. Search cases by state, statute (Clean Air Act, Clean Water Act, RCRA, etc.), civil/criminal type, and date filed. Search facilities by name, ZIP, or state for inspections, violations, and penalties. No API key required.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Scrape enforcement and compliance data from the EPA's ECHO (Enforcement and Compliance History Online) database — the U.S. government's public system of record for environmental enforcement actions and facility compliance status under the Clean Air Act, Clean Water Act, RCRA, Safe Drinking Water Act, and more. Free, official EPA data — no API key, login, or cookies required.

What data can you scrape?

  • Enforcement cases — civil and criminal actions brought by EPA, DOJ, and states: case status, statute cited, penalties assessed, settlement dates, and outcomes
  • Facility compliance status — inspection counts, violation history, high-priority violator flags, and penalty history for any EPA-regulated facility
  • Coverage across all 50 US states, DC, and US territories (Puerto Rico, Guam, US Virgin Islands, American Samoa, Northern Mariana Islands)

Three search modes

1. Search Enforcement Cases (searchCases)

Search EPA/state/DOJ enforcement actions by state or EPA region plus any combination of:

  • Statute — Clean Air Act, Clean Water Act, RCRA (hazardous waste), Safe Drinking Water Act, EPCRA, CERCLA/Superfund, FIFRA, TSCA
  • Case category — Judicial (filed in court) or Administrative (EPA-issued order)
  • Civil or Criminal
  • Case status — Complaint Filed, Final Order Issued, Closed, Concluded, and more
  • Date filed range
  • EPA Region — filter to one of the 10 EPA administrative regions instead of (or alongside) a single state
  • NAICS / SIC industry code — restrict to defendants/facilities in a specific industry
  • Federal-facility-only, cross-media-case-only, and tribal-land-only toggles

2. Search Facility Compliance Status (searchFacilities)

Look up any EPA-regulated facility by name, ZIP code, SIC industry code, or "major facility" status within a state, and get its full compliance snapshot: air/water/hazardous-waste/drinking-water compliance status, 5-year inspection and violation counts, penalty history, and Toxic Release Inventory data where reported.

3. Look Up Facilities by Registry ID (byRegistryIds)

Already have EPA FRS Registry IDs (e.g. from a previous searchFacilities run, or from another dataset)? Fetch those exact facilities directly — no state or name search needed. Accepts one or more IDs in a single run.

Output fields

Enforcement case records

FieldDescription
caseNumberEPA ICIS case identifier
caseNameDefendant / facility name on the case
caseCategory / caseCategoryCodeJudicial or Administrative - Formal, and its short EPA code (JDC/AFR)
caseStatus / caseStatusCodeCurrent case milestone (e.g. Final Order Issued, Closed) and its short EPA code
civilCriminalTypeCivil or Criminal
primaryLawStatute cited (CAA, CWA, RCRA, etc.)
primarySectionSpecific section of the law cited
courtDocketNumber, dojDocketNumberCourt / DOJ identifiers (when applicable)
leadAgencyEPA or delegated state agency
activityIdEPA ICIS internal activity identifier for the case
prosecutionSummaryIdEPA ICIS internal prosecution summary identifier (when applicable)
enforcementOutcomeFinal resolution of the case
primaryNaicsCodeDefendant's industry classification
dateFiled, dateLodged, settlementDate, dateClosedCase milestones (ISO dates)
federalPenaltyUsdFederal penalty assessed/agreed to
stateLocalPenaltyUsdState or local penalty amount
sepCostUsdSupplemental Environmental Project cost
costRecoveryUsdSuperfund cost recovery awarded
complyingActionValueUsdValue of required remediation/compliance actions
settlementCountNumber of settlements in the case
onTribalLandtrue if the case involves tribal land
caseReportUrlLink to the public ECHO enforcement case report

Facility compliance records

FieldDescription
registryIdEPA Facility Registry Service (FRS) ID
facilityName, streetAddress, city, state, zipCode, countyFacility identity and location
latitudeGPS latitude
sicCodes, naicsCodesIndustry classification codes
isActiveWhether EPA currently lists the facility as active
federalFacilitytrue if federally owned/operated
overallComplianceStatusCross-program compliance summary
airComplianceStatus, waterComplianceStatus, hazardousWasteComplianceStatus, drinkingWaterComplianceStatusPer-program compliance status
significantNoncompliancetrue if flagged for significant noncompliance
airHighPriorityViolatortrue if flagged as a Clean Air Act high-priority violator
quartersInNoncomplianceLast3yrNumber of quarters out of the last 12 with noncompliance
inspectionCount5yr, airEvaluationCount5yr, waterInspectionCount5yr, hazardousWasteInspectionCount5yr5-year inspection counts
daysSinceLastInspection, lastInspectionDateMost recent inspection
penaltyCount5yr, lastPenaltyDate, airPenaltiesUsd5yrPenalty history
airLastPenaltyAmountUsd, airLastPenaltyDateMost recent Clean Air Act penalty amount and date
airFormalActionCount, drinkingWaterFormalActionCount, lastFormalActionDateFormal enforcement action counts
airLastFormalActionDate, waterLastFormalActionDateMost recent per-program (Clean Air Act / Clean Water Act) formal enforcement action date
waterComplianceTrackingStatusClean Water Act compliance tracking status (On / Off / Partial)
triReleasesTransfersLbs, triOnSiteReleasesLbsToxic Release Inventory data (when the facility reports)
regulatedUnderCleanAirAct, reportsToxicReleaseInventoryProgram-membership flags
populationDensity, watershedName, fipsCodeGeographic/demographic context
detailedFacilityReportUrlLink to the public ECHO Detailed Facility Report

Every record also includes recordType and scrapedAt. Fields that EPA has no data for are simply omitted — no null, empty string, or placeholder values are ever returned.

Input parameters

ParameterTypeApplies toDescription
modeSelectallsearchCases, searchFacilities, or byRegistryIds
stateSelectsearchCases, searchFacilitiesUS state/territory (optional for searchFacilities — narrows a nationwide search; either this or epaRegion required for searchCases)
epaRegionSelectsearchCasesOne of the 10 EPA administrative regions — alternative or addition to state
naicsCodeTextsearchCasesNAICS industry code (full 6-digit or a shorter prefix for a broader sector)
sicCodeTextsearchCases, searchFacilitiesSIC industry code (full 4-digit or a shorter prefix for a broader group)
lawCitedSelectsearchCasesRestrict to one statute
caseCategorySelectsearchCasesJudicial or Administrative
civilCriminalIndicatorSelectsearchCasesCivil or Criminal
caseStatusSelectsearchCasesCase milestone/status
dateFiledFrom / dateFiledToText (MM/DD/YYYY)searchCasesDate-filed range
federalFacilityOnlyBooleansearchCasesFederal facilities only
crossMediaOnlyBooleansearchCasesCross-media cases only
tribalLandOnlyBooleansearchCasesTribal-land cases only
facilityNameTextsearchFacilitiesPartial facility/company name
zipCodeTextsearchFacilities5-digit ZIP code
majorFacilitiesOnlyBooleansearchFacilitiesEPA-designated major facilities only
activeOnlyBooleansearchFacilitiesCurrently active facilities only
registryIdsArray of textbyRegistryIdsOne or more EPA FRS Registry IDs (required for this mode)
maxItemsIntegerallMaximum records to return (1–2000)

Note: searchFacilities requires facilityName, zipCode, sicCode, or majorFacilitiesOnly=true in addition to state — EPA's API rejects unrestricted state-wide facility scans because the result set (hundreds of thousands of rows in large states) exceeds its query limit. searchCases requires state, epaRegion, or both.

Note: EPA's own API caps a single query at 1,000 matching rows for searchCases and 5,000 for searchFacilities, regardless of maxItems. If a state/statute combination has more matches than that, narrow further with lawCited, caseCategory, or dateFiledFrom/dateFiledTo (for cases) or facilityName/zipCode (for facilities) to reach additional rows.

Note: facilityName is matched by EPA's own ECHO database, not by this actor — it can occasionally return a facility whose current displayed name doesn't visibly contain your search term (e.g. searching chevron can surface a 7-ELEVEN gas-station location). This happens because EPA's FRS registry links facilities to prior/associated business names (e.g. a rebranded gas station) that aren't exposed as a separate field in the API response, so this actor can't label or strip those out without discarding legitimate matches. If you need an exact-name-only result set, filter the actor's output on facilityName after the run.

Example: Clean Air Act enforcement cases in Texas since 2020

{
"mode": "searchCases",
"state": "TX",
"lawCited": "CAA",
"dateFiledFrom": "01/01/2020",
"dateFiledTo": "12/31/2023",
"maxItems": 100
}

Example: criminal enforcement cases nationwide (by state loop) with penalties

{
"mode": "searchCases",
"state": "CA",
"civilCriminalIndicator": "CR",
"maxItems": 50
}

Example: compliance status for all Chevron facilities in California

{
"mode": "searchFacilities",
"state": "CA",
"facilityName": "chevron",
"maxItems": 100
}

Example: all major regulated facilities in Rhode Island

{
"mode": "searchFacilities",
"state": "RI",
"majorFacilitiesOnly": true,
"maxItems": 200
}

Example: enforcement cases across all of EPA Region 9 (AZ, CA, HI, NV + territories)

{
"mode": "searchCases",
"epaRegion": "09",
"lawCited": "CWA",
"maxItems": 100
}

Example: enforcement cases against meat-packing plants (SIC 2011) in Texas

{
"mode": "searchCases",
"state": "TX",
"sicCode": "2011",
"maxItems": 50
}

Example: look up specific facilities by known Registry ID

{
"mode": "byRegistryIds",
"registryIds": ["110002899908", "110065720410"]
}

Use cases

  • ESG / compliance due diligence — screen a company's facilities for environmental violations and penalties before an investment or acquisition
  • Legal & regulatory research — track enforcement case outcomes and penalty trends by statute or state
  • Environmental justice research — cross-reference facility violation history with community impact data
  • Competitive/industry intelligence — monitor a sector's (NAICS-coded) compliance record across facilities
  • Journalism — investigate polluters, penalty history, and enforcement trends in a given region
  • Supply chain risk — check whether a vendor's manufacturing facilities carry active violations

FAQ

What is EPA ECHO? ECHO (Enforcement and Compliance History Online) is the EPA's public database consolidating compliance and enforcement data for facilities regulated under federal environmental laws. It's the same data EPA itself publishes at echo.epa.gov.

Do I need an API key? No. This actor uses EPA's public, unauthenticated REST API.

Why does searchFacilities need more than just a state? EPA's facility database contains hundreds of thousands of regulated entities in large states. The API itself rejects a request if the estimated result set is too large, so a name, ZIP code, or the major-facility toggle is required to narrow it — this mirrors the same requirement on EPA's own Facility Search tool.

What does "major facility" mean? EPA designates certain larger regulated sources (e.g. large power plants, refineries) as "major facilities" subject to more frequent inspection and reporting.

How current is the data? ECHO is updated regularly by EPA (typically weekly for most compliance data); this actor always reflects whatever EPA's live API returns at run time.

Can I search multiple states at once? Use epaRegion to search all states within one of EPA's 10 administrative regions in a single run (see the regional groupings in the epaRegion dropdown), or run the actor once per state for finer control.

What's the difference between naicsCode and sicCode? Both are industry classification systems; NAICS (North American Industry Classification System) is the newer, more granular standard, while SIC (Standard Industrial Classification) is the older four-digit system EPA still uses for facility records. naicsCode filters searchCases by defendant industry; sicCode works on both searchCases and searchFacilities — EPA's facility-search endpoint doesn't support a NAICS filter (it's a case-search-only field). Both accept a short prefix (e.g. "31" or "20") to match a whole industry sector, or the full code for an exact match.

Are civil and criminal cases both covered? Yes — use civilCriminalIndicator to filter to one or leave it blank for both.

Why does a case with lawCited: "CWA" sometimes show primaryLaw: "RCRA" in the output? Many enforcement cases involve violations of more than one environmental statute (a "cross-media" case). EPA's lawCited filter matches any case that cites the given statute, not only cases where it's the primary law — but ECHO's API only exposes a single primaryLaw field per case (the statute EPA classifies as the lead violation), not the full list of laws cited. So a lawCited: "CWA" search can correctly return a case whose primaryLaw is RCRA if that case also involved a Clean Water Act violation. This mirrors exactly what EPA's own ECHO Enforcement Case Search shows for the same filter.