Gulf Coast EPA Compliance & Enforcement Monitor (ECHO)
Pricing
from $5.00 / 1,000 facility records
Gulf Coast EPA Compliance & Enforcement Monitor (ECHO)
Search EPA ECHO facilities and enforcement cases in Louisiana, Texas, Mississippi, Alabama, and Florida by parish or county, program, violation, penalty, and industry, or monitor new enforcement on a schedule.
Pricing
from $5.00 / 1,000 facility records
Rating
0.0
(0)
Developer
Gina Martiny
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Search EPA compliance and enforcement records for facilities in Louisiana, Texas, Mississippi, Alabama, and Florida by parish or county, EPA program, violation status, penalties, industry, and date. Turn on monitor mode and schedule it to get only new enforcement actions, new penalties, and facilities whose violation status changed since your last run.
What does it do?
This Actor reads the U.S. Environmental Protection Agency's ECHO (Enforcement and Compliance History Online) data services and returns clean, normalized records you can drop into a spreadsheet, CRM, or due-diligence workflow. It can return two kinds of records:
- Facilities: one record per EPA-regulated facility, with its address, coordinates, industry codes, Clean Air Act, Clean Water Act, RCRA, and Safe Drinking Water Act IDs, current compliance status by program, significant noncompliance flag, inspections, informal and formal enforcement actions, five-year penalty totals, and a link to the EPA Detailed Facility Report.
- Enforcement cases: one record per federal or state civil or criminal enforcement case, with the statute, case status, filing, lodging, settlement, and closing dates, federal and state penalties, SEP and compliance costs, docket numbers, pollutants, and a link to the EPA case report.
Louisiana alone has about 39,900 active facilities in ECHO, 2,663 with formal enforcement, $71.3 million in penalties on record, and 18,500 enforcement cases. ECHO refuses any single query over 100,000 rows, so the Actor splits large searches by state, program, and, when needed, county, pages through each one, and removes duplicates for you.
It uses EPA's official public REST services, so there is no browser, no proxy, and no login involved.
Who is it for?
- Environmental lawyers screening clients, opposing parties, and targets for violations and enforcement history.
- Environmental consultants building Phase I and compliance-audit leads by parish or county.
- Insurers and lenders' due-diligence teams checking a borrower's or insured's facilities before binding or closing.
- ESG and sustainability teams tracking supplier and portfolio compliance across the Gulf Coast.
- Industrial-services sales teams looking for facilities with current violations, new orders, or fresh penalties.
Input
| Field | Type | Description |
|---|---|---|
recordType | choice | facilities (default) or enforcementCases. |
states | list of states | Any of LA, TX, MS, AL, and FL. Default ["LA"]. |
counties | list of names | Counties or parishes, for example East Baton Rouge, St. James, or Harris. "Saint" or "St.", with or without "Parish" or "County", in any case. A name is searched in every selected state that has it. Facility searches only. Empty means whole states. |
programs | list of programs | CAA, CWA, RCRA, or SDWA. For cases this picks the primary law. Empty means every program. |
activeOnly | true or false | Facilities only. Skip closed and inactive facilities. Default true. |
violationStatus | choice | Facilities only. any (default), currentViolation, or significantViolation. |
formalEnforcementWithinYears | number | Facilities only. Keep facilities with a formal enforcement action in the last 1 to 5 years. 0 (default) turns it off. |
minPenaltyUsd | number | Facilities: five-year penalty total at or above this amount. Cases: federal plus state penalty at or above it. 0 (default) turns it off. |
naicsCodes | list of codes | NAICS codes or prefixes of 2 to 6 digits, for example 325 for chemicals or 324110 for refineries. |
dateFrom | date | YYYY-MM-DD. Cases: ECHO's own case-activity date filter, see the note below. Facilities: last formal action on or after this day. |
dateTo | date | YYYY-MM-DD, inclusive, with the same meaning as dateFrom. |
maxResults | number | Most records to publish and charge in one run. Default 1000, maximum 250,000. |
onlyNewOrChanged | true or false | Monitor mode. Outputs only records that are new or changed since the previous run of the same search. |
For cases, the date range is passed to ECHO's case search, which matches cases with enforcement activity in that range. Most matches have a filing, settlement, or closing date inside it, but ECHO also counts activity that is not in the output, so check the dates before relying on them. ECHO cannot filter enforcement cases by county, so the Actor rejects counties for case searches instead of silently returning a whole state. Facility-only filters are ignored, with a warning in the log, when you search cases.
Sample input, Louisiana chemical plants and refineries in two parishes with a formal enforcement action in the last three years:
{"recordType": "facilities","states": ["LA"],"counties": ["East Baton Rouge", "Calcasieu"],"naicsCodes": ["325", "324"],"formalEnforcementWithinYears": 3,"maxResults": 500}
Output
Each facility or case is one dataset item. This is a real facility record from ECHO:
{"recordType": "facility","registryId": "110013921435","facilityName": "ACADIA PARISH POLICE JURY - ACADIA PARISH SANITARY LANDFILL","street": "611 PETAL RD","city": "EGAN","state": "LA","zip": "70531","county": "ACADIA","countyFips": "22001","epaRegion": "06","latitude": 30.256038,"longitude": -92.532637,"naicsCodes": ["562111","562212"],"sicCodes": ["4953"],"programs": ["CAA","CWA"],"active": true,"majorFacility": true,"federalFacility": false,"airIds": ["LA0000002200100143"],"npdesIds": ["LA0065676"],"rcraIds": [],"sdwaIds": [],"caaPermitTypes": "Major Emissions","cwaPermitTypes": "Non-M","rcraPermitTypes": null,"sdwaSystemTypes": null,"complianceStatus": "Violation Identified","caaComplianceStatus": "No Violation Identified","cwaComplianceStatus": "Violation Identified","rcraComplianceStatus": null,"sdwaComplianceStatus": null,"currentViolation": true,"significantNoncompliance": false,"quartersInNoncompliance": 8,"complianceHistory3yr": "VV_V_V__VVVV","inspectionCount": 2,"lastInspectionDate": "2025-08-21","informalActionCount": 1,"lastInformalActionDate": "2025-09-30","formalActionCount": 1,"lastFormalActionDate": "2026-08-06","totalPenaltiesUsd": 0,"penaltyCount": null,"lastPenaltyDate": "2006-09-20","lastPenaltyAmountUsd": 9000,"caaPenaltiesUsd": null,"cwaPenaltiesUsd": 0,"rcraPenaltiesUsd": null,"enforcementActionIds": ["LA-WECN2500447","LA000A0000220010014300037"],"detailedFacilityReportUrl": "https://echo.epa.gov/detailed-facility-report?fid=110013921435","changeType": "notTracked"}
And a real enforcement case record:
{"recordType": "enforcementCase","caseNumber": "06-2005-3416","caseName": "Saint-Gobain Containers Inc (Ardagh Glass)-3 Facilities-CAA Consent Decree (National Case)","activityId": "161265","matchedState": "LA","caseCategory": "Judicial","caseCategoryCode": "JDC","caseStatus": "Closed","caseStatusCode": "CLS","civilOrCriminal": "civil","lead": "EPA","primaryLaw": "CAA","primarySection": "165","laws": ["CAA"],"primaryNaicsCode": "327213","primarySicCode": "3221","dateFiled": "2010-01-21","dateLodged": "2010-01-21","settlementDate": "2010-05-07","dateClosed": "2026-08-27","enforcementOutcome": "Final Order With Penalty","federalPenaltyUsd": 230000,"stateLocalPenaltyUsd": 200000,"totalPenaltyUsd": 430000,"sepCostUsd": 250000,"complianceActionCostUsd": 20900000,"costRecoveryUsd": 0,"settlementCount": 1,"courtDocketNumber": "2:10-CV-00121-TSZ","dojDocketNumber": "90-5-2-1-06982/1","pollutants": "Sulfur oxide","caseReportUrl": "https://echo.epa.gov/enforcement-case-report?id=06-2005-3416","changeType": "new"}
You can download results as JSON, CSV, Excel, or XML, or read them through the Apify API. The dataset has a Facilities view and an Enforcement cases view.
- Money is in US dollars as numbers. Dates are
YYYY-MM-DD. Lists such asnaicsCodesandnpdesIdsare arrays. - Facility counts and penalty totals cover ECHO's standard five-year window.
complianceHistory3yris ECHO's 12-quarter code string, oldest quarter first. currentViolationandsignificantNoncompliancereflect EPA's latest quarter. Violations in ECHO are alleged until they are resolved through enforcement or the courts.changeTypeisneworchangedin monitor mode andnotTrackedotherwise.- A value the source stores in an unusable form comes through as null instead of stopping the run.
Monitor mode
Set onlyNewOrChanged to true and add a schedule, for example every Monday at 7 AM Central, since ECHO refreshes about weekly. The Actor remembers each record's enforcement history for that exact search in a named key-value store. The first run outputs every matching record as new. Later runs output only new records and records whose history moved. Unchanged records are skipped and you are not charged for them.
- A facility counts as changed when its current violation or significant noncompliance flag flips, or when it gets a new informal action, formal action, or penalty. A new inspection on its own does not count.
- A case counts as changed when its status, settlement date, closing date, outcome, or penalties change.
- History is keyed on every filter except
maxResults. State, county, program, and code order do not matter. If you change a filter, including a date you move forward each week, the Actor starts a fresh history and reports every match asnewagain. Keep the filters fixed for a monitor. - Set
maxResultshigh enough to cover every record you want watched. - Two schedules running the same search at the same time share one history, and the run that finishes last wins.
Pricing
This Actor uses pay-per-event pricing.
- Facility record: $5.00 per 1,000 facilities delivered to your dataset ($0.005 each).
- Enforcement case record: $5.00 per 1,000 cases delivered to your dataset ($0.005 each).
- Actor start: Apify's standard start event ($0.00005).
- There is no separate charge per dataset item.
Examples:
- A weekly monitor for a few parishes usually delivers a handful of new or changed records, so it costs pennies a month.
- 500 Louisiana facilities with recent formal enforcement cost about $2.50.
- Every active Louisiana facility, about 39,900 records, costs about $199.
- Every Louisiana enforcement case, about 18,500 records, costs about $93.
You can cap any run with Apify's maximum charge setting. The Actor stops cleanly when your limit is reached, and you are only charged for records that actually reach your dataset.
Estimated compute cost
Default memory is 512 MB. ECHO answers each 1,000-row page in about 3 to 4 seconds, and the Actor waits at least a second between requests to respect EPA's servers. A small filtered run finishes in well under a minute and costs well under $0.01 in Apify compute on top of the event charges. A full pull of every active Louisiana facility is about 40 pages, a few minutes at 512 MB, on the order of $0.01 to $0.05 in compute, plus about $199 in facility-record events.
Data source and freshness
Data comes from EPA's Enforcement and Compliance History Online (ECHO) REST services at https://echodata.epa.gov/echo/, published by the U.S. Environmental Protection Agency. EPA refreshes most ECHO data about weekly, and state-reported data can trail what a state agency shows on its own site. Facility records come from the ECHO all-data facility search, and cases from the ECHO enforcement case search, including state-lead cases that states report to EPA.
When a whole state is too large for one ECHO query, for example every Texas facility including inactive ones, the Actor searches that state one county at a time. Facilities that ECHO cannot place in a county can be missed in that mode, so add a program or another filter if you need a complete count.
If ECHO is down or refuses a request, the run fails with a short message and keeps every record it already delivered. Run it again later.
Data source: U.S. Environmental Protection Agency, Enforcement and Compliance History Online (ECHO), https://echo.epa.gov.
Is it legal to use this data?
ECHO is a public U.S. government service, and EPA publishes this data for anyone to search and download. The data is provided as is, without any guarantee that it is complete, current, or free of errors, and violations are alleged until resolved. It is not legal advice, a site assessment, or an EPA determination, so confirm anything important against ECHO and the responsible state agency. This Actor is an independent tool and is not affiliated with or endorsed by the U.S. Environmental Protection Agency or any state agency.
FAQ
Do I need an EPA account or API key? No. The Actor reads the same public services that power the ECHO website.
Why did my search fail with "too many records"? ECHO refuses any single query over 100,000 rows. The Actor splits state-wide facility searches by county on its own, but a single county or a case search can still be too large. Add a program, date range, or NAICS code and run it again.
Why are cases not filtered by county? ECHO's case search has no working county filter. Search facilities by county, then look up their enforcementActionIds, or filter cases by state, program, industry, and date.
What is the difference between totalPenaltiesUsd on a facility and totalPenaltyUsd on a case? The facility figure is everything assessed against that facility in the last five years. The case figure is the federal plus state or local penalty in that one case, whenever it happened.