📍 Postal codes, solved

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.

55+
Countries
1M+
Postal codes
<50ms
Typical lookup
MCP
Agent-native
zip.getziptastic.com/v2/<country>/<postal> Live API
response.json
// 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

Geonames ONS · UK G-NAF · Australia BAN · France BAG · Netherlands LINZ · New Zealand
One API, every direction

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.

Built for AI agents

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 error code, human message, and an actionable hint.
{
  "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 today

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.

Simple, per-key pricing

Pick a limit. Upgrade or cancel any time.

Ziptastic 10
$10/month
1,000 requests/day
Get started
Ziptastic 45
$45/month
5,000 requests/day
Get started
Ziptastic 90
$90/month
10,000 requests/day
Get started

Higher volume? Four larger plans run up to 1,000,000 requests a day.

See all plans

All plans include every endpoint — forward, reverse, batch, and resolve. No setup fees.

Developer — free

An API key with 100 requests a day on the full v3 endpoint. No card required. Upgrade when you outgrow it.

Get a free key