Obtain a free Census API key at https://api.census.gov/data/key_signup.html (required for more than 500 requests/day)
Identify the variable codes from the ACS 5-year detailed tables using the discovery endpoint: GET https://api.census.gov/data/{year}/acs/acs5/variables.json — search for table prefix (e.g., B19013 for median household income)
Request data for census tracts within a county: GET https://api.census.gov/data/2023/acs/acs5?get=B19013_001E,B19013_001M&for=tract:*&in=state:06+county:037&key={key} — returns estimate (_E) and margin of error (_M) columns
For block group level data, replace tract:* with block+group:* and add the tract FIPS to the in= clause
Handle suppressed values: the API returns null for statistically unreliable estimates; treat nulls as missing rather than zero in aggregations
Join returned FIPS codes (state+county+tract) to Census TIGER/Line shapefiles for spatial visualization by using the concatenated 11-digit GEOID
Known gotchas
ACS 5-year estimates are rolling averages, not single-year snapshots — do not compare 2019 5-year estimates to 2021 5-year estimates as they overlap in reference years (2015–2019 vs 2017–2021)
Not all ACS variables are available at all geographic levels; detailed tables collapse to higher geographic levels for small areas to prevent disclosure — the variable's geography restrictions are listed in the variables.json metadata
The for= and in= geography parameters must use FIPS codes, not names; the Census Geocoder API is a prerequisite step to convert addresses or place names into FIPS codes before querying ACS
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp