For batch geocoding (up to 10,000 addresses per file), prepare a CSV file with columns: Unique ID, Street Address, City, State, ZIP — no header row; file must be under 5 MB.
POST the file to https://geocoding.geo.census.gov/geocoder/geographies/addressbatch with form-data fields: addressFile (the CSV), benchmark (e.g., Public_AR_Current), and vintage (e.g., Current_Current) for geography-enriched results.
For locations-only (no census geography), use the /geocoder/locations/addressbatch endpoint with only the benchmark parameter.
Parse the returned CSV response; matched records include longitude, latitude, matchedAddress, tigerLineId, and geographyFields (FIPS state/county/tract/block codes if vintage was requested).
For single-address lookups, use the GET endpoint: https://geocoding.geo.census.gov/geocoder/geographies/address?street={street}&city={city}&state={state}&zip={zip}&benchmark=Public_AR_Current&vintage=Current_Current&format=json.
Use the returned FIPS tract and block codes to join with Census demographic data from the Census Data API (api.census.gov) for enrichment workflows such as CRA mapping or benefits eligibility area analysis.
Known gotchas
The batch endpoint is synchronous but slow for large files — 10,000 records can take several minutes. Do not set short HTTP timeouts; use at least 5 minutes for large batches.
The geocoder uses TIGER/Line road network data, which is updated periodically; very new streets or rural areas may return no-match results even for valid addresses. Implement a fallback geocoder for unmatched records.
The Census geocoder does not return a confidence score — it returns Match or No_Match with a matchType (Exact or Non_Exact). Non_Exact matches have been interpolated and may have lower coordinate accuracy.
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