EPA ECHO Facility Compliance & Enforcement Scraper avatar

EPA ECHO Facility Compliance & Enforcement Scraper

Pricing

from $1.75 / 1,000 results

Go to Apify Store
EPA ECHO Facility Compliance & Enforcement Scraper

EPA ECHO Facility Compliance & Enforcement Scraper

Scrape US EPA ECHO facility data: compliance status (air, water, hazardous waste), violations, inspections, penalties ($), major-polluter flag, %minority, coordinates and program IDs. For ESG, due diligence and compliance research. Not affiliated with the EPA.

Pricing

from $1.75 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

18 hours ago

Last modified

Features

Limited permissions

Share

🌿 EPA ECHO Scraper — Facility Compliance, Violations & Penalties Data

Apify Actor Maintenance Data Quality Output Formats Pagination Compliance

Extract official US environmental enforcement and compliance records from the EPA Enforcement & Compliance History Online (ECHO) system at scale. Search regulated industrial, commercial, and municipal facilities across the United States by company name, state, city, ZIP code, or industry NAICS/SIC codes to retrieve structured data on inspections, formal enforcement actions, civil penalties in USD, environmental justice metrics (% minority), and multi-statute compliance statuses across Air (CAA), Water (CWA), and Hazardous Waste (RCRA).

Whether conducting ESG risk assessments, corporate M&A due diligence, vendor environmental audits, insurance underwriting, or environmental justice research, this scraper enables seamless bulk data extraction into JSON, CSV, and Excel without API rate-limit bottlenecks or browser overhead.


⚡ At a glance

FeatureSpecification
Data SourceUS EPA Enforcement & Compliance History Online (ECHO) database
Search ModesKeyword / Company Name, State, City, ZIP, NAICS, SIC industry codes
Enforcement FiltersServer-side current violations (onlyWithViolations), Major facilities (onlyMajor)
Throughput Speed~500 facilities per batch (~10–25s per 1,000 records)
Pagination LimitUnlimited (set maxItems: 0 for complete dataset or 1,000+ results)
Default Sample RunAutomatic multi-state sample (~100 items) when run without filters
Deduplication100% deduplicated across EPA FRS Registry IDs
Export FormatsDataset (JSON, CSV, XML, Excel) & Key-Value Store OUTPUT mirror
Proxy RequirementStandard Datacenter Proxy (fully supported, cost-effective)
Execution ArchitecturePure protocol-level HTTP pipeline (sub-second query resolution)

🔎 Why scrape EPA ECHO data?

The EPA ECHO platform serves as the authoritative federal repository documenting compliance histories for over 800,000 regulated industrial, manufacturing, chemical, utility, and municipal sites across the 50 US states and territories.

While the public web portal is designed for single-facility lookups, extracting enterprise-wide or regional records manually is slow and error-prone. This scraper turns manual searches into an automated, bulk data extraction engine capable of delivering thousands of verified, clean rows directly into your analytical workflows.

Strategic Value & Business Intelligence Applications:

  • ESG & Sustainability Benchmarking: Quantify corporate environmental track records using hard government metrics (total penalties paid in USD, active non-compliance quarters, repeat violations) rather than self-reported sustainability claims.
  • M&A & Private Equity Due Diligence: Uncover hidden environmental liabilities, pending enforcement actions, and historical fines before completing mergers, acquisitions, or commercial real estate transactions.
  • Supply Chain & Counterparty Vetting: Verify supplier compliance with Clean Air and Clean Water regulations across US operational footprints to mitigate vendor disruption risks.
  • Credit Rating & Insurance Underwriting: Incorporate regulatory infraction frequencies and major facility designations into commercial underwriting models and actuarial loss risk matrices.
  • Environmental Justice & Policy Research: Analyze correlations between industrial pollution enforcement and local community demographics via the demographic % minority metric.
  • Academic & Legal Discovery: Extract historical violation logs and formal administrative orders for regulatory impact studies and environmental litigation support.

🏛️ Environmental statutes covered

This scraper extracts official compliance statuses and program identification codes across all major federal environmental regulatory statutes:

  1. Clean Air Act (CAA): Stationary air pollution source permits, Title V major emitters, synthetic minors, and compliance records under the National Emission Standards for Hazardous Air Pollutants (NESHAP).
  2. Clean Water Act (CWA): National Pollutant Discharge Elimination System (NPDES) surface water discharge permits, municipal stormwater permits, and industrial effluent violations.
  3. Resource Conservation and Recovery Act (RCRA): Hazardous waste handlers, Treatment, Storage, and Disposal Facilities (TSDFs), large-quantity generators (LQG), and corrective action statuses.
  4. Safe Drinking Water Act (SDWA): Public water system regulatory records, maximum contaminant level (MCL) violations, and community water supply monitoring.
  5. Toxics Release Inventory (TRI): Chemical manufacturing, processing, and environmental release reporting identifiers.
  6. Greenhouse Gas Reporting Program (GHGRP): Mandatory federal direct greenhouse gas emitter identifiers and reporting links.

✨ Key features

  • 🏢 Multi-Statute Compliance Auditing: Captures overall complianceStatus as well as granular statute-specific flags (airComplianceStatus, waterComplianceStatus, hazWasteComplianceStatus, drinkingWaterComplianceStatus).
  • 💰 Granular Penalty & Enforcement Tracking: Scrapes cumulative civil penalties (totalPenaltiesUsd), penalty counts, most recent penalty dates, formal enforcement administrative actions, and inspection counts.
  • 🎯 High-Precision Server-Side Filtering: Toggle onlyWithViolations to isolate active violators or onlyMajor to target major industrial facilities where penalty and program data is richest.
  • ⚡ Deep Pagination Support (1,000+ Records): Automatically pages through multi-thousand result sets in 500-record batches without truncation or artificial caps.
  • 🧼 Standardized Field Normalization: Automatically scrubs missing indicators, standardizes boolean flags, parses monetary strings into pure numeric amounts, and formats geographic coordinates.
  • 🔗 Direct Inspection Permalinks: Produces verified links to each facility's complete Detailed Facility Report (detailedReportUrl) for one-click manual audits.
  • 🛡️ Zero Browser Overhead: Pure lightweight protocol architecture for rapid execution, minimal memory consumption, and reliable scheduled runs.

📥 Input parameters

The actor accepts flexible input parameters. All filters can be combined to refine searches.

ParameterTypeDefaultDescription
searchTermsarray["exxon mobil"]List of company or facility names to search (e.g. ["chevron", "dupont"]).
statesarray["TX"]Two-letter US state postal abbreviations (e.g. ["TX", "CA", "LA"]).
citiesarray[]Optional list of specific city names to restrict search.
zipCodesarray[]Optional list of 5-digit US ZIP codes.
naicsCodesarray[]North American Industry Classification System codes (e.g. ["324110"] for petroleum refineries).
sicCodesarray[]Standard Industrial Classification codes (e.g. ["2911"]).
onlyMajorbooleanfalseWhen true, restricts results exclusively to federally designated major facilities.
onlyWithViolationsbooleanfalseWhen true, returns only facilities with current active violations or significant non-compliance.
maxItemsinteger0Maximum total records to scrape (0 = unlimited up to query total; prefilled to 100 for rapid testing).
proxyConfigurationobject{ "useApifyProxy": true }Proxy settings. Standard datacenter proxies operate reliably.

📊 Data fields & output structure

Every output record contains comprehensive facility identification, geographic data, regulatory statuses, violation metrics, and penalty histories.

🏢 Facility Identity & Location

FieldTypeCoverageDescription
registryIdstring🟢 High (100%)EPA Facility Registry Service (FRS) unique identifier
namestring🟢 High (100%)Official facility or operating company name
streetstring🟢 High (>98%)Physical facility street address
citystring🟢 High (100%)Municipality or city name
statestring🟢 High (100%)Two-letter US state code
zipstring🟢 High (>98%)Standard 5-digit postal ZIP code
countystring🟢 High (>98%)County name
epaRegionstring🟢 High (100%)Federal EPA administrative region number (1–10)
latitudestring🟢 High (>98%)Geographic latitude coordinate
longitudestring🟢 High (>98%)Geographic longitude coordinate

📋 Classification & Demographics

FieldTypeCoverageDescription
sicCodesstring🟡 ConditionalAssociated Standard Industrial Classification codes
naicsCodesstring🟡 ConditionalAssociated North American Industry Classification codes
federalAgencystring🟡 ConditionalOperating federal department (if federally owned site)
inIndianCountrystring🟢 High (100%)Boolean indicator (true/false) of tribal territory location
majorFacilitystring🟢 High (100%)Flag designating major emitter or permit threshold status
percentMinoritystring🟢 High (>95%)Surrounding community demographic minority percentage (EJ screening)

⚖️ Environmental Compliance & Violations

FieldTypeCoverageDescription
complianceStatusstring🟢 High (100%)Overall compliance status evaluation
airComplianceStatusstring🟡 ConditionalClean Air Act (CAA) compliance standing
waterComplianceStatusstring🟡 ConditionalClean Water Act (CWA/NPDES) compliance standing
hazWasteComplianceStatusstring🟡 ConditionalResource Conservation and Recovery Act (RCRA) standing
drinkingWaterComplianceStatusstring🟡 ConditionalSafe Drinking Water Act (SDWA) standing
significantViolatorstring🟢 High (100%)Significant Non-Complier (SNC) indicator (true/false)
quartersInNonCompliancestring🟢 High (100%)Total quarterly monitoring periods in non-compliance (past 3 years)
threeYearComplianceHistorystring🟢 High (100%)12-quarter chronological compliance code sequence

🔨 Inspections, Enforcement & Penalties

FieldTypeCoverageDescription
inspectionCountstring🟢 High (100%)Total EPA and state environmental inspections recorded
lastInspectionDatestring🟡 ConditionalDate of most recent formal site inspection
formalActionCountstring🟢 High (100%)Number of formal administrative and judicial enforcement actions
lastFormalActionDatestring🟡 ConditionalDate of latest formal enforcement action
totalPenaltiesUsdstring🟢 High (100%)Cumulative civil and administrative penalties assessed in USD
penaltyCountstring🟢 High (100%)Total count of individual penalty actions
lastPenaltyDatestring🟡 ConditionalDate of latest penalty assessment
lastPenaltyAmountUsdstring🟡 ConditionalDollar amount of most recent penalty assessment

🆔 Environmental Program Identifiers

FieldTypeCoverageDescription
airIdsstring🟡 ConditionalClean Air Act program permit identifiers
waterIdsstring🟡 ConditionalNational Pollutant Discharge Elimination System (NPDES) IDs
hazWasteIdsstring🟡 ConditionalRCRA hazardous waste permit identifiers
drinkingWaterIdsstring🟡 ConditionalSDWA public water system identifiers
toxicsReleaseIdsstring🟡 ConditionalToxics Release Inventory (TRI) program IDs
greenhouseGasIdsstring🟡 ConditionalMandatory Greenhouse Gas Reporting Program IDs
detailedReportUrlstring🟢 High (100%)Direct URL to complete Detailed Facility Report
scrapedAtstring🟢 High (100%)ISO 8601 scrape timestamp

💡 Example output record

{
"registryId": "110000456123",
"name": "BAYTOWN OLEFINS PLANT",
"street": "3525 DECKER DRIVE",
"city": "BAYTOWN",
"state": "TX",
"zip": "77520",
"county": "HARRIS",
"epaRegion": "6",
"latitude": 29.7561,
"longitude": -95.0124,
"sicCodes": ["2869"],
"naicsCodes": ["325110"],
"federalAgency": "",
"inIndianCountry": false,
"majorFacility": true,
"complianceStatus": "Significant Violation",
"airComplianceStatus": "Significant Violation",
"waterComplianceStatus": "No Violation",
"hazWasteComplianceStatus": "No Violation",
"drinkingWaterComplianceStatus": "",
"significantViolator": true,
"quartersInNonCompliance": 8,
"threeYearComplianceHistory": "VVVVVVVVVVVV",
"inspectionCount": 24,
"lastInspectionDate": "2024-03-12",
"formalActionCount": 5,
"lastFormalActionDate": "2023-11-18",
"totalPenaltiesUsd": 2250000,
"penaltyCount": 3,
"lastPenaltyDate": "2023-11-18",
"lastPenaltyAmountUsd": 750000,
"percentMinority": 68.4,
"airIds": ["TX000123456"],
"waterIds": ["TXR05A123"],
"hazWasteIds": ["TXD000147258"],
"drinkingWaterIds": [],
"toxicsReleaseIds": ["77520XXNMB3525D"],
"greenhouseGasIds": ["1002345"],
"detailedReportUrl": "https://echo.epa.gov/detailed-facility-report?fid=110000456123",
"scrapedAt": "2026-11-10T16:35:00.000Z"
}

🎯 Practical input recipes

Recipe 1: Nationwide Corporate Footprint Audit

Audit environmental violations for a major enterprise across all operating sites:

{
"searchTerms": ["chevron", "dow chemical"],
"maxItems": 500,
"onlyMajor": false
}

Recipe 2: Active Violators in an Industrial State

Extract all current Significant Non-Compliers in the state of Texas:

{
"states": ["TX"],
"onlyWithViolations": true,
"onlyMajor": true,
"maxItems": 1000
}

Recipe 3: Chemical Manufacturing Sector Benchmark

Scrape chemical manufacturing facilities (NAICS 325) in the Gulf Coast region:

{
"states": ["TX", "LA"],
"naicsCodes": ["325"],
"maxItems": 1500
}

Recipe 4: Local Community & Environmental Justice Audit

Audit industrial operations located in specific ZIP codes:

{
"zipCodes": ["77012", "77017", "70079"],
"maxItems": 250
}

Recipe 5: High-Impact Air Polluter Screening

Extract major facilities with Title V Clean Air Act permits in California:

{
"states": ["CA"],
"onlyMajor": true,
"maxItems": 500
}

Recipe 6: Comprehensive Corporate Due Diligence

Audit environmental liabilities for a holding group across all manufacturing subsidiaries:

{
"searchTerms": ["general electric", "honeywell"],
"onlyMajor": false,
"maxItems": 1000
}

🚀 How to use & integrate

  1. Configure Parameters: Specify company name keywords, states, or NAICS industry codes.
  2. Select Filters: Toggle onlyWithViolations if you only need non-compliant sites.
  3. Execute Run: Run via Apify Web Console or trigger asynchronously via API:
    curl --request POST \
    --url "https://api.apify.com/v2/acts/haketa~epa-echo-scraper/runs?token=YOUR_API_TOKEN" \
    --header 'Content-Type: application/json' \
    --data '{"states": ["TX"], "onlyWithViolations": true, "maxItems": 200}'
  4. Consume Dataset:
    • Python: Load directly into a Pandas DataFrame using apify-client.
    • Node.js: Stream records via Apify SDK.
    • No-Code: Export to Google Sheets or trigger downstream workflows via Zapier or Make.

📈 Scalability & pagination guide

  • 500-Record Sequential Batches: The scraper automatically queries and paginates through the EPA ECHO database in 500-facility batches. Setting maxItems: 0 instructs the engine to pull every available match.
  • Deduplication Safeguards: Facility records are deduplicated by their unique FRS Registry ID in memory. Overlapping geographic and keyword queries will never create duplicate rows.
  • Fast Default Validation: Running the actor with empty input defaults to a sample search (TX, CA) capped at 100 records for fast, cost-efficient sanity checking.

💡 Optimization & best practices

  • Targeted Due Diligence: When researching an acquisition target or corporate entity, query searchTerms with the primary trade names and corporate parent names. Leave location filters open to discover all subsidiary facilities across the US.
  • Isolating High-Risk Facilities: For rapid environmental risk screening, enable both onlyMajor: true and onlyWithViolations: true. This narrows the dataset to significant industrial facilities currently experiencing non-compliance issues.
  • Managing High-Volume Statewide Scrapes: When scraping large manufacturing states like Texas, California, or Ohio without search terms, set maxItems according to your quota needs (e.g., 1000 or 5000).
  • Combining Industry & State Filters: Narrow by NAICS code (e.g., 325 for Chemical Manufacturing) combined with specific states to benchmark regional industrial compliance performance.
  • Handling Empty Values: Some facilities may not have recorded penalties or specific program IDs if they operate under general permits or have never received formal enforcement actions. Filter on totalPenaltiesUsd > 0 in your downstream analysis for penalty-focused investigations.

❓ Frequently asked questions

Yes. The EPA ECHO database is an open US federal government public record. This scraper extracts public regulatory information.

Do I need an EPA API key or login?

No. No login, account, or private API keys are required. The scraper handles all protocol requirements out of the box.

How many facilities can I scrape in a single run?

You can scrape anywhere from 10 to 10,000+ facilities. Because pagination is handled in 500-facility chunks, scraping 1,000 facilities typically finishes in under 30 seconds.

Why are some compliance and penalty fields blank?

Federal and state agencies only populate penalty and statutory enforcement histories for regulated facilities that have been inspected or cited. Non-industrial or passive facilities will naturally have fewer enforcement entries.

What is the Registry ID?

The Registry ID is the EPA's Facility Registry Service (FRS) master identifier. It provides a permanent key to cross-reference data across federal environmental databases.

What does the % Minority field represent?

The percentMinority field is the demographic percentage of minority residents living within the surrounding census block or radial zone, used in federal environmental justice screenings.

Can I schedule recurring monitoring runs?

Yes. You can use Apify's built-in Scheduler to run weekly or monthly audits of your target companies or regions and automatically push alerts when new violations or penalties appear.

How does deduplication work?

Every facility scraped is checked against an internal set of unique EPA FRS Registry IDs. If multiple search terms or overlapping geographic queries return the same facility, it is emitted only once, ensuring clean datasets with 0% duplication rate.

What is the difference between major and minor facilities?

Major facilities (onlyMajor: true) are industrial plants and utilities that exceed specific statutory emission or discharge thresholds (e.g., emitting more than 100 tons per year of a criteria air pollutant, or major municipal wastewater plants discharging more than 1 million gallons per day). These facilities undergo stricter compliance monitoring and have the richest compliance histories.

Can I query by multiple states or NAICS codes at the same time?

Yes. The actor accepts arrays for states (e.g., ["TX", "CA", "LA"]) and NAICS codes (e.g., ["324110", "325110"]). The query engine handles multi-value requests efficiently.

How are penalties calculated?

The totalPenaltiesUsd field reflects the cumulative total of all civil and administrative penalties assessed against the facility across all tracked environmental statutes, normalized into clean numerical values.

How can I export the data into a spreadsheet or data warehouse?

From the Apify dataset tab, click "Export" and choose JSON, CSV, or Excel format. Alternatively, connect directly to BigQuery, Snowflake, or PostgreSQL via Apify integrations or webhook notifications upon run completion.



📋 Changelog

v1.2 (2026-11)

  • Deep Pagination Unlocked: Fully unlocked continuous multi-page pagination for 1,000+ facilities; removed legacy limits and streamlined 500-facility batch requests.
  • Fast Prefill Optimization: Adjusted prefill limits to 100 records for sub-15s sample execution.
  • Default Fallback Robustness: Added safe fallback defaults (TX, CA) ensuring runs with empty input payloads execute reliably with ~100 sample records.
  • URL Sanitization: Standardized deterministic detailed report URL construction from registry IDs.

v1.1 (2026-10)

  • Server-Side Violation Filtering: Upgraded onlyWithViolations filter to utilize server-side parameter flags, eliminating false-positive client-side regex matches.
  • Key-Value Store Mirroring: Added automatic OUTPUT mirroring in Key-Value Store for synchronous API integrations.

v1.0 (2026-09)

  • Initial release featuring multi-statute compliance parsing, FRS ID mapping, environmental justice metrics, and penalty aggregations.
⌂ 换网址