EPA ECHO Scraper - Facilities, Violations & Compliance Leads
Pricing
from $5.00 / 1,000 facility / compliance records
EPA ECHO Scraper - Facilities, Violations & Compliance Leads
Scrape the official EPA ECHO database: regulated facilities with name, address, NAICS/SIC, Clean Air/Water/RCRA/SDWA compliance status, violations, inspections, enforcement, penalties & toxic releases. Filter by state, industry & noncompliance. B2B compliance leads + monitoring.
Pricing
from $5.00 / 1,000 facility / compliance records
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
EPA ECHO Scraper — Facilities, Violations & Environmental Compliance Leads
Extract regulated facilities and their full environmental-compliance history straight from EPA ECHO (Enforcement and Compliance History Online) — the U.S. Environmental Protection Agency's official enforcement database. Every facility comes back as a ready-to-use B2B lead: name, full address, industry (NAICS/SIC), the programs it's regulated under (Clean Air Act, Clean Water Act, RCRA hazardous waste, Safe Drinking Water Act, Toxic Release Inventory, greenhouse gas, Superfund), its compliance status, violations, inspections, formal enforcement actions, penalties and toxic-release totals, plus a derived lead score.
No login, no cookies, no browser, no API key — fast, reliable extraction from EPA's public ECHO web services.
Why this EPA ECHO scraper?
Generic "paste-a-URL" crawlers grab a few visible fields and miss the data that actually matters. This actor queries EPA's facility-search and Detailed Facility Report services directly and ships the richest dataset in the category — firmographics and every compliance, enforcement, penalty and toxic-release signal, in one clean table.
| Data | Thin EPA scrapers | This actor |
|---|---|---|
| Facility name, full address, county, EPA region, geo | partial | ✅ |
| Industry NAICS + SIC (codes + description) | ❌ | ✅ |
| Programs (CAA / NPDES / RCRA / SDWA / TRI / GHG / Superfund / TSCA / RMP) | one program only | ✅ all in one |
| Overall + per-program compliance status | ❌ | ✅ |
| Significant-noncompliance (SNC) flag + quarters in noncompliance | ❌ | ✅ |
| Inspections (count + dates), informal & formal enforcement | partial | ✅ |
| Penalties (count, total $, last amount, per program) | ❌ | ✅ |
| Toxic Release Inventory (lbs released/transferred + multi-year chemical history) | ❌ | ✅ |
| Greenhouse-gas CO₂ totals, impaired-waters flag, demographics | ❌ | ✅ |
| Detailed Facility Report (per-statute summaries, every formal action, all permits) | ❌ | ✅ |
| Derived lead score + lead signals | ❌ | ✅ |
| Only-new / changed monitoring mode | ❌ | ✅ |
Use cases
- Environmental-services lead generation — facilities in significant noncompliance, with open violations or recent penalties are in-market buyers for environmental consulting, remediation, compliance/EHS software, air & water permitting, and legal services. Export them with industry, address and lead score and feed your CRM.
- Regulatory & legal intelligence — track formal enforcement actions, penalties and SNC status across an industry or state for environmental and product-liability law firms.
- ESG, due diligence & risk — screen a portfolio, supply chain or acquisition target for environmental violations, penalties and toxic-release history.
- Insurance & underwriting — assess environmental risk by facility, program and enforcement history.
- Market & competitive research — map every regulated facility in a sector (refineries, power plants, chemical manufacturers, waste handlers) with size (major-facility flag) and compliance posture.
- Community & journalism — surface the biggest polluters and repeat offenders in a county or watershed.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the EPA ECHO Scraper, set a state (and optionally an industry, program or compliance filter), and choose your limit.
- Click Start and watch facility records stream into the dataset table.
- Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.
Input
{"states": ["TX"],"naicsCodes": ["325"],"significantNoncomplianceOnly": true,"includeDetailedReport": true,"sortBy": "leadScore","maxResults": 500}
- registryIds — look up specific facilities by EPA FRS Registry ID. Leave empty to search with filters.
- states / epaRegions / counties / cities / zipCodes — location filters (all optional, combine with AND).
- facilityNameQuery / streetQuery — text-contains filters on the facility name or street.
- naicsCodes / sicCodes — industry filters (full code or prefix, e.g.
325chemicals,3241petroleum,2211power,562waste). - programs — keep only facilities under CAA, NPDES, RCRA, SDWA, TRI, GHG, SEMS (Superfund), TSCA or RMP.
- activeOnly (default true), majorFacilitiesOnly, federalFacilitiesOnly — facility filters.
- complianceStatus / significantNoncomplianceOnly / currentViolationsOnly — compliance-intent filters.
- hasPenaltiesOnly / minPenaltyAmount / hasFormalEnforcementOnly / minQuartersInNoncompliance — enforcement filters.
- inspectionRecency —
within5yr,notWithin5yr(overdue sites) orneverInspected. - includeDetailedReport (default false) — enrich each facility with its full Detailed Facility Report (per-statute summaries, every formal action, all permits, TRI chemical history). Billed as
detailedReport. - maxResults / sortBy / deduplicateResults — output controls. Sort by
leadScore(default),penaltiesHigh,recentEnforcement,recentInspection, orsource. - monitorMode / monitorKey — only return facilities that are new or whose compliance changed since the last run.
- proxyConfiguration — optional; the ECHO API needs no proxy, so leave it off for the fastest queries.
Output
By default you get one clean, dense table of facilities — every column applies to every row. A facility record:
{"registryId": "110000468093","facilityName": "HF SINCLAIR PARCO REFINING CO LLC","fullAddress": "100 E LINCOLN AVE, SINCLAIR, WY, 82334","city": "SINCLAIR","state": "WY","zip": "82334","county": "CARBON","epaRegion": "08","latitude": 41.78,"longitude": -107.11,"naicsPrimary": "324110","naicsDescription": "Petroleum Refineries","sicPrimary": "2911","programs": ["Clean Air Act", "RCRA Hazardous Waste", "Toxic Release Inventory", "Greenhouse Gas Reporting", "Risk Management Plan"],"isMajor": true,"complianceStatus": "Significant Violation","inSignificantNoncompliance": true,"quartersInNoncompliance": 12,"inspectionCount": 14,"lastInspectionDate": "2026-05-06","formalActionCount": 4,"lastFormalActionDate": "2025-11-21","penaltyCount": 2,"totalPenalties": 431500,"triReleasesTransfers": 425309,"echoScore": 100,"dfrUrl": "https://echo.epa.gov/detailed-facility-report?fid=110000468093","leadScore": 100,"leadSignals": ["Significant noncompliance (SNC)", "4 formal enforcement actions", "12 of last 12 quarters in noncompliance", "2 penalties ($431,500)", "Major facility", "425,309 lbs toxic releases/transfers"],"detailedReport": {"enforcementSummaries": [{ "statute": "RCRA", "inspections": 7, "currentStatus": "Significant Noncomplier", "quartersInNoncompliance": 12, "totalPenalties": 0 }],"formalActions": [{ "statute": "CAA", "actionType": "Administrative Order", "leadAgency": "State", "actionDate": "2022-10-04", "penaltyAmount": 110000 }],"permits": [{ "program": "FRS", "sourceId": "110000468093", "epaRegion": "08" }],"triChemicals": [{ "chemical": "Ammonia", "poundsByYear": { "2022": 25110, "2023": 28240, "2024": 23110 } }]},"scrapedAt": "2026-06-20T12:00:00.000Z"}
The detailedReport block is present only when includeDetailedReport is on. Switch the dataset view to Facilities, Compliance leads, or Violations & penalties for a focused table.
What to expect (field coverage)
EPA ECHO aggregates many program systems, so some fields are populated only when a facility participates in that program or has that history.
| Field group | Coverage |
|---|---|
| Facility name, address, state, Registry ID, geo, programs | ✅ ~100% |
| NAICS / SIC, compliance status, inspection & enforcement counts | ✅ high (present whenever EPA has the data) |
| Penalties, formal actions, SNC flag | present for facilities with enforcement history |
| TRI releases & chemical history | present for TRI reporters |
| Greenhouse-gas CO₂ | present for GHG reporters |
A blank field means EPA doesn't publish that signal for that facility — not that scraping failed. Nothing is dropped, so you always get the richest record available.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run it daily/weekly with monitoring mode to capture newly-cited facilities and fresh enforcement actions as leads.
- Webhooks — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/epa-echo-scraper').call({states: ['TX'],naicsCodes: ['325'],significantNoncomplianceOnly: true,sortBy: 'leadScore',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} facilities`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push new facility leads straight into your CRM.
- Slack — get notified when a monitored state or industry gets a new violation or penalty.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find every chemical plant in Texas in significant noncompliance, with penalties and a lead score" and let it run the scraper for you.
More scrapers from scrapesage
Build a complete government-data, compliance & B2B lead-gen stack:
- FDA Scraper (openFDA) — drug, device & food recalls, adverse events and manufacturer leads.
- FMCSA Trucking Scraper — DOT carriers, safety ratings, inspections and fleet leads.
- FAA Aircraft Registry Scraper — registered aircraft and business-owner leads.
- SBA Loan Leads Scraper — financed small businesses from SBA 7(a) & 504 data.
- PPP Loan Data Scraper — 11M+ PPP loans with firmographics and owner demographics.
- Form 5500 ERISA Scraper — retirement & benefit-plan leads from DOL filings.
- USASpending Scraper — federal awards, recipients and contractor leads.
- GSA eLibrary Scraper — federal Schedule contractors with UEI, email and website.
- US Federal Grants Scraper — grant opportunities and awardees.
- US Business Formation Scraper — newly-registered companies as fresh leads.
Tips
- Start with a state + industry (e.g.
TX+ NAICS325) for a fast, focused list, then layer on compliance filters. - Highest-intent leads: set
significantNoncomplianceOnlyorhasPenaltiesOnlyand sort byleadScore— these facilities have an active reason to buy compliance, remediation or legal services. - Overdue sites: set
inspectionRecency: "notWithin5yr"to find facilities that haven't been inspected recently. - Detailed reports: turn on
includeDetailedReportto pull per-statute summaries, every formal action and the multi-year toxic-release history (one extra request per facility). - Recurring monitoring: combine Schedules with
monitorModeto capture only facilities added or changed since the last run.
FAQ
Where does the data come from? From EPA's official ECHO (Enforcement and Compliance History Online) public web services — the same data behind echo.epa.gov, covering facilities regulated under the Clean Air Act, Clean Water Act, RCRA, Safe Drinking Water Act, TRI and more.
Does it need an API key or login? No. ECHO's public services are queried directly — no key, no login, no browser.
How fresh is it? EPA refreshes ECHO regularly (most program data weekly). Run on a Schedule with monitoring mode to capture new violations and enforcement as they post.
Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.
What's the Detailed Facility Report? EPA's deep per-facility report — per-statute compliance summaries, every formal enforcement action (type, agency, date, penalty), all environmental permits, and multi-year Toxic Release Inventory chemical data. Enable includeDetailedReport to attach it.
A field is empty — why? A facility only carries data for the programs it participates in (e.g. no TRI releases if it's not a TRI reporter). Blank means EPA has no value, never that scraping failed.
Is scraping this data legal? This actor collects publicly available U.S. government data. You're responsible for using it in compliance with applicable laws and EPA's terms.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.