US ZIP codes to county, time zone and demographics
Look up any US ZIP and get one clean record: city, state, county and FIPS, coordinates, time zone with today's UTC offset, and Census demographics. Also every ZIP within N miles, every ZIP of a city, the nearest ZIP to a point and ZIP-to-ZIP distance.



Who it's for
Anyone who has ZIP codes and needs the facts behind them, from a spreadsheet user to an AI agent.
Fill city, state, county and time zone from the ZIP a customer typed, and fix ZIPs Excel stripped of their leading zero.
List every ZIP within 5, 10 or 25 miles of a store or rep, closest first.
Add population, income, home value and rent per ZIP from the Census ACS.
Answer "which county is 07102 in?" or "ZIPs near 60614" with sourced JSON over MCP.
Try it
Enter up to 10 ZIP codes. Ziplore returns the county, time zone and Census numbers for each.
Raw JSON response
Real sample output
Captured from a live call to this API (trimmed for length).
{
"results": [
{
"query": "10001",
"zip": "10001",
"city": "New York",
"state": "NY",
"stateName": "New York",
"county": "New York County",
"countyFips": "36061",
"stateFips": "36",
"latitude": 40.7484,
"longitude": -73.9967,
"timezone": "America/New_York",
"utcOffset": "-04:00",
"observesDst": true,
"zipKind": "area",
"population": 30511,
"populationDensity": 48895.8,
"medianAge": 35.8,
"medianHouseholdIncome": 129852,
"perCapitaIncome": 120099,
"medianHomeValue": 561100,
"medianGrossRent": 3361,
"housingUnits": 18356,
"ownerOccupiedPct": 24.1,
"landSqMi": 0.624,
"waterSqMi": 0,
"counties": [
{
"fips": "36061",
"landShare": 1
}
]
},
{
"query": "90210",
"zip": "90210",
"city": "Beverly Hills",
"state": "CA",
"stateName": "California",
"county": "Los Angeles County",
"countyFips": "06037",
"stateFips": "06",
"latitude": 34.0901,
"longitude": -118.4065,
"timezone": "America/Los_Angeles",
"utcOffset": "-07:00",
"observesDst": true,
"zipKind": "area",
"population": 19004,
"populationDensity": 1768.1,
"medianAge": 51.9,
"medianHouseholdIncome": 187801,
"perCapitaIncome": 147098,
"medianHomeValue": 2000000,
"medianGrossRent": 3251,
"housingUnits": 9531,
"ownerOccupiedPct": 70.7,
"landSqMi": 10.748,
"waterSqMi": 0.054,
"topCoded": [
"medianHomeValue"
],
"counties": [
{
"fips": "06037",
"landShare": 1
}
]
}
],
"count": 3,
"notFound": [],
"meta": {
"sources": {
"zipCodes": "GeoNames postal codes (2026-09-24)",
"areas": "US Census 2024 Gazetteer (ZCTA)",
"demographics": "American Community Survey 2020–2024 5-year estimates",
"counties": "US Census 2020 ZCTA-to-county relationship file"
},
"attribution": "ZIP data: GeoNames (CC BY 4.0), US Census Bureau; time zones: timezone-boundary-builder (ODbL, © OpenStreetMap contributors).",
"dataBuiltAt": "2026-09-26T00:23:52.950Z",
"version": "1.0.0"
}
}Limits, plainly
Free and rate limited so it stays fast for everyone. A bulk version (100 ZIPs per call, 250-mile radius) is coming to the Apify Store and RapidAPI.
- 20 calls per minute per IP address.
- Up to 10 ZIPs per lookup call.
- Radius up to 25 miles, up to 50 results per call.
- Free, no key, no sign-up. The whole ZIP table lives in memory at the edge, so calls take milliseconds.
Use the API
JSON over HTTPS, CORS enabled, no key. GET for quick calls, POST a JSON body for lists. Spec: openapi.json · llms.txt
curl -s "https://ziplore.cybermax-tools.workers.dev/api/zip?zip=10001%2C+90210%2C+7102"
# lists: POST a JSON body
curl -s -X POST https://ziplore.cybermax-tools.workers.dev/api/zip \
-H "content-type: application/json" \
-d '{"zips":["10001","90210","7102"]}'import requests
r = requests.post("https://ziplore.cybermax-tools.workers.dev/api/zip",
json={"zips":["10001","90210","7102"]}, timeout=30)
r.raise_for_status()
for row in r.json()["results"]:
print(row)Endpoints: /api/zip look up up to 10 us zip codes · /api/radius every zip within n miles of a zip or point · /api/city every zip of a city, largest first · /api/nearest nearest zip to a point (reverse geocode) · /api/distance distance between two zips
Add it to your AI agent (MCP)
A remote MCP server at https://ziplore.cybermax-tools.workers.dev/mcp (streamable HTTP, no auth). Read-only tools with JSON schemas, so agents know exactly what to send.
// Claude Desktop, Cursor, VS Code, any MCP client (remote, no key)
{
"mcpServers": {
"ziplore": { "type": "http", "url": "https://ziplore.cybermax-tools.workers.dev/mcp" }
}
}
# Claude Code
claude mcp add --transport http ziplore https://ziplore.cybermax-tools.workers.dev/mcp
# Tools: zip_lookup, zips_in_radius, city_zips, nearest_zip, zip_distance
# e.g. zip_lookup({"zips":["10001","90210"]})zip_lookup
City, state, county and FIPS, coordinates, time zone with UTC offset, and Census demographics (population, income, home value, rent) for up to 10 US ZIP codes. Accepts ZIP+4, addresses and ZIPs missing a leading zero.zips_in_radius
Every US ZIP within N miles (max 25) of a ZIP or a lat/lon point, closest first, with distance in miles.city_zips
All ZIP codes of a US city, largest population first.nearest_zip
Reverse geocode a latitude/longitude to the nearest US ZIP code(s), with distance.zip_distance
Great-circle distance in miles and km between two US ZIP codes.
FAQ
Why not a free ZIP CSV?
A CSV gives you rows; Ziplore also fixes ZIPs Excel stripped of their leading zero, accepts ZIP+4 and whole addresses, adds today's UTC offset, and does radius and reverse lookups for you.
Where does the data come from?
GeoNames postal codes (CC BY 4.0), the US Census 2024 Gazetteer, American Community Survey 2020-2024 5-year estimates and the Census ZIP-to-county file. Every response carries the attribution.
How many ZIPs are covered?
41,682, including Puerto Rico, the island areas and military (APO/FPO/DPO) ZIPs. PO-box-only ZIPs have no Census demographics; that is shown as zipKind.
Can I look up thousands of ZIPs?
The free API takes 10 ZIPs per call. A bulk version (100 ZIPs per call, 250-mile radius) is coming to the Apify Store and RapidAPI.
Is there a key or a cost?
No. The API and MCP server are free and rate limited (20 calls per minute per IP).