BYTETOOLS

CDC Environmental Public Health Tracking API

Free CDC Environmental Public Health Tracking API with no key: asthma, air quality, drinking water, heat illness, lead poisoning and climate health measures by state and county.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the CDC Environmental Public Health Tracking API?

The CDC Environmental Public Health Tracking Network API is a free, key-free service exposing environmental health measures for the United States. It covers content areas such as air quality, asthma, drinking water, heat-related illness and childhood lead poisoning, queryable by measure, geography and year.

The Tracking Network exists to link environmental hazards to health outcomes, which is why its data is organised in a way no other CDC API is. You do not query a dataset; you navigate a hierarchy — content area, then measure, then stratification level, then geography and time — and every level has its own metadata endpoint. The example fetches the top of that tree: 20-odd content areas from Air Quality and Asthma through to Drought, Heat-related Illness and Pesticide Exposures.

That structure means the first thing to build is a discovery loop rather than a data call. Fetch the content areas, then the measures within one, then the geographic levels and years that measure supports, and only then request values — asking for a county-level breakdown of a measure published only by state returns nothing useful. The payoff is genuine comparability across states and years. Interpret carefully: many measures are modelled estimates rather than direct measurements, small-area values carry wide uncertainty, and suppression rules hide small counts. The network documents this per measure, and it matters before drawing any conclusion about a local area.

Quick facts

Base URL
https://ephtracking.cdc.gov/apigateway/api/v1
Authentication
No API key or account. The data is US government work in the public domain; CDC asks that measures be cited with their content area and year.
Rate limit
No published limit. Metadata endpoints are small and highly cacheable — fetch the hierarchy once rather than per request.
Pricing
Free, public domain.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the CDC Environmental Public Health Tracking API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. List the environmental health content areas available

GET https://ephtracking.cdc.gov/apigateway/api/v1/contentareas/json

curl
curl 'https://ephtracking.cdc.gov/apigateway/api/v1/contentareas/json'
JavaScript (fetch)
const res = await fetch("https://ephtracking.cdc.gov/apigateway/api/v1/contentareas/json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://ephtracking.cdc.gov/apigateway/api/v1/contentareas/json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "id": "11",
    "name": "Air Quality",
    "shortName": "AQ"
  },
  {
    "id": "3",
    "name": "Asthma",
    "shortName": "AS"
  },
  {
    "id": "18",
    "name": "Biomonitoring: Population Exposures ",
    "shortName": "BIO"
  },
  {
    "id": "5",
    "name": "Birth Defects",
    "shortName": "BD"
  },
  {
    "id": "42",
    "name": "Built Environment",
    "shortName": "BE"
  },
  {
    "id": "9",
    "name": "Cancer",
    "shortName": "CR"
  },
  {
    "id": "10",
    "name": "Childhood Cancers",
    "shortName": "CHCR"
  },
  {
    "id": "6",
    "name": "Childhood Lead Poisoning",
    "shortName": "CLP"
  },
  {
    "id": "23",
    "name": "Chronic Obstructive Pulmonary Disease (COPD)",
    "shortName": "COPD"
  },
  {
    "id": "43",
    "name": "Demographics & Socioeconomics",
    "shortName": "DESO"
  },
  {
    "id": "16",
    "name": "Disability",
    "shortName": "DD"
  },
  {
    "id": "1",
    "name": "Drinking Water",
    "shortName": "DWQ"
  },
  {
    "id": "25",
    "name": "Drought",
    "shortName": "DR"
  },
  {
    "id": "13",
    "name": "Health Status",
    "shortName": "PV"
  },
  {
    "id": "4",
    "name": "Heart Disease & Stroke",
    "shortName": "MI"
  },
  {
    "id": "35",
    "name": "Heat & Heat-related Illness (HRI)",
    "shortName": "HHI"
  },
  {
    "id": "29",
    "name": "Hormone Disorders",
    "shortName": "HD"
  },
  {
    "id": "20",
    "name": "Pesticide Exposures",
    "shortName": "PE"
  },
  {
    "id": "36",
    "name": "Precipitation & Flooding",
    "shortName": "PF"
  },
  {
    "id": "40",
    "name": "Pu

Parameters

ParameterTypeRequiredDescription
(endpoint) /contentareas/jsonpathOptionalTop-level topics such as Air Quality, Asthma and Drinking Water. /contentareas/json
(endpoint) /indicators/{contentAreaId}/jsonpathOptionalIndicators within a content area. /indicators/3/json
(endpoint) /measures/{indicatorId}/jsonpathOptionalMeasures within an indicator, each with its own id. /measures/99/json
(endpoint) /geographicLevels/{measureId}/jsonpathOptionalWhich geographic levels a measure supports — state, county or census tract. /geographicLevels/99/json
(endpoint) /getCoreHolder/{measureId}/...pathOptionalThe data endpoint itself, taking measure, stratification, geography and year segments. /getCoreHolder/99/1/ALL/ALL/2020/0/0
(format)path segmentRequired`json` or `csv`, as the final path segment on metadata endpoints. json

Response fields

(array of objects)array
Metadata endpoints return a bare array with no envelope.
idstring
Identifier for the content area, indicator or measure — as a string, and the path parameter for the next level down.
namestring
Display name, for example `Childhood Lead Poisoning` or `Heat & Heat-related Illness (HRI)`.
shortNamestring
Abbreviation such as `AQ`, `AS` or `CLP`, used in the network's own documentation.
(data endpoints)object
The core data holder returns rows with geographic identifiers, the year, the value and confidence interval fields where applicable.

What you can build with the CDC Environmental Public Health Tracking API

  • Map asthma prevalence against air quality by county
  • Track heat-related illness trends across states
  • Monitor childhood lead poisoning screening rates
  • Build an environmental health dashboard for a region
  • Correlate drinking water quality measures with health outcomes

Common errors and how to fix them

Empty data for a valid measure

The geographic level is not supported for that measure.

Fix: Query `/geographicLevels/{measureId}` first. Many measures publish at state level only, and a county request simply returns nothing.

Cannot construct the data URL

The core holder path takes several positional segments.

Fix: Walk the metadata hierarchy to collect measure id, stratification level, geography and year rather than guessing the path.

Missing values in a time series

Suppression hides small counts.

Fix: Gaps are usually deliberate suppression for confidentiality or reliability, not absent data. Do not interpolate across them.

Modelled values read as measurements

Several measures are statistical estimates.

Fix: Check the measure's documentation. Modelled air quality estimates in particular are outputs of a model, not readings from a monitor in that county.

CDC Environmental Public Health Tracking API — frequently asked questions

Is the CDC Tracking API free?

Yes, free with no key or registration. The data is US government work in the public domain, and CDC asks that measures be cited with their content area and year.

Why do I need several requests before I can get data?

Because the network is organised as a hierarchy — content area, indicator, measure, geographic level, year — and each measure supports a different combination. Walking the metadata endpoints first is how you discover a valid query; it is also cheap, since that metadata rarely changes.

What does it mean that some measures are modelled?

That the value is a statistical estimate produced from monitoring data and other inputs rather than a direct measurement at that location. Modelled air quality estimates are the common case. They are useful for comparison across areas but should never be presented as a reading taken in that county.

Can I use this to assess health risk where I live?

It shows population-level environmental and health indicators for an area, which is context rather than personal risk. Small-area estimates carry wide uncertainty and suppression gaps, and individual exposure and health depend on factors this data does not capture.

Tools that pair with this API

CDC Environmental Public Health Tracking is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.