Skip to the live demo

Fresh Mexican postal data

Mexico's postal data, as one API.

Every postal code, every colonia, all 32 estados, in one API. One Bearer token, clean JSON, no SDK to install.

postal codes
31,880
postal codes
colonias
159,019
colonias
municipios
2,478
municipios
estados
32
estados

5 digits, leading zeros included

Try

GET /v1/postal-codes/

200 OK · cached example example

Juárez

Cuauhtémoc · Ciudad de México

{
    "data": {
        "id": 384,
        "code": "06600",
        "state": {
            "id": 1,
            "name": "Ciudad de México",
            "code": "09"
        },
        "municipality": {
            "id": 6,
            "name": "Cuauhtémoc",
            "code": "015"
        },
        "city": {
            "id": 1,
            "name": "Ciudad de México"
        },
        "settlements": [
            {
                "id": 532,
                "name": "Juárez",
                "zone": "Urbano",
                "settlement_type": {
                    "id": 1,
                    "name": "Colonia"
                }
            }
        ]
    }
}

Live API, same data and shape as the keyed endpoint. No key needed to try.

One base URL. The whole catalog.

Every endpoint returns JSON, paginated where it makes sense, with Cache-Control headers so your client can cache freely.

  • GET /v1/postal-codes/{code}

    State, municipio, city, and every colonia for a 5-digit code

    06600 → Juárez · Cuauhtémoc, CDMX

  • GET /v1/postal-codes?q={prefix}

    Autocomplete: codes that start with a numeric prefix

    066 → 06600, 06700, 06760 …

  • GET /v1/postal-codes/search

    Find codes by estado, municipio, and/or colonia name

    Jalisco · Guadalajara · Centro → 44100

  • GET /v1/postal-codes/{code}/settlements

    Just the colonias for a code, slim payload

    64000 → Monterrey Centro, La Finca …

  • GET /v1/postal-codes/{code}/geocode

    Latitude and longitude for a code

    97000 → 20.97, -89.62

  • GET /v1/states · /v1/states/{id}/municipalities

    The 32 estados and the municipios in each

    09 → Cuauhtémoc, Benito Juárez …

  • GET /v1/settlements?q={name}

    Look up colonias by name across the country

    Polanco → 11550, 11560 …

  • GET /v1/geocode/reverse

    Nearest postal code to a lat / long pair

    19.43, -99.13 → 06000

Full request and response details in the API reference.

You could process postal data files yourself.

Postal data often ships as a pipe-delimited text file: every settlement in the country, encoded in Latin-1, with no stable IDs, refreshed on no fixed schedule. You can download it, parse it, host it, and remember to re-sync it every few months. Or you can call one endpoint.

GET /v1/postal-codes/06600

That is the whole integration.

Pricing

Free to start. Paid plans in Mexican pesos. Cancel anytime.

Free

$0 / mo

100 requests / month

  • No credit card
  • Community support
Start free

Starter

$149 / mo

5,000 requests / month

  • Email support
  • Multiple API tokens
Get started

Pro

Popular

$499 / mo

50,000 requests / month

  • Priority support
  • Multiple API tokens
Get started

Business

$1,499 / mo

250,000 requests / month

  • Dedicated support
  • Multiple API tokens
Get started

Drop it into your stack

Authenticate with a Bearer token, parse the JSON. That is the integration.

curl -s https://api.postalkit.mx/v1/postal-codes/06600 \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch(
  "https://api.postalkit.mx/v1/postal-codes/06600",
  { headers: { Authorization: "Bearer YOUR_API_KEY" } },
);
const { data } = await res.json();
// data.settlements -> [{ name: "Roma Norte", ... }, ...]
use Illuminate\Support\Facades\Http;

$data = Http::withToken('YOUR_API_KEY')
    ->get('https://api.postalkit.mx/v1/postal-codes/06600')
    ->json('data');
import requests

data = requests.get(
    "https://api.postalkit.mx/v1/postal-codes/06600",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
).json()["data"]

Full reference · OpenAPI spec · Postman collection

Make your first call in two minutes.

Sign up, verify your email, copy your key. The free tier is 100 requests a month, no card required.

curl -s https://api.postalkit.mx/v1/postal-codes/06600 -H "Authorization: Bearer YOUR_KEY"