# U.S. Environmental Protection Agency (EPA) > EPA publishes public environmental data through several unrelated APIs on several hosts. This file > was GENERATED by API Evangelist from EPA's own published contracts and documentation — EPA serves > no llms.txt of its own (probed 2026-09-06: /llms.txt returned 404 on epa.gov, www.epa.gov, > aqs.epa.gov, api.epa.gov and echo.epa.gov, and a catch-all body on data.epa.gov). Four public API surfaces, four different conventions. EPA's own API strategy is still a draft, and the divergence below is the consequence: two of the four require a key and two do not, three different error envelopes are in use, one surface encodes its whole query in the URL path, and none of them returns a rate-limit header. ## APIs - [Clean Air Markets (EASEY)](https://www.epa.gov/power-sector/cam-api-portal): Power-sector emissions, allowance holdings and transactions, facility and unit data, monitoring plans and QA certification. Base `https://api.epa.gov/easey`. Requires an `x-api-key` header (free, from api.data.gov). 1,000 requests/hour, 500 rows/page, 15-minute request timeout. Eight OpenAPI 3.0 contracts, 206 operations, all published 2026-08-20. - [Envirofacts Data Service](https://www.epa.gov/enviro/envirofacts-data-service-api): Query any table in EPA's regulatory warehouse — RCRA, TRI, SEMS Superfund, SDWIS, GHG reporting. Base `https://data.epa.gov/efservice/`. No key. The query is encoded in the URL path, not in a query string. Eight output formats including Parquet. - [UV Index](https://www.epa.gov/enviro/web-services): Hourly and daily UV forecasts by ZIP or city/state. Base `https://data.epa.gov/dmapservice/`. No key. - [Air Quality System (AQS) Data Mart](https://aqs.epa.gov/aqsweb/documents/data_api.html): Ambient air sample data, monitor metadata, daily/quarterly/annual aggregates, QA results. Base `https://aqs.epa.gov/data/api`. Requires `email` + `key` query parameters (free, self-service). 10 requests/minute, one calendar year per query, 5 parameter codes per request. - [ECHO Compliance and Enforcement](https://echo.epa.gov/tools/web-services): Facility compliance and enforcement history. Base `https://echodata.epa.gov/echo/`. No key, no published limit. ## Specs - openapi/environmental-protection-agency-easey-emissions-mgmt-openapi.json — Emissions Management, 33 paths - openapi/environmental-protection-agency-easey-streaming-services-openapi.json — Streaming Services, 37 paths - openapi/environmental-protection-agency-easey-qa-certification-mgmt-openapi.json — QA Certification, 67 paths - openapi/environmental-protection-agency-easey-monitor-plan-mgmt-openapi.json — Monitor Plan Management, 31 paths - openapi/environmental-protection-agency-easey-account-mgmt-openapi.json — Account Management, 17 paths - openapi/environmental-protection-agency-easey-master-data-mgmt-openapi.json — Master Data, 11 paths - openapi/environmental-protection-agency-easey-facilities-mgmt-openapi.json — Facilities Management, 5 paths - openapi/environmental-protection-agency-easey-camd-services-openapi.json — CAMD Administrative & General Services, 5 paths - openapi/environmental-protection-agency-envirofacts-api-openapi.yml — Envirofacts path-query grammar - openapi/environmental-protection-agency-uvindex-api-openapi.yml — UV Index hourly and daily ## Runtime rules an agent needs - **No rate-limit headers anywhere.** Limits are published in prose and enforced at runtime, but no EPA response carries `X-RateLimit-*`, `RateLimit-*` or `Retry-After`. Track your own spend. - **No status page.** `status.epa.gov` does not resolve. The only anonymous liveness probe in the whole estate is `https://aqs.epa.gov/data/api/metaData/isAvailable`. - **Read-only.** 205 of 206 harvested EASEY operations are GET, and the single POST is a read that uses a body. There is no write surface, therefore no idempotency key and nothing to reverse. - **Three error envelopes, none of them RFC 9457.** EASEY returns `{"error":{"code":..,"message":..}}`, AQS returns a Header/Body envelope with an `errors` array, Envirofacts returns `{"error":"text"}`. - **No deprecation policy.** Retirement happens without notice — `api-ccte.epa.gov`, the old CompTox API host, simply stopped resolving; the successor is `comptox.epa.gov/ctx-api/` and is key-gated. ## Client libraries - [pyaqsapi](https://pypi.org/project/pyaqsapi/) — first-party Python client for AQS, v1.0.2 (2025-05-07) - [RAQSAPI](https://cran.r-project.org/package=RAQSAPI) — first-party R client for AQS, v2.0.5 (2024-06-12) - [USEPA/cam-api-examples](https://github.com/USEPA/cam-api-examples) — Python request examples for EASEY, not a package There is no first-party SDK for Envirofacts, ECHO, the UV Index service or EASEY. ## Docs - [EPA Developer Central](https://www.epa.gov/developers) - [EPA APIs overview](https://www.epa.gov/data/application-programming-interface-api) - [EPA Draft API Strategy](https://www.epa.gov/data/draft-api-strategy) - [Envirofacts web services](https://www.epa.gov/enviro/web-services) - [GitHub — USEPA](https://github.com/USEPA) · [GitHub — US-EPA-CAMD](https://github.com/US-EPA-CAMD) ## Sign-up - EASEY key: - AQS key: - Envirofacts, UV Index and ECHO need no registration. ## Terms All EPA data in these APIs is U.S. Government work in the public domain. See [EPA disclaimers](https://www.epa.gov/web-policies-and-procedures/epa-disclaimers) and the [privacy and security notice](https://www.epa.gov/privacy/privacy-and-security-notice). There is no SLA and no uptime commitment.