
Validate a US address and see the place behind it in the same call.
Zip-Codes.com answers from current USPS data, updated monthly, and Census boundaries, so your AI looks addresses and ZIP Codes up instead of guessing them. A messy one-line address comes back standardized with its ZIP+4, and you can add location intelligence on top: 14 years of normalized American Community Survey data (2011–2024) across Census geographies, mapped congressional and state legislative districts, and school districts.
https://mcp.zip-codes.com/mcpZip-codes.com: US and Canadian postal and census geography, demographics and ACS data for an address, ZIP, ZIP+4, Canadian FSA or postal code, or latitude/longitude.
Withheld is not missing. Without an API key some values are withheld: text reads * to *, numbers and true/false read null. Those are not the real values: never report one as the answer or as "no data"; say an API key returns it. Values shown are real. Only a response carrying meta.demo has withheld values.
Choosing a tool. for everything attached to a code; for a US street address; for codes near one; between two places; to resolve a vague or misspelled name first. Enrichments are opt-in and each adds credits: ask only for what you need. Free, no key, no REST equivalent: (sources: cite it, don't assume currency), (counts), , , .
Free tier. Every tool answers without a key with real, current data, not a sample: use shown values as keyed ones. Keyed JSON shape; masked text has one asterisk per character, up to five; a cut list has a *_truncated marker and its full count in summary; meta.demo.withheld_count counts them. With a key nothing is withheld, and null means no data exists. Never guess a withheld value or take it from another source. A free key gives 2,500 credits a day: <https://www.zip-codes.com/api/signup>.
One place per call. With a key, follow-up calls are fine (a lookup per radius match); credits are the only limit. Without one, keep to a few calls per question. Long lists: the REST API's batch endpoints (subscription; not exposed here, to keep answers small): POST /v2/zip/batch, /v2/quick-zip/batch, /v2/radius/batch, /v2/distance/batch (100 items), /v2/address/batch (250); no suggest batch. Bodies: <https://api.zip-codes.com/llms.txt>.
USPS and the ground. ZIP Codes follow mail routes, not political lines. USPS's assignments (a ZIP's state, county, multi_county from its ZIP+4 counties; an address's details.county, details.congressional_district) are what USPS-based systems show, set by local post offices and sometimes wrong; USPS's county need not cover most of the ZIP. census, cd, state_leg, school_district, timezone intersect the ZIP's area with official boundaries. When they disagree, report both. pct_of_zip and pct_of_area are shares of area, not of addresses or people; a ZIP can cross any line, state lines too; a small pct_of_zip may hold few or no addresses.
Boundary years. Bare census, cd, state_leg, or the newest TIGER/Line year (cd_2025 today), answer under current; census_2015, cd_2020 etc. give any year from 2010. Boundaries move (Connecticut's counties became planning regions in 2022). Across years compare districts (legal boundaries), not an address's primary: newest-year primary is USPS's ZIP+4 assignment.
ACS. Four profiles, 2011 to 2024, identical field paths in every year and level (ZIP areas, tracts): compare directly. Each field but radius aggregates carries its Census table and column. pct is Census's percent column: a share of its total, the count on a total row, null where Census gives none (per capita income). Unemployment and poverty rates are in pct, vacancy rates in est (the other null). A radius coverage_pct under 100 is normal: point ZIPs (PO Box, unique) have no area; their residents count in surrounding ZIPs.
None in the store listings or on the server