U.S. Census Bureau API: Get address details
Matches a US street address and returns its city or place, county, state, ZIP code, census tract, congressional and state legislative districts, coordinates and FIPS codes. Districts follow the Census Geocoder's current geography vintage and may differ from sitting representation.
Unofficial. Not affiliated with or endorsed by U.S. Census Bureau.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Address, required
address Full US street address, such as 350 5th Ave, New York, NY 10118.
1600 Pennsylvania Ave NW, Washington, DC 20500
Input as JSON
{ "address": "1600 Pennsylvania Ave NW, Washington, DC 20500"}Output
{ "state": "District of Columbia", "county": "District of Columbia", "latitude": 38.898702605245, "zip_code": "20500", "longitude": -77.035189204737, "block_fips": "110019800001034", "state_fips": "11", "tract_fips": "11001980000", "county_fips": "001", "census_tract": "Census Tract 9800", "city_or_place": "Washington", "matched_address": "1600 PENNSYLVANIA AVE NW, WASHINGTON, DC, 20500", "google_maps_link": "https://www.google.com/maps/search/?api=1&query=1600%20PENNSYLVANIA%20AVE%20NW%2C%20WASHINGTON%2C%20DC%2C%2020500" , "congressional_district": "Delegate District (at Large)", "state_legislative_district_lower": null, "state_legislative_district_upper": "Ward 2"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"census.gov/get_address_details","input":{"address":"1600 Pennsylvania Ave NW, Washington, DC 20500"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "census.gov/get_address_details" , "input": { "address": "1600 Pennsylvania Ave NW, Washington, DC 20500" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "census.gov/get_address_details" , "input": { "address": "1600 Pennsylvania Ave NW, Washington, DC 20500" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run census.gov/get_address_details# with {"address":"1600 Pennsylvania Ave NW, Washington, DC 20500"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "address" ], "properties": { "address": { "type": "string", "description": "Full US street address, such as 350 5th Ave, New York, NY 10118." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "matched_address", "city_or_place", "county", "state", "zip_code", "census_tract", "congressional_district", "state_legislative_district_upper", "state_legislative_district_lower", "google_maps_link", "latitude", "longitude", "state_fips", "county_fips", "tract_fips", "block_fips" ], "properties": { "state": { "type": [ "string", "null" ], "description": "State name." }, "county": { "type": [ "string", "null" ], "description": "County name." }, "latitude": { "type": [ "number", "null" ], "description": "Latitude of the matched location.", "x-fous-developer": true }, "zip_code": { "type": [ "string", "null" ], "description": "ZIP code in the matched address." }, "longitude": { "type": [ "number", "null" ], "description": "Longitude of the matched location.", "x-fous-developer": true }, "block_fips": { "type": [ "string", "null" ], "description": "Full 15-digit census block FIPS identifier (state, county, tract and block).", "x-fous-developer": true }, "state_fips": { "type": [ "string", "null" ], "description": "Two-digit state FIPS code.", "x-fous-developer": true }, "tract_fips": { "type": [ "string", "null" ], "description": "Full 11-digit census tract FIPS identifier (state, county and tract).", "x-fous-developer": true }, "county_fips": { "type": [ "string", "null" ], "description": "Three-digit county FIPS code.", "x-fous-developer": true }, "census_tract": { "type": [ "string", "null" ], "description": "Census tract name." }, "city_or_place": { "type": [ "string", "null" ], "description": "Incorporated place, census-designated place, or matched city." }, "matched_address": { "type": [ "string", "null" ], "description": "Street address matched by the Census Geocoder." }, "google_maps_link": { "type": [ "string", "null" ], "description": "Google Maps search link for the matched address." }, "congressional_district": { "type": [ "string", "null" ], "description": "Congressional district label." }, "state_legislative_district_lower": { "type": [ "string", "null" ], "description": "State lower-chamber district name, when available." }, "state_legislative_district_upper": { "type": [ "string", "null" ], "description": "State upper-chamber district name, when available." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
census.gov/get_address_details- Returns
- matched address, city or place, county, state, ZIP, census tract, districts, coordinates, FIPS codes, map link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method census.gov/get_address_details with the inputs above.
Ask your agent
- What census tract and congressional district is 1600 Pennsylvania Ave NW, Washington, DC 20500 in?
- Look up the county, ZIP code, and FIPS codes for 233 S Wacker Dr, Chicago, IL 60606.
- Which state legislative districts cover 1 Infinite Loop, Cupertino, CA 95014? I need the coordinates too.
- Can you match the address 742 Evergreen Terrace, Springfield, OR 97477 and give me its place name and map link?
- I'm verifying a mailing list. Please geocode 500 W Temple St, Los Angeles, CA 90012 and tell me its census tract.
See more
Finds the current House representative and both senators for a US ZIP code or street address, with office contacts and photos. A ZIP covering several districts returns every possible representative until an address identifies one.
house.gov/get_my_representativesFinds postal codes, place names and coordinates for a town and state or region in a country covered by Zippopotam.us.
zippopotam.us/search_postal_codesGets the Walk, Transit and Bike Scores and neighborhood details for a street address. Unpublished scores are null; unresolved or mismatched addresses are not found.
walkscore.com/get_walk_scoreFinds the FEMA flood zone, risk designation, base flood elevation, flood map panel and community for a US street address, using Census address coordinates and FEMA's National Flood Hazard Layer.
fema.gov/get_flood_zoneFinds map coordinates and address details for an address or place on OpenStreetMap, optionally restricted to a country.
openstreetmap.org/get_coordinatesLooks up the places, regions and coordinates for a postal code in a supported country on Zippopotam.us.
zippopotam.us/get_postal_codeFinds the public location and network operator of an IPv4 or IPv6 address. Private and reserved addresses have no public location.
ipinfo.io/get_ip_locationFinds Indian post offices matching a place name, with PIN codes, branch types, delivery statuses, districts and states. Optionally narrows by state or district.
postalpincode.in/search_pin_codes