# EPA Toxic Release - Compliance Search (`pink_comic/epa-tri-toxic-release-search`) Actor

Search 6M+ EPA Toxic Release Inventory records. Find facilities releasing chemicals by name, location, or industry. Get release amounts, chemicals, and compliance data for environmental research, due diligence, and regulatory monitoring. No API key required. Pay per result.

- **URL**: https://apify.com/pink\_comic/epa-tri-toxic-release-search.md
- **Developed by:** [Ava Torres](https://apify.com/pink_comic) (community)
- **Categories:** Automation, Developer tools, AI
- **Stats:** 3 total users, 1 monthly users, 90.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## EPA Toxic Release Inventory (TRI) Search - Chemical Pollution & Facility Data

Search the EPA Toxic Release Inventory (TRI) for chemical pollution data reported by industrial facilities. Find facilities by state, ZIP code, facility name, or chemical. Get air emissions, water discharges, land disposal, underground injection, and off-site chemical transfers — with parent company names, EPA registry IDs, and open/closed status. Covers 25,000+ reporting facilities, 650+ chemicals, and data back to 1987.

Data is sourced from the EPA Envirofacts public API. No API key required.

---

### Output Fields

| Field | Type | Description |
|---|---|---|
| `facilityId` | string | EPA TRI Facility ID |
| `facilityName` | string | Facility name |
| `city` | string | City |
| `state` | string | State code |
| `zipCode` | string | ZIP code |
| `parentCompany` | string | Parent company name |
| `closed` | boolean | Whether the facility is currently closed |
| `releases` | array | Chemical release reports for the facility |

Each item in `releases` includes chemical name, reporting year, and quantities released to air (fugitive and stack), water, underground injection, and land, plus off-site transfer amounts.

---

### Use Cases

- **ESG research and sustainability reporting** — Identify facilities emitting specific chemicals, quantify release volumes, and assess environmental risk by geography or parent company.
- **Environmental due diligence** — Screen industrial sites or neighboring parcels before real estate acquisition, lending, or investment.
- **Regulatory and legal research** — Pull historical release records for a facility or chemical as part of litigation support or regulatory compliance review.
- **Investigative journalism** — Identify the largest polluters in a state or ZIP code, track trends over time, or expose parent companies behind facility operations.
- **Community and public health analysis** — Assess chemical exposures in a specific ZIP code or county and identify facility clusters near residential areas.
- **Supply chain sustainability auditing** — Verify whether suppliers are among TRI reporters and assess the scale and type of their chemical releases.

---

### How to Use

Choose a search type and provide the required input. Use the `year` field to target a specific reporting year, or set it to `0` for all available years.

**Example input — all TRI-reporting facilities in Texas (2022):**

```json
{
  "searchType": "state",
  "state": "TX",
  "year": 2022,
  "maxResults": 25
}
````

**Example input — search for Shell Oil facilities:**

```json
{
  "searchType": "facility",
  "query": "SHELL OIL",
  "state": "",
  "year": 2022,
  "maxResults": 25
}
```

**Example input — facilities reporting benzene releases:**

```json
{
  "searchType": "chemical",
  "query": "Benzene",
  "state": "",
  "year": 2022,
  "maxResults": 25
}
```

**Example input — facilities in a specific ZIP code:**

```json
{
  "searchType": "zip",
  "zipCode": "77001",
  "year": 2022,
  "maxResults": 25
}
```

#### Search Types

| Value | Description |
|---|---|
| `facility` | Search by facility name (partial match) |
| `state` | All TRI-reporting facilities in a state |
| `zip` | Facilities within a specific ZIP code |
| `chemical` | Facilities reporting releases of a specific chemical |

***

### Cost

Approximately **$0.10 per run** (platform start fee) plus minimal compute. Most runs complete in under 30 seconds.

***

### Output Formats

Results are available as **JSON**, **CSV**, and **Excel** from the Apify dataset interface. The `releases` array in JSON contains the full chemical-level detail for each facility.

***

### FAQ

**Does this require an EPA API key?**
No. The EPA Envirofacts API is public and requires no authentication.

**How far back does TRI data go?**
TRI reporting began in 1987. Set `year` to any year from 1987 onward, or set it to `0` to retrieve all available years for a facility.

**What chemicals are covered?**
The TRI program covers 650+ chemicals and chemical categories that meet EPA toxicity thresholds. This includes common industrial chemicals such as ammonia, benzene, lead, mercury, sulfuric acid, and many others.

**What industries are required to report?**
Manufacturing, mining, electric utilities, hazardous waste treatment, and certain other industries with 10+ employees that use TRI chemicals above reporting thresholds must file annual TRI reports.

**What is the difference between air, water, and land releases?**
The TRI categorizes releases by environmental medium: fugitive air emissions (uncontrolled), stack air emissions (through a smokestack), surface water discharges, underground injection, on-site land disposal, and off-site transfers to treatment or disposal facilities.

# Actor input Schema

## `searchType` (type: `string`):

How to search for toxic release data.

## `query` (type: `string`):

Facility name (for facility search) or chemical name (for chemical search). Examples: "SHELL OIL", "DUPONT", "Ammonia", "Benzene".

## `state` (type: `string`):

Two-letter state code (e.g. "TX", "CA", "OH"). Required for state search, optional filter for other searches.

## `zipCode` (type: `string`):

5-digit ZIP code for ZIP search (e.g. "77001", "90210").

## `year` (type: `integer`):

Filter by reporting year (e.g. 2022). Set to 0 for all years. TRI data goes back to 1987.

## `maxResults` (type: `integer`):

Maximum number of facilities to return.

## Actor input object example

```json
{
  "searchType": "state",
  "query": "",
  "state": "TX",
  "zipCode": "",
  "year": 2022,
  "maxResults": 25
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchType": "state",
    "query": "",
    "state": "TX",
    "year": 2022,
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("pink_comic/epa-tri-toxic-release-search").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchType": "state",
    "query": "",
    "state": "TX",
    "year": 2022,
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("pink_comic/epa-tri-toxic-release-search").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchType": "state",
  "query": "",
  "state": "TX",
  "year": 2022,
  "maxResults": 25
}' |
apify call pink_comic/epa-tri-toxic-release-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=pink_comic/epa-tri-toxic-release-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EPA Toxic Release - Compliance Search",
        "description": "Search 6M+ EPA Toxic Release Inventory records. Find facilities releasing chemicals by name, location, or industry. Get release amounts, chemicals, and compliance data for environmental research, due diligence, and regulatory monitoring. No API key required. Pay per result.",
        "version": "0.1",
        "x-build-id": "UyfdDkco9TyGysVRK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/pink_comic~epa-tri-toxic-release-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-pink_comic-epa-tri-toxic-release-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/pink_comic~epa-tri-toxic-release-search/runs": {
            "post": {
                "operationId": "runs-sync-pink_comic-epa-tri-toxic-release-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/pink_comic~epa-tri-toxic-release-search/run-sync": {
            "post": {
                "operationId": "run-sync-pink_comic-epa-tri-toxic-release-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchType": {
                        "title": "Search Type",
                        "enum": [
                            "facility",
                            "state",
                            "zip",
                            "chemical"
                        ],
                        "type": "string",
                        "description": "How to search for toxic release data.",
                        "default": "state"
                    },
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Facility name (for facility search) or chemical name (for chemical search). Examples: \"SHELL OIL\", \"DUPONT\", \"Ammonia\", \"Benzene\".",
                        "default": ""
                    },
                    "state": {
                        "title": "State",
                        "type": "string",
                        "description": "Two-letter state code (e.g. \"TX\", \"CA\", \"OH\"). Required for state search, optional filter for other searches.",
                        "default": "TX"
                    },
                    "zipCode": {
                        "title": "ZIP Code",
                        "type": "string",
                        "description": "5-digit ZIP code for ZIP search (e.g. \"77001\", \"90210\").",
                        "default": ""
                    },
                    "year": {
                        "title": "Reporting Year",
                        "minimum": 0,
                        "maximum": 2025,
                        "type": "integer",
                        "description": "Filter by reporting year (e.g. 2022). Set to 0 for all years. TRI data goes back to 1987.",
                        "default": 2022
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of facilities to return.",
                        "default": 25
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
