246 lines
6.6 KiB
Markdown
246 lines
6.6 KiB
Markdown
---
|
|
title: "EPA Envirofacts API Reference"
|
|
task: ""
|
|
lineage_type: import
|
|
upstream_source: https://github.com/K-Dense-AI/scientific-agent-skills/blob/9c9bd2e9/skills/database-lookup/references/epa.md
|
|
upstream_sha: 9c9bd2e9
|
|
imported_at: 2026-06-26
|
|
prompt_class: prompt
|
|
upstream_changes: accepted
|
|
author: upstream
|
|
validated: false
|
|
---
|
|
|
|
# EPA Envirofacts API Reference
|
|
|
|
## Base URL
|
|
```
|
|
https://data.epa.gov/efservice
|
|
```
|
|
|
|
Note: The legacy URL `https://enviro.epa.gov/enviro/efservice` may redirect. Use the current base URL above.
|
|
|
|
## Authentication
|
|
**None required.** Fully public, no API key needed.
|
|
|
|
## Rate Limits
|
|
- No documented per-user rate limit.
|
|
- Large result sets may time out. Use row limits and pagination.
|
|
|
|
## URL Pattern
|
|
Envirofacts uses a RESTful URL-based query pattern:
|
|
```
|
|
https://data.epa.gov/efservice/{table}/{column}/{operator}/{value}/.../rows/{start}:{end}/{format}
|
|
```
|
|
|
|
- **{table}**: Database table name (e.g. `TRI_FACILITY`, `AQS_SITES`).
|
|
- **{column}/{operator}/{value}**: Filter conditions, chained in the URL path.
|
|
- **Operators**: `=` (implicit, just use `/{column}/{value}`), `>`, `<`, `!=`, `BEGINNING` (starts with), `CONTAINING`.
|
|
- **rows/{start}:{end}**: Row range for pagination (0-based).
|
|
- **{format}**: `JSON`, `XML`, `CSV`, `EXCEL`. Appended as the last path segment.
|
|
|
|
**Multiple filters** are chained sequentially in the URL path.
|
|
|
|
---
|
|
|
|
## Key Databases and Tables
|
|
|
|
### 1. Toxics Release Inventory (TRI)
|
|
|
|
Tracks releases of toxic chemicals from industrial facilities.
|
|
|
|
**Key Tables:**
|
|
| Table | Description |
|
|
|-------|-------------|
|
|
| `TRI_FACILITY` | Facility information (name, address, coordinates). |
|
|
| `TRI_REPORTING_FORM` | Annual reporting form data. |
|
|
| `TRI_RELEASE_QTY` | Quantities of releases by media (air, water, land). |
|
|
| `TRI_TRANSFER_QTY` | Quantities transferred off-site. |
|
|
| `TRI_CHEM_INFO` | Chemical information. |
|
|
|
|
**Example -- TRI facilities in North Carolina:**
|
|
```
|
|
https://data.epa.gov/efservice/TRI_FACILITY/STATE_ABBR/NC/rows/0:9/JSON
|
|
```
|
|
|
|
**Response:**
|
|
```json
|
|
[
|
|
{
|
|
"TRI_FACILITY_ID": "27601MPLNT501WE",
|
|
"FACILITY_NAME": "EXAMPLE MANUFACTURING PLANT",
|
|
"STREET_ADDRESS": "501 WEST MAIN ST",
|
|
"CITY_NAME": "RALEIGH",
|
|
"COUNTY_NAME": "WAKE",
|
|
"STATE_ABBR": "NC",
|
|
"ZIP_CODE": "27601",
|
|
"LATITUDE": 35.7796,
|
|
"LONGITUDE": -78.6382,
|
|
"FEDERAL_FACILITY_FLAG": "NO",
|
|
"INDUSTRY_SECTOR_CODE": "325",
|
|
"PRIMARY_SIC_CODE": "2819",
|
|
"PRIMARY_NAICS_CODE": "325180"
|
|
}
|
|
]
|
|
```
|
|
|
|
**Example -- TRI releases of a specific chemical in a state (2022):**
|
|
```
|
|
https://data.epa.gov/efservice/TRI_RELEASE_QTY/STATE_ABBR/TX/REPORTING_YEAR/2022/CHEM_NAME/CONTAINING/BENZENE/rows/0:24/JSON
|
|
```
|
|
|
|
### 2. Air Quality System (AQS)
|
|
|
|
Air quality monitoring data from the national monitoring network.
|
|
|
|
**Key Tables:**
|
|
| Table | Description |
|
|
|-------|-------------|
|
|
| `AQS_SITES` | Monitoring site metadata. |
|
|
| `AQS_MONITORS` | Monitor-level info (parameters measured). |
|
|
| `AQS_ANNUAL_SUMMARY` | Annual summary statistics per monitor. |
|
|
| `AQS_DAILY_SUMMARY` | Daily summary observations. |
|
|
|
|
**Example -- AQS monitoring sites in California:**
|
|
```
|
|
https://data.epa.gov/efservice/AQS_SITES/STATE_CODE/06/rows/0:9/JSON
|
|
```
|
|
|
|
**Example -- annual ozone summary for a county:**
|
|
```
|
|
https://data.epa.gov/efservice/AQS_ANNUAL_SUMMARY/STATE_CODE/06/COUNTY_CODE/037/PARAMETER_CODE/44201/rows/0:9/JSON
|
|
```
|
|
|
|
**Common AQS Parameter Codes:**
|
|
| Code | Pollutant |
|
|
|-------|-----------|
|
|
| `44201` | Ozone |
|
|
| `42401` | SO2 |
|
|
| `42101` | CO |
|
|
| `42602` | NO2 |
|
|
| `81102` | PM10 |
|
|
| `88101` | PM2.5 (FRM) |
|
|
| `88502` | PM2.5 (non-FRM) |
|
|
| `14129` | Lead (Pb) |
|
|
|
|
### 3. Facility Registry Service (FRS)
|
|
|
|
Central registry of EPA-regulated facilities.
|
|
|
|
**Key Tables:**
|
|
| Table | Description |
|
|
|-------|-------------|
|
|
| `FRS_FACILITY_SITE` | Facility location and identifiers. |
|
|
| `FRS_PROGRAM_FACILITY` | Links facilities to EPA programs. |
|
|
| `FRS_NAICS` | NAICS codes for facilities. |
|
|
| `FRS_SIC` | SIC codes for facilities. |
|
|
|
|
**Example -- EPA-regulated facilities by zip code:**
|
|
```
|
|
https://data.epa.gov/efservice/FRS_FACILITY_SITE/POSTAL_CODE/90210/rows/0:9/JSON
|
|
```
|
|
|
|
### 4. Safe Drinking Water (SDWIS)
|
|
|
|
Public drinking water system data.
|
|
|
|
**Key Tables:**
|
|
| Table | Description |
|
|
|-------|-------------|
|
|
| `WATER_SYSTEM` | Water system info. |
|
|
| `VIOLATION` | Drinking water violations. |
|
|
| `LCR_SAMPLE_RESULT` | Lead and Copper Rule sample results. |
|
|
|
|
**Example -- drinking water violations in a state:**
|
|
```
|
|
https://data.epa.gov/efservice/VIOLATION/PWSID/BEGINNING/OH/rows/0:19/JSON
|
|
```
|
|
|
|
### 5. Greenhouse Gas Reporting (GHG)
|
|
|
|
Facility-level greenhouse gas emissions data.
|
|
|
|
**Key Tables:**
|
|
| Table | Description |
|
|
|-------|-------------|
|
|
| `PUB_DIM_FACILITY` | GHG reporting facility info. |
|
|
| `PUB_FACTS_SECTOR_GHG_EMISSION` | Emissions by sector. |
|
|
|
|
**Example -- GHG facilities in a state:**
|
|
```
|
|
https://data.epa.gov/efservice/PUB_DIM_FACILITY/STATE/TX/rows/0:9/JSON
|
|
```
|
|
|
|
---
|
|
|
|
## Query Patterns
|
|
|
|
### Filtering with operators
|
|
```
|
|
# Exact match (implicit =)
|
|
/TABLE/COLUMN/VALUE/JSON
|
|
|
|
# Greater than
|
|
/TABLE/COLUMN/>/VALUE/JSON
|
|
|
|
# Less than
|
|
/TABLE/COLUMN/</VALUE/JSON
|
|
|
|
# Not equal
|
|
/TABLE/COLUMN/!=/VALUE/JSON
|
|
|
|
# Starts with
|
|
/TABLE/COLUMN/BEGINNING/VALUE/JSON
|
|
|
|
# Contains
|
|
/TABLE/COLUMN/CONTAINING/VALUE/JSON
|
|
```
|
|
|
|
### Combining filters
|
|
Chain multiple column/value pairs:
|
|
```
|
|
/TABLE/COLUMN1/VALUE1/COLUMN2/VALUE2/JSON
|
|
```
|
|
|
|
### Pagination
|
|
Use `rows/{start}:{end}` (0-based, inclusive):
|
|
```
|
|
/TABLE/rows/0:99/JSON # First 100 rows
|
|
/TABLE/rows/100:199/JSON # Next 100 rows
|
|
```
|
|
Default without `rows`: returns first 10,000 rows.
|
|
|
|
### Output format
|
|
Append format as the last path segment:
|
|
```
|
|
/TABLE/.../JSON
|
|
/TABLE/.../XML
|
|
/TABLE/.../CSV
|
|
/TABLE/.../EXCEL
|
|
```
|
|
|
|
---
|
|
|
|
## AQS Data API (Separate System)
|
|
|
|
For more granular air quality data, EPA also provides the AQS Data API at:
|
|
```
|
|
https://aqs.epa.gov/data/api
|
|
```
|
|
|
|
- **Requires:** Free account at https://aqs.epa.gov/data/api/signup?email=YOUR_EMAIL
|
|
- **Auth:** Pass `email` and `key` as query parameters.
|
|
- Key endpoints: `/dailyData/byState`, `/annualData/byState`, `/sampleData/bySite`, `/monitors/byState`.
|
|
|
|
**Example:**
|
|
```
|
|
https://aqs.epa.gov/data/api/dailyData/byState?email=YOUR_EMAIL&key=YOUR_KEY¶m=44201&bdate=20240101&edate=20240131&state=06
|
|
```
|
|
|
|
## Notes
|
|
- Table and column names are case-insensitive in the URL.
|
|
- The Envirofacts API returns all columns for a table; you cannot select specific columns.
|
|
- For joining data across tables, you must make separate requests and join client-side using shared keys (e.g. `TRI_FACILITY_ID`, `REGISTRY_ID`).
|
|
- Some tables are very large. Always use `rows/` to limit results and paginate.
|
|
- EPA data updates vary by program: TRI is annual, AQS is daily/annual, SDWIS is quarterly.
|