EPA ECHO Facilities & Environmental Compliance Scraper
Pricing
from $1.50 / 1,000 results
EPA ECHO Facilities & Environmental Compliance Scraper
Export US EPA ECHO regulated facilities, permits, compliance flags, inspections, enforcement and penalties from the official weekly bulk dataset. Filter by state, NAICS and environmental program. No API key required.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
Export facility-level environmental compliance data from the official US EPA ECHO Exporter. The Actor streams EPA's weekly bulk file and turns its 130+ source fields into an analysis-ready Apify dataset without requiring an API key.
What you can build
- Environmental due-diligence and Phase I site-screening pipelines
- ESG, compliance and enforcement monitoring
- Industrial lead lists segmented by NAICS and EPA program
- Location intelligence for regulated facilities
- Research datasets covering permits, inspections, violations, actions and penalties
EPA states that ECHO covers more than 1.5 million regulated facilities. A run can save up to 500,000 matching facilities; use multiple state/program runs when you need a larger partitioned export.
Input
| Field | Description | Default |
|---|---|---|
maxResults | Maximum facilities, 1–500,000 | 500 |
states | Two-letter US state/territory codes | all |
nameContains | Case-insensitive facility-name fragment | empty |
naicsPrefix | Industry code prefix, e.g. 324 | empty |
program | ALL, CAA, CWA, RCRA, SDWA, TRI, or GHG | ALL |
violationsOnly | Keep current non-compliance records only | false |
includeRawRecord | Include all 130+ source fields (slower/larger) | false |
Example — Texas Clean Air Act facilities:
{"states": ["TX"],"program": "CAA","maxResults": 10000}
Example — currently non-compliant petroleum-sector facilities:
{"naicsPrefix": "324","violationsOnly": true,"maxResults": 50000}
Output
Each dataset item includes normalized fields such as registryId, facilityName, address, coordinates, NAICS/SIC codes, program flags, current violation status, five-year inspection/enforcement measures, penalties and a direct ECHO report URL. Set includeRawRecord to true when you also need every field supplied in the official export; keep it off for high-volume delivery.
{"registryId": "110000000001","facilityName": "Example Facility","city": "HOUSTON","state": "TX","naicsCodes": "324110","currentViolation": "Y","latitude": 29.76,"longitude": -95.36,"programs": { "air": "Y", "water": "N", "hazardousWaste": "Y" },"detailUrl": "https://echo.epa.gov/detailed-facility-report?fid=110000000001"}
Additional output fields
These fields are also present in the dataset:
| Field | Type | Description |
|---|---|---|
streetAddress | — | Street address |
postalCode | — | ZIP code |
county | — | County |
sicCodes | — | SIC codes |
active | — | Active |
quartersInNonCompliance | — | Quarters in non-compliance |
inspectionsFiveYears | — | Inspections (5 years) |
formalActionsFiveYears | — | Formal actions (5 years) |
penaltiesFiveYears | — | Penalties (5 years) |
sourceUrl | — | Source |
rawRecord | — | All fields from the official ECHO Exporter row. |
Integrations
Run the Actor from the Apify Console, API, CLI, schedules or webhooks. Results are available as JSON, CSV, Excel, XML and RSS through the default dataset endpoints.
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~epa-echo-facilities-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"states":["CA"],"program":"CWA","maxResults":5000}'
Data source and limitations
Data comes from the EPA ECHO bulk download, which EPA generally refreshes weekly. A facility's absence, status or compliance flag must be interpreted using EPA's methodology and reporting periods. The Actor does not infer violations and is not a substitute for legal or environmental advice.
How much EPA ECHO Facilities & Environmental Compliance data can you extract in one run?
A single run returned 500 rows in 2 seconds on the example input. That is roughly 5,000 rows a minute. Widen the search — more queries, more pages, a broader location — and the same run goes deeper.
There is no hard ceiling built into this Actor. What bounds a run is the result limit you set, the breadth of the input you give it, and how much EPA ECHO Facilities & Environmental Compliance itself publishes. Because billing is per result, a wider run costs proportionally more and a narrow one costs almost nothing — so it is worth starting small and scaling once the output looks right.
EPA ECHO Facilities & Environmental Compliance scraping — frequently asked questions
Do I need a EPA ECHO Facilities & Environmental Compliance API key, account or login?
No. This Actor reads publicly available pages and feeds, so there is nothing to register for and no credentials to manage.
How do I export EPA ECHO Facilities & Environmental Compliance data to CSV, Excel, JSON or Google Sheets?
Open the Storage tab after a run and pick the format you want — CSV, Excel, JSON, XML or an HTML table. For Google Sheets, Airtable or a database, use the dataset URL or the Apify API so the sheet refreshes itself on every run.
Can I schedule this EPA ECHO Facilities & Environmental Compliance scraper to run daily or hourly?
Yes. Use the Schedules tab and pick a cadence. Daily is enough for most tracking work; pick hourly only if the rows you care about really do change that fast.
How many rows can I get, and what does it cost?
See the volume section above for a measured figure. Billing is per result, so you pay for the rows you actually receive and a run that finds nothing costs nothing.
Is scraping EPA ECHO Facilities & Environmental Compliance legal?
This Actor collects only information that EPA ECHO Facilities & Environmental Compliance publishes publicly. It does not log in, does not defeat access controls and does not touch private data. You remain responsible for how you use the output, including under GDPR and similar rules where personal data is involved.
What happens if EPA ECHO Facilities & Environmental Compliance blocks the run or changes its layout?
A refused exit IP is swapped for a fresh one within a quarter of a second and retried, and rate limiting is waited out rather than fought. If nothing gets through, the run fails with the reason instead of reporting success with zero rows — so an empty result always means "no matches", never "the source would not answer".
Can I use this with an AI agent, LangChain or an MCP client?
Yes. The Actor is callable over the Apify API and through Apify's MCP server, so an agent can run it and read the dataset back as a tool call.
How to scrape EPA ECHO Facilities & Environmental Compliance without an API
EPA ECHO Facilities & Environmental Compliance has no public bulk export for this data, which normally leaves copy-and-paste or a custom crawler. This Actor is the second one, already built and maintained: it reads the public pages, follows the pagination, and hands back clean rows.
- Fill in the input below — the example is prefilled, so Start works straight away.
- Watch the log name each page it walks and how many rows each one returned.
- Export from Storage, or pull the dataset over the API into your own pipeline.
No API key, no account, no browser extension, no manual copying.
Legal and compliance
This Actor collects publicly available information from EPA ECHO Facilities & Environmental Compliance only. It does not log in, does not circumvent access controls, and collects no private data. You are responsible for using the output lawfully, including under GDPR and comparable regimes where the rows contain personal data, and for respecting EPA ECHO Facilities & Environmental Compliance's terms where they apply to you.
This Actor is an independent tool. It is not affiliated with, endorsed by, or sponsored by the website or data publisher it reads from; all trademarks and brand names are the property of their respective owners.
Changelog
-
2026-11-01: Monthly health check (2026-11-01): a live run on the current build completed successfully and returned data. Input options, output fields and pricing are unchanged. README refreshed: independence disclaimer added; documented 11 additional output fields.
-
2026-10-15: A run that reaches its maximum cost per run now stops cleanly with its results saved and a status message, instead of ending as aborted. A proxy group your account cannot use no longer stops the run at start-up; it falls back to the default Apify Proxy. Memory is managed within the run's own limit, which removes a rare out-of-memory crash on large pages. The default used when the field is left out for
maxResultsis now 6,666 (was 500). -
2026-09-23: Fleet-wide quality audit. Verified end to end against live data and re-checked the input schema, the output columns and the run configuration. Output verified on a live run: 100 row(s) across 23 columns, 93.4% of cells populated. Run reliability reviewed: 100.0% of public runs succeeded in the last 30 days. Input schema, output schema and pricing configuration reviewed. Noted that 1 column(s) came back empty in this sample (
federalFacility); these are under review. -
2026-09-01: Fleet-wide health check. Verified against this Actor's real run history: 30-day success rate, output row counts, per-field fill rates, and peak memory against the configured memory limit. Reviewed for the failure patterns that have cost this fleet runs — unguarded proxy setup, retry loops that can outlast the run's own time budget, and full-page HTML parsing that can exhaust a small container. No change to input, output fields or scraping logic.
-
2026-08-11: Maintenance release: refreshed the build and dependencies. Re-verified live execution, non-empty structured output and dataset field/type integrity. Reviewed reliability (retries, pagination) and output quality as part of a full-fleet QA pass.
-
2026-08-01 — v1.0.0: Initial release. Added streaming bulk extraction, state/name/NAICS/program/violation filters, optional complete raw fields, 500,000-item runs, typed overview dataset and source retry handling. Validated against the live EPA export with default, filtered and 10,000-item inputs.
*Maintained: last verified 2026-11-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).
Use cases
- Export records in bulk and analyse them in a spreadsheet or database.
- Track how the data changes over time by scheduling repeat runs.
- Feed records into a dashboard, CRM or internal tool through the Apify API.
- Build a research dataset without writing or maintaining a scraper.
- Monitor EPA ECHO Facilities & Environmental Compliance for new entries and alert your team when they appear.
Pricing
This Actor is pay per result: you are charged for the rows it writes to your dataset, not for the time it spends running. There are no platform fees to calculate on top, and higher Apify plans pay a lower rate per result. A run that returns nothing costs nothing.
Related scrapers
Other Actors from the same collection: