Saltar a la demo en vivo

Datos postales de México actualizados

Los códigos postales de México, en una sola API.

Cada código postal, cada colonia, los 32 estados, en una sola API. Un token Bearer, JSON limpio, sin SDK que instalar.

códigos postales
31,880
códigos postales
colonias
159,019
colonias
municipios
2,478
municipios
estados
32
estados

5 dígitos, incluyendo ceros a la izquierda

Prueba

GET /v1/postal-codes/

200 OK · ejemplo en caché ejemplo

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"
                }
            }
        ]
    }
}

API en vivo, mismos datos y estructura que el endpoint con key. No necesitas key para probar.

Una sola URL base. Todo el catálogo.

Cada endpoint devuelve JSON, paginado cuando tiene sentido, con encabezados Cache-Control para que tu cliente pueda cachear sin problemas.

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

    Estado, municipio, ciudad y cada colonia de un código de 5 dígitos

    06600 → Juárez · Cuauhtémoc, CDMX

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

    Autocompletado: códigos que empiezan con un prefijo numérico

    067 → 06700, 06720, 06760 …

  • GET /v1/postal-codes/search

    Busca códigos por estado, municipio y/o nombre de colonia

    Jalisco · Guadalajara · Centro → 44100

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

    Solo las colonias de un código, respuesta ligera

    64000 → Monterrey Centro, La Finca …

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

    Los 32 estados y los municipios de cada uno

    09 → Cuauhtémoc, Benito Juárez …

  • GET /v1/municipalities/{id}/settlements

    Todas las colonias de un municipio, paginadas

    Guadalajara → Guadalajara Centro, Americana …

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

    Busca colonias por nombre en todo el país

    Polanco → 11550, 11560 …

Detalles completos de solicitud y respuesta en la referencia de API.

Un solo esquema relacional detrás de cada endpoint.

Estados, municipios, colonias y códigos postales viven en un solo esquema relacional con IDs estables, re-verificado contra el catálogo oficial de SEPOMEX cada mes. Pide un código y recibes toda la jerarquía de la dirección en una sola respuesta.

GET /v1/postal-codes/06600

Esa es toda la integración.

Diagrama: PostalKit guarda el catálogo SEPOMEX en un esquema relacional de estados, municipios, colonias y códigos postales, lo expone como endpoints REST, y una petición GET a /v1/postal-codes/06600 devuelve el estado, el municipio y las colonias en JSON.
El mismo catálogo, de tres formas: el esquema que guarda PostalKit, los endpoints que expone y el JSON que recibe tu cliente.

Precios

Gratis para empezar. Planes de pago en pesos mexicanos. Cancela cuando quieras.

Free

$0 / mes

100 solicitudes / mes

  • Sin tarjeta de crédito
  • Soporte comunitario
Empieza gratis

Starter

$149 / mes

5,000 solicitudes / mes

  • Soporte por correo
  • Múltiples tokens de API
Comienza

Pro

Popular

$499 / mes

50,000 solicitudes / mes

  • Soporte prioritario
  • Múltiples tokens de API
Comienza

Business

$1,499 / mes

250,000 solicitudes / mes

  • Soporte dedicado
  • Múltiples tokens de API
Comienza

Preguntas que vale la pena hacer antes de integrar

De dónde vienen los datos, cuánto cuestan y qué pasa cuando llegas a un límite.

¿De dónde vienen los datos postales?

Del catálogo oficial de SEPOMEX, normalizado en un esquema relacional con IDs estables y re-verificado cada mes, para que consultes estados, municipios, colonias y códigos postales directamente.

¿Con qué frecuencia se actualizan los datos?

Revisamos el catálogo oficial el primer día de cada mes. Si cambió, se reimporta el catálogo completo; si no cambió, no se mueve nada, así que un cambio en los datos siempre significa que la fuente cambió de verdad. El endpoint GET /v1/account/db-version devuelve la fecha de la última actualización, de modo que puedes consultarla en cualquier momento.

¿Necesito tarjeta de crédito para empezar?

No. El plan gratuito incluye 100 solicitudes al mes y solo te pide verificar tu correo electrónico. Si más adelante cambias de plan, no tienes que tocar tu código: el mismo token de API sigue funcionando contra la misma URL base.

¿Cuáles son los límites de uso?

Aplican dos límites: un límite de ráfaga de 60 solicitudes por minuto y la cuota mensual de tu plan. Cada respuesta incluye los encabezados X-RateLimit-Limit y X-RateLimit-Remaining para que sigas tu consumo sobre la marcha, y te enviamos un correo cuando llegas al 80% de tu cuota mensual. Las solicitudes que fallan con un error del servidor no se descuentan de ella.

¿Cómo funciona la facturación y puedo cancelar?

Los planes de pago se cobran mensualmente en pesos mexicanos a través de Stripe. Puedes cambiar de plan, actualizar tu tarjeta o cancelar desde el portal de clientes de Stripe en cualquier momento: no hay contrato ni penalización por cancelar.

¿Qué cubre el catálogo?

Todo el catálogo de SEPOMEX: 31,880 códigos postales, 159,019 colonias y 2,478 municipios en los 32 estados, cada colonia con su tipo de asentamiento. Las localidades, las calles y las coordenadas no están en el catálogo: los endpoints existen pero responden vacío, y la referencia señala cuáles son.

Cada endpoint, parámetro y código de error está documentado en la referencia de API.

Intégralo en tu stack

Autentícate con un token Bearer, parsea el JSON. Esa es la integración.

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"]

Tutoriales de integración · Referencia completa · Especificación OpenAPI · Colección de Postman

Haz tu primera llamada en dos minutos.

Regístrate, verifica tu correo, copia tu key. El plan gratis es 100 solicitudes al mes, sin tarjeta.

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