EPA ECHO facilities - permits, inspections, violations (API) avatar

EPA ECHO facilities - permits, inspections, violations (API)

Pricing

from $5.00 / 1,000 records

Go to Apify Store
EPA ECHO facilities - permits, inspections, violations (API)

EPA ECHO facilities - permits, inspections, violations (API)

Search EPA ECHO by state, city, zip, NAICS and program (air, water, hazardous waste, drinking water) and get one row per regulated facility: registry id, address, permits, compliance status, quarters in noncompliance, inspections, enforcement, penalties, report URL.

Pricing

from $5.00 / 1,000 records

Rating

0.0

(0)

Developer

RetrainMap Team

RetrainMap Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

EPA ECHO facilities — permits, inspections, violations (API)

One row per EPA-regulated facility from ECHO (Enforcement and Compliance History Online), EPA's public facility search web service. Filter by state, city, ZIP, NAICS code and program (Clean Air Act, Clean Water Act / NPDES, RCRA hazardous waste, SDWA drinking water); get the FRS registry id, address, county, coordinates, NAICS/SIC codes, program flags and permit ids, compliance status per program, quarters in noncompliance (3 years), inspections, enforcement actions and penalties (5 years) and the detailed facility report URL — one flat row per facility, ready for CSV or JSON.

The default input (Raleigh, NC, all programs, up to 500 rows) succeeds within 5 minutes and returns rows — Apify auto-tests it daily.

Data source and status

PublisherU.S. Environmental Protection Agency — ECHO (https://echo.epa.gov)
APIECHO web services, Facility Search (All Data): echodata.epa.gov/echo/echo_rest_services.get_facilities then .get_qid — public, no key (documentation: https://echo.epa.gov/tools/web-services/facility-search-all-data)
What this Actor readsOne get_facilities GET with p_st, p_ct, p_zip, p_ncs, p_med, p_act and a fixed qcolumns list, which answers a QueryID and ECHO's own match counts; then get_qid pages of 1,000 facilities, at most one request per second
Refresh cadenceECHO refreshes its facility data weekly (data pulled from the program systems ICIS-Air, ICIS-NPDES, RCRAInfo, SDWIS; see https://echo.epa.gov/resources/echo-data/about-the-data). The Actor reads live on every run; fetched_at on each row is the fetch time
CopyrightWorks of the United States Government are not subject to copyright in the U.S. (17 U.S.C. §105). The data are public; please cite EPA ECHO as the source
Known caveatsECHO refuses result sets above its query-set limit — a whole large state (e.g. NC alone = 118,707 facilities) fails with ECHO's "Queryset Limit would be exceeded" message; add a city, ZIP, NAICS or program. ECHO silently ignores filters it does not know and returns 0 rows for an unknown state, so the Actor validates state, ZIP and NAICS itself. Many facilities carry no compliance status, inspection or penalty data (nulls) — ECHO only holds what the program systems report. Counts follow ECHO's windows: inspections, enforcement and penalties over 5 years, quarters in noncompliance over 3 years (12 quarters). EPA's own caveats on data quality apply: https://echo.epa.gov/resources/echo-data/known-data-problems

Honesty note: the rows are ECHO's own columns renamed and converted (strings to numbers, Y/N and 1/0 to booleans, MM/DD/YYYY to ISO dates) — nothing is inferred, scored or classified by this Actor, and a run stops with an error rather than guess when ECHO's shape changes; the violation filter is cross-checked against ECHO's own count.

Identification: the requests carry a product-token User-Agent and the operator's contact address in the standard From: header (RFC 9110 §10.1.2).

Input

FieldTypeMeaning
stateUSPS codee.g. NC. Required unless zip is given
citystringOptional, as ECHO records it (case-insensitive); needs state
zip5 digitsOptional
naics2–6 digitsOptional NAICS code or prefix (62 = health care)
programselectall, air, water, hazardous_waste, drinking_water
only_with_violationsbooleanKeep only facilities with a violation identified in the last 3 years (ECHO ViolFlag)
active_onlybooleanECHO p_act=Y
max_recordsintegerDefault 500, at most 20,000
request_interval_msintegerDefault 1000 (floor 250)
contact_emailstringSent in the From: header

Example — hazardous-waste handlers in Houston with a violation in the last three years:

{ "state": "TX", "city": "Houston", "program": "hazardous_waste", "only_with_violations": true, "max_records": 2000 }

Output (dataset row)

registry_id (FRS), facility_name, address, city, state, zip, county, county_fips, epa_region, latitude, longitude, naics_codes, sic_codes, active, major, program_air, program_water, program_hazardous_waste, program_drinking_water, program_tri, program_ghg, air_permit_ids, npdes_permit_ids, rcra_ids, sdwa_ids, tri_ids, caa_permit_types, cwa_permit_types, rcra_permit_types, compliance_status, caa_compliance_status, cwa_compliance_status, rcra_compliance_status, sdwa_compliance_status, violation_3yr, current_violation, current_significant_violation, significant_noncompliance, programs_with_snc, quarters_noncompliance_3yr, compliance_history_3yr (ECHO's 12-character quarter string), inspections_5yr, last_inspection_date, days_since_last_inspection, informal_actions_5yr, formal_actions_5yr, last_formal_action_date, penalties_5yr_usd, penalty_count_5yr, last_penalty_date, last_penalty_usd, echo_url (detailed facility report), fetched_at, source.

A run summary (filters, ECHO's query id and its own counts — matches, current violations, 3-year violations, inspections, penalties — pages, requests, whether the pay-per-event budget stopped the run) is stored as RUN_SUMMARY in the run's key-value store.

Pricing (pay per event)

EventPrice
run-start — once per run$0.10
record — per row written$0.005

The default pull (≤ 500 rows) costs at most $2.60; 2,000 facilities cost $10.10. Rows stop when your run's maximum charge is reached; the run summary says so.

Operator

Steelyard Ventures LLC (RetrainMap) — info@steelyardclinical.com. Not affiliated with the U.S. EPA. The Actor writes only to its own dataset and key-value store; it stores no credentials and sends nothing else.