cpostal.mx

API de Códigos Postales

Integra la búsqueda de códigos postales de México en tu aplicación web o móvil

REST API v1.0.0

API Key de prueba disponible

Puedes usar la key test_key_123456 para probar la API. Esta key tiene un rate limit reducido y su disponibilidad depende del uso que otros usuarios le estén dando en ese momento. Para uso en producción, solicita tu propia API key.

Inicio Rápido

Prueba la API con un simple comando curl:

curl -H "X-API-Key: test_key_123456" https://cpostal.mx/api/v1/codigo-postal/06600

Respuesta:

{
  "success": true,
  "data": {
    "codigo_postal": "06600",
    "estado": "Ciudad de México",
    "municipio": "Cuauhtémoc",
    "ciudad": "Ciudad de México",
    "colonias": [
      {
        "colonia": "Juárez",
        "tipo_asentamiento": "Colonia",
        "zona": "Urbano"
      }
    ],
    "total_colonias": 1
  },
  "meta": {
    "version": "1.0.0",
    "timestamp": "2024-01-15T10:30:00+00:00"
  }
}

Autenticación

Todas las peticiones requieren una API key válida. Puedes enviarla de dos formas:

1. Header HTTP (recomendado)

curl -H "X-API-Key: tu_api_key" https://cpostal.mx/api/v1/estados

2. Parámetro en URL

curl "https://cpostal.mx/api/v1/estados?api_key=tu_api_key"

Nota: El método del header es más seguro ya que evita que la key aparezca en logs de servidor o historial del navegador.

Rate Limiting

La API tiene límites de peticiones por hora para garantizar un servicio estable para todos los usuarios.

Header Descripción
X-RateLimit-Limit Peticiones permitidas por hora
X-RateLimit-Remaining Peticiones restantes en la ventana actual
X-RateLimit-Reset Timestamp Unix cuando se reinicia el contador

API Key de prueba: La key test_key_123456 tiene un rate limit reducido y es compartida. Para uso en producción, solicita tu propia key con límites personalizados.

Endpoints

GET /api/v1/

Retorna información general de la API y los endpoints disponibles.

curl -H "X-API-Key: test_key_123456" https://cpostal.mx/api/v1/
GET /api/v1/codigo-postal/{cp}

Obtiene información detallada de un código postal específico.

Parámetros

Parámetro Tipo Descripción
cp string Código postal de 5 dígitos

Ejemplo

curl -H "X-API-Key: test_key_123456" https://cpostal.mx/api/v1/codigo-postal/54700
{
  "success": true,
  "data": {
    "codigo_postal": "54700",
    "estado": "México",
    "municipio": "Cuautitlán Izcalli",
    "ciudad": "Cuautitlán Izcalli",
    "cp_administracion": "54701",
    "colonias": [
      {"colonia": "Bosques del Lago", "tipo_asentamiento": "Fraccionamiento", "zona": "Urbano"},
      {"colonia": "Centro Urbano", "tipo_asentamiento": "Colonia", "zona": "Urbano"}
    ],
    "total_colonias": 2
  }
}
GET /api/v1/buscar?q={texto}

Busca colonias o municipios por nombre. Retorna máximo 50 resultados.

Parámetros

Parámetro Tipo Descripción
q string Texto a buscar (mínimo 3 caracteres)

Ejemplo

curl -H "X-API-Key: test_key_123456" "https://cpostal.mx/api/v1/buscar?q=polanco"
{
  "success": true,
  "data": {
    "query": "polanco",
    "results": [
      {
        "codigo_postal": "11510",
        "colonia": "Polanco I Sección",
        "tipo_asentamiento": "Colonia",
        "municipio": "Miguel Hidalgo",
        "estado": "Ciudad de México",
        "zona": "Urbano"
      }
    ],
    "total": 1,
    "max_results": 50
  }
}
GET /api/v1/estados

Lista los 32 estados de la República Mexicana.

Ejemplo

curl -H "X-API-Key: test_key_123456" https://cpostal.mx/api/v1/estados
{
  "success": true,
  "data": {
    "estados": [
      {"id": 1, "nombre": "Aguascalientes"},
      {"id": 2, "nombre": "Baja California"},
      {"id": 9, "nombre": "Ciudad de México"}
    ],
    "total": 32
  }
}
GET /api/v1/estados/{estado}/municipios

Lista los municipios de un estado específico.

Parámetros

Parámetro Tipo Descripción
estado string|int ID numérico o nombre del estado

Ejemplo

curl -H "X-API-Key: test_key_123456" https://cpostal.mx/api/v1/estados/9/municipios
{
  "success": true,
  "data": {
    "estado": {"id": 9, "nombre": "Ciudad de México"},
    "municipios": [
      {"id": 10, "nombre": "Álvaro Obregón"},
      {"id": 2, "nombre": "Azcapotzalco"},
      {"id": 15, "nombre": "Cuauhtémoc"}
    ],
    "total": 16
  }
}

Códigos de Error

Código HTTP Error Code Descripción
400 INVALID_CP Código postal inválido (debe ser 5 dígitos)
400 QUERY_TOO_SHORT Búsqueda muy corta (mínimo 3 caracteres)
401 UNAUTHORIZED API key no proporcionada o inválida
403 FORBIDDEN API key desactivada o expirada
404 NOT_FOUND Recurso no encontrado
429 RATE_LIMIT_EXCEEDED Límite de peticiones excedido
500 SERVER_ERROR Error interno del servidor

Formato de respuesta de error

{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "API key requerida. Envíala en el header X-API-Key o como parámetro api_key",
    "status": 401
  },
  "meta": {
    "version": "1.0.0",
    "timestamp": "2024-01-15T10:30:00+00:00"
  }
}

Ejemplos de Código

JavaScript (Fetch API)

const API_KEY = 'test_key_123456';
const BASE_URL = 'https://cpostal.mx/api/v1';

// Buscar por código postal
async function buscarCodigoPostal(cp) {
    const response = await fetch(`${BASE_URL}/codigo-postal/${cp}`, {
        headers: {
            'X-API-Key': API_KEY
        }
    });

    const data = await response.json();

    if (data.success) {
        console.log('Estado:', data.data.estado);
        console.log('Municipio:', data.data.municipio);
        data.data.colonias.forEach(col => {
            console.log(`- ${col.colonia} (${col.tipo_asentamiento})`);
        });
    } else {
        console.error('Error:', data.error.message);
    }

    return data;
}

// Buscar colonias
async function buscarColonias(texto) {
    const response = await fetch(`${BASE_URL}/buscar?q=${encodeURIComponent(texto)}`, {
        headers: {
            'X-API-Key': API_KEY
        }
    });

    return await response.json();
}

// Ejemplo de uso
buscarCodigoPostal('06600');
buscarColonias('polanco');

Solicitar API Key de Producción

Para obtener una API key con límites personalizados para tu aplicación, contáctanos:

info@cpostal.mx