Geocoding that humans
and agents both trust.
Turn any postal code into a city, region, and precise coordinates across 55+ countries — in a single request. Forward & reverse geocoding, batch lookups, a machine-readable OpenAPI spec, and a native MCP server so your AI agents use Ziptastic out of the box.
// Pick a country, type a postal code, and hit Resolve. // Try: US 48867 · GB SW1A 1AA · FR 75001 · AU 2000
Built on authoritative national postal data, not scraped listings
Everything you need to place a customer on the map.
Forward geocoding
Postal code → city, region, county, coordinates, timezone, and metro area (CBSA in the US).
Reverse geocoding
Lat/lon + radius → the nearest postal codes, ranked by true distance with PostGIS.
Batch lookups
Resolve up to 100 codes in a single call with per-item results and errors. Perfect for pipelines.
Forgiving resolve
/v3/resolve?q=… takes a loose string and figures out the country and code for you.
City search
Fuzzy, trigram-indexed city search within any country — typo-tolerant out of the box.
55+ countries
A Geonames backbone layered with the national sources above, and more added over time.
The first geocoding API your agents can discover and call themselves.
Self-describing, retry-friendly, and metered through the same billed key path — whether the caller is your backend or an autonomous agent.
- ✓Native MCP server. Drop Ziptastic into Claude, Cursor, or any MCP client — six tools, all authenticated with your key.
- ✓OpenAPI at
/openapi.json. A machine-readable description of every endpoint so agents can plan calls without a human in the loop. - ✓Retry-friendly errors. Structured bodies with an
errorcode, humanmessage, and an actionablehint.
{
"mcpServers": {
"ziptastic": {
"command": "python",
"args": ["-m", "ziptastic_mcp.server"],
"env": { "ZIPTASTIC_API_KEY": "YOUR_KEY" }
}
}
}
# Then just ask your agent:
# "What city is postal code 48867 in the US?"
curl -H "x-key: YOUR_KEY" \
https://zip.getziptastic.com/v3/US/48867
# Batch up to 100 in one round-trip
curl -X POST -H "x-key: YOUR_KEY" \
-H "content-type: application/json" \
-d '{"lookups":[{"country":"US","postal_code":"48867"}]}' \
https://zip.getziptastic.com/v3/batch
import requests
r = requests.get(
"https://zip.getziptastic.com/v3/US/48867",
headers={"x-key": "YOUR_KEY"},
)
print(r.json())
# [{'city': 'Owosso', 'state_short': 'MI', 'country': 'US', ...}]
const res = await fetch(
"https://zip.getziptastic.com/v3/US/48867",
{ headers: { "x-key": "YOUR_KEY" } },
);
const data = await res.json();
console.log(data);
Start resolving postal codes in minutes.
Start on the free Developer plan — 100 requests a day on the full v3 API, no credit card required.
Pick a limit. Upgrade or cancel any time.
Higher volume? Four larger plans run up to 1,000,000 requests a day.
See all plansAll plans include every endpoint — forward, reverse, batch, and resolve. No setup fees.
An API key with 100 requests a day on the full v3 endpoint. No card required. Upgrade when you outgrow it.