Overview
The United States Environmental Protection Agency (EPA) offers a suite of public APIs that provide programmatic access to environmental datasets collected and maintained by the agency. Established in 1970, the EPA is responsible for protecting human health and the environment, and its developer resources reflect this mission by making critical environmental information available to the public and private sectors (EPA Developer Portal). These APIs are primarily used by developers, environmental researchers, data analysts, and compliance officers who require official, up-to-date environmental data for their projects.
The EPA's API offerings cover diverse environmental domains, including air quality, water quality, and details about regulated facilities. For instance, the Air Data API provides access to air quality measurements from monitoring stations across the nation, supporting studies on pollution trends and public health impacts. Similarly, the Water Quality Data API aggregates information on water bodies, permits, and violations, essential for assessing aquatic health and regulatory adherence. The Facility Registry Service (FRS) API offers comprehensive details on facilities regulated by the EPA, linking various environmental permits and activities to specific locations. The Envirofacts API serves as a centralized gateway to numerous EPA databases, allowing broad queries across substances, facilities, and environmental regulations.
These APIs are particularly valuable for applications in environmental research, allowing academics and scientists to integrate large-scale datasets into their models and analyses. Public data analysis platforms can utilize EPA APIs to visualize environmental conditions, inform policy discussions, and increase public awareness. Organizations involved in regulatory compliance monitoring can integrate these APIs to track specific facility data or monitor pollutant levels relevant to their operations. Furthermore, geospatial applications frequently consume EPA data to map environmental hazards, identify pristine areas, or visualize the distribution of regulated entities, enhancing location-based decision-making. The EPA's commitment to open data supports transparency and innovation in environmental protection.
Key features
- Air Data API: Provides access to air quality monitoring data, including criteria pollutants, from thousands of monitoring stations nationwide. Users can retrieve hourly, daily, and annual summaries of air pollutant concentrations (EPA API Reference).
- Water Quality Data API: Delivers information on water quality, including permits issued under the National Pollutant Discharge Elimination System (NPDES), water body assessments, and violations. This API supports analysis of surface and groundwater health.
- Facility Registry Service (FRS) API: Offers detailed information on facilities and sites subject to environmental regulations. It provides a unique identifier for each facility and links to various EPA programs and data systems.
- Envirofacts API: Acts as a portal to multiple EPA databases, allowing users to query information on chemicals, facilities, and environmental regulations across different programs from a single interface.
- Geospatial Capabilities: Many datasets accessed via EPA APIs include geographic coordinates, enabling integration with mapping and GIS applications for spatial analysis and visualization of environmental data.
- Public Accessibility: All EPA APIs are freely accessible, removing cost barriers for researchers, developers, and the public to utilize official environmental data.
Pricing
As of 2026-05-28, all APIs provided by the U.S. Environmental Protection Agency are freely accessible and do not require payment for use (EPA Developer Portal Pricing Summary). There are no tiered plans or usage-based costs associated with accessing the data through their developer portal.
| Service/API | Cost | Notes |
|---|---|---|
| Air Data API | Free | Access to air quality monitoring data. |
| Water Quality Data API | Free | Access to water quality, permits, and violations data. |
| Facility Registry Service API | Free | Access to EPA-regulated facility information. |
| Envirofacts API | Free | Centralized access to multiple EPA environmental databases. |
| All other EPA Public APIs | Free | No charges for data access. |
Common integrations
- Geospatial Information Systems (GIS): Integration with platforms like ArcGIS developers' guides or Google Maps Platform allows for visualizing environmental data on interactive maps (ArcGIS Developers, Google Maps Platform). This enables mapping pollution hotspots, facility locations, and water body classifications.
- Data Analysis & Visualization Tools: Tools such as Python (with libraries like Pandas and Matplotlib) or R are commonly used to pull, process, and visualize EPA data for research and reporting.
- Environmental Compliance Software: Companies develop internal or commercial software to monitor regulatory compliance by pulling facility-specific data and permit information from the FRS API.
- Public Awareness Platforms: News organizations, educational institutions, and environmental advocacy groups integrate EPA data into websites and applications to inform the public about local environmental conditions.
- Academic Research Platforms: Universities and research institutions integrate EPA APIs into their data pipelines for long-term environmental studies, climate modeling, and public health impact assessments.
Alternatives
- OpenStreetMap APIs: While not a direct environmental data source, OpenStreetMap provides foundational geospatial data that can be combined with environmental datasets for mapping and analysis, offering community-driven map data (OpenStreetMap About).
- USGS Water Data APIs: The United States Geological Survey (USGS) offers APIs specifically focused on water resources, including real-time streamflow, groundwater, and water quality data, providing an alternative for hydrological information.
- NOAA Data APIs: The National Oceanic and Atmospheric Administration (NOAA) provides extensive APIs for climate, weather, and oceanographic data, which can complement or serve as alternatives to EPA data for broader environmental studies.
- State Environmental Agency APIs: Many individual U.S. states and even local municipalities offer their own environmental data APIs, often providing more granular local data that can be an alternative or supplement to federal EPA data.
- Commercial Environmental Data Providers: Companies specializing in environmental intelligence sometimes aggregate and provide access to environmental data, often with value-added services like analytics or specific compliance tools, though typically for a fee.
Getting started
To begin using the EPA APIs, developers typically interact with RESTful endpoints to request data, often requiring an API key (though many EPA APIs are publicly accessible without one). This example demonstrates how to fetch air quality data using Python's requests library, which is a common approach for interacting with REST APIs. Always consult the specific API documentation on the EPA Developer Portal for endpoint details, required parameters, and any authentication mechanisms.
This Python example makes a request to a hypothetical EPA Air Data endpoint to retrieve air quality measurements for a specific region or time period. Replace the placeholder URL with an actual EPA API endpoint according to the data you wish to access.
import requests
import json
# Base URL for a hypothetical EPA Air Data API endpoint
# (Replace with actual EPA Air Data URL, e.g., for daily summary or monitor data)
API_BASE_URL = "https://aqs.epa.gov/data/api/dailyData/byState"
# Parameters for the API request
# These parameters are illustrative and must conform to the specific API's requirements.
# For the AQS Daily Data API, you might need an API Key, state code, county code, and date range.
params = {
"email": "[email protected]", # Often required for API key registration
"key": "YOUR_API_KEY", # Obtain from EPA API registration if required
"param": "88101", # Example: PM2.5 parameter code
"bdate": "20230101", # Begin Date (YYYYMMDD)
"edate": "20230101", # End Date (YYYYMMDD)
"state": "06" # Example: California state FIPS code
}
try:
response = requests.get(API_BASE_URL, params=params)
response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
data = response.json()
# Process the data (example: print first few records)
if data and "Data" in data and len(data["Data"]) > 0:
print("Successfully fetched data for PM2.5 in California on 2023-01-01:")
for record in data["Data"][:5]: # Print first 5 records
print(json.dumps(record, indent=2))
elif data and "Header" in data and data["Header"]["status"] == "No Data Found":
print("No data found for the specified parameters.")
else:
print("No data or unexpected response format.")
print(json.dumps(data, indent=2))
except requests.exceptions.HTTPError as http_err:
print(f"HTTP error occurred: {http_err} - {response.text}")
except requests.exceptions.ConnectionError as conn_err:
print(f"Connection error occurred: {conn_err}")
except requests.exceptions.Timeout as timeout_err:
print(f"Timeout error occurred: {timeout_err}")
except requests.exceptions.RequestException as req_err:
print(f"An unexpected error occurred: {req_err}")
Before running this code, you would typically need to register on the EPA's developer portal to obtain an API key if the specific API you are targeting requires authentication. The EPA developer portal provides detailed instructions for each API, including parameter definitions and example requests (EPA Guide to Developer Resources).