Home › Guides › EPA facility compliance data
EPA facility compliance data: a company’s sites, violations, penalties and emissions
EPA ECHO (Enforcement and Compliance History Online) is the compliance record of every regulated industrial site in the United States — factories, refineries, treatment plants, waste handlers. Search it by company name and you get each facility’s industry, whether the EPA has found violations, inspected it or fined it, and its greenhouse-gas and toxic-release figures. Facilities that report to the Toxics Release Inventory add their parent company and the public contact they filed, and OSHA injury-reporting data adds how many people work at the site.
Who it is for
- Teams that sell to industrial sites — compliance, environmental and industrial-service vendors who need the plants a manufacturer runs, with industry codes, coordinates and the environmental contact each site filed.
- ESG, procurement and supply-chain analysts — anyone who has to check a supplier’s violation history, penalties, emissions and toxic releases before signing.
- Analysts tracing ownership — the TRI parent company shows who owns a plant today, even when the site still carries a former owner’s name.
- Environmental researchers — building facility panels by industry code and following compliance over time.
What you get
One row per facility, in the same column layout as the other foXLabs company datasets. The fields, grouped:
| Group | Fields |
|---|---|
| Identity and location | companyName (facility name as registered), registrationNumber (EPA Registry ID), status, address, city, county, state, postalCode, latitude, longitude |
| Industry | industry (NAICS title), industryCode, naicsCodes, sicCodes |
| Compliance | complianceStatus; Clean Air Act, Clean Water Act and RCRA hazardous-waste status; significantNoncompliance; quartersInNoncompliance (out of the last twelve) |
| Enforcement, last five years | inspectionCount, lastInspectionOn, formalActionCount, penaltyCount, penaltyTotal (USD, all programs), lastPenaltyOn, lastPenaltyAmount |
| Emissions | ghgEmissionsTonsCo2e (metric tons CO2e per year), triReleasesLbs (latest TRI reporting year, pounds) |
| Owner and contact (TRI reporters) | parentCompany, parentDuns, foreignParentCompany, parentEin / parentTicker / parentCik (US-listed parents, from SEC EDGAR), contactName, phone, email, triFacilityId |
| Site headcount and employer (OSHA) | employees, employeesAsOf, employeesSource, employerName, taxNumber (the site employer’s EIN), taxNumberSource |
| Provenance | sourceUrl (ECHO detailed facility report), query, scrapedAt, and error when a lookup fails |
A real row for Tesla’s Fremont plant, shortened. The contact fields are left out here; the dataset carries them.
{
"companyName": "TESLA, INC.",
"registrationNumber": "110000482898",
"status": "active",
"address": "45500 FREMONT BOULEVARD, FREMONT, CA, 94538",
"industry": "Automobile and Light Duty Motor Vehicle Manufacturing",
"industryCode": "336110",
"employees": 16609,
"employeesAsOf": "2025",
"taxNumber": "91-2197729",
"parentCompany": "TESLA INC",
"parentTicker": "TSLA",
"complianceStatus": "Significant Violation",
"significantNoncompliance": true,
"quartersInNoncompliance": 12,
"inspectionCount": 8,
"penaltyTotal": 275000,
"lastPenaltyOn": "2022-02-17",
"ghgEmissionsTonsCo2e": 47053,
"triReleasesLbs": 2125966,
"sourceUrl": "https://echo.epa.gov/detailed-facility-report?fid=110000482898"
}
Use cases
- Industrial site prospecting. Find every plant a manufacturer runs, with its industry, coordinates and the environmental contact it filed, for territory planning or for selling compliance services.
- ESG and supply-chain screening. Check a supplier’s
significantNoncomplianceflag, five-yearpenaltyTotal, greenhouse-gas emissions and toxic releases before contracting. - Ownership mapping. A plant that still carries a former owner’s name — a “Dow Chemical” plant now owned by Occidental, for example — shows its current owner in
parentCompany. US-listed parents add their ticker, CIK and EIN. - Environmental research. Assemble a facility panel by industry code and track compliance over time; every run reads ECHO live.
How to run it
Give the actor company or facility names. This is the prefilled input:
{
"queries": ["Tesla", "Dow Chemical", "Nucor Steel"],
"maxResultsPerQuery": 10
}
queries— company or facility names. ECHO matches on the facility name as registered, which is usually the operating entity rather than the corporate parent.maxResultsPerQuery— caps how many rows one query may produce.state— optional two-letter code such asTXorCAto search one state only.
No API key and no login are needed. Results export to CSV, Excel, JSON, XML or HTML, or can be pulled through the Apify API.
You pay only for delivered rows. A query that finds nothing still returns a row carrying your query and an error explaining why — and that row is not charged.
Honest limits
- A row is a facility, not a company. Facilities are registered under operating names, so searching
Teslafinds sites named Tesla;parentCompanythen tells you who owns the TRI reporters among them. Company-register fields such aslegalForm,incorporatedOn,capital,websiteandofficersstay empty. - Parent company and contact need a TRI filing. Large manufacturers mostly report to the Toxics Release Inventory; offices, service centres and small sites do not, so their rows carry neither.
- Headcount is matched conservatively. OSHA Form 300A summaries are filed by establishments with 20 or more employees in designated industries and 250 or more in all others. A facility gets a headcount only when exactly one employer at its address passes every matching test. In a 200-facility test that played no part in tuning, 44.5% of facilities got a headcount (51% for company-name searches, 26% for generic words such as Plating or Foundry), and a manual check of every match found no wrong employer.
- Two different EINs.
taxNumberis the site employer’s own EIN as filed with OSHA — often a subsidiary, such as TYSON FARMS, INC. at a Tyson Foods plant.parentEinis the listed parent’s EIN from SEC EDGAR, matched on the exact company name; subsidiaries and private parents stay empty. - Five-year windows. Inspection, formal-action and penalty counts follow ECHO’s own five-year window.
lastPenaltyOnreports the most recent penalty on record, which can be older. - Loose source search. ECHO’s name search matches loosely and is not ordered by relevance, so the actor ranks up to 1,000 matches per query: whole-word name matches first, and among those the active plants that report to TRI or the greenhouse-gas program ahead of offices and service sites.
Where the data comes from
The EPA publishes ECHO as a documented open REST service with no key and no quota, and the TRI facility records come from the EPA’s Envirofacts data service, also keyless. Listed parents are matched in SEC EDGAR, and headcount and employer EIN come from OSHA’s Injury Tracking Application data, read through a monthly-rebuilt foXLabs index. ECHO refreshes from the underlying enforcement systems weekly. Sources: EPA ECHO, EPA Envirofacts, OSHA injury and illness data.
ECHO is published so the public can see the compliance history of regulated facilities, and the TRI public contact is the person a facility designates for public inquiries about its filing.
Related data and guides
- Browse the regulatory and compliance datasets on the home page.
- US regulatory lead generation — how public filings become timed B2B leads.
- SEC filings, enforcement and the LEI — the EDGAR side of a listed parent company.
- FINRA BrokerCheck firm data — registrations and disclosure events for broker-dealers and investment advisers.
Frequently asked questions
Do I need an EPA API key to get ECHO data?
No. The EPA publishes ECHO and Envirofacts as open REST services with no key, and the actor needs no login. You pay only for the rows a run delivers; failed or empty lookups are not charged.
How current is the data?
Every run queries the source live. ECHO refreshes from the underlying enforcement systems weekly, and the parent company and contact are read from the facility’s TRI record in Envirofacts at run time.
Why do some facilities have no parent company or contact?
Those fields come from the Toxics Release Inventory, so only facilities that report to TRI carry them. Large manufacturers mostly do; offices, service centres and small sites do not.
Where do the site headcount and EIN come from?
From OSHA Form 300A summaries, matched at the facility’s address only when exactly one employer there passes every test. In a 200-facility test that played no part in tuning, 44.5% of facilities got a headcount, and a manual check of every match found no wrong employer.
Can I limit the search to one state?
Yes. Set state to a two-letter code such as TX or CA; it maps onto ECHO’s own state filter.
Start with the prefilled input — Tesla, Dow Chemical and Nucor Steel — and export the facility rows to CSV, Excel or JSON.
Open EPA Facility Compliance Data on Apify →