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

What you get

One row per facility, in the same column layout as the other foXLabs company datasets. The fields, grouped:

GroupFields
Identity and locationcompanyName (facility name as registered), registrationNumber (EPA Registry ID), status, address, city, county, state, postalCode, latitude, longitude
Industryindustry (NAICS title), industryCode, naicsCodes, sicCodes
CompliancecomplianceStatus; Clean Air Act, Clean Water Act and RCRA hazardous-waste status; significantNoncompliance; quartersInNoncompliance (out of the last twelve)
Enforcement, last five yearsinspectionCount, lastInspectionOn, formalActionCount, penaltyCount, penaltyTotal (USD, all programs), lastPenaltyOn, lastPenaltyAmount
EmissionsghgEmissionsTonsCo2e (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
ProvenancesourceUrl (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

How to run it

Give the actor company or facility names. This is the prefilled input:

{
  "queries": ["Tesla", "Dow Chemical", "Nucor Steel"],
  "maxResultsPerQuery": 10
}

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.

Open EPA Facility Compliance Data on Apify →

Honest limits

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

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 →