Endpoint: pico y placa por placa y ciudad

Con la placa y la ciudad responde si el vehículo tiene restricción hoy y mañana, qué dígitos están restringidos y en qué horario. Distingue carro de moto, porque no todas las ciudades miran el mismo dígito de la placa para cada uno.

POST/api/pico-y-placa1 crédito

Restricción de pico y placa por ubicación y tipo de vehículo. Filtra por `ciudad` o por `lat`/`lng` (geolocaliza la ciudad; manda sobre `ciudad`). `tipoVehiculo` = carro (default) o moto. Qué dígito de la placa se evalúa lo fija el decreto de cada ciudad y viene en `digitoPlaca`: por defecto el último para carro y el primero para moto, pero no en todas: varias ciudades restringen también la moto por el último, así que hay que leer `digitoPlaca` en vez de asumir la regla. La `placa` es opcional: con placa indica si aplica hoy/mañana; sin placa devuelve qué dígitos restringen. Sin ubicación devuelve todas las ciudades monitoreadas. **En festivo nacional no hay pico y placa en ninguna ciudad**: `digitosHoy` sale vacío, `hoyAplica` en false y el bloque `festivo` trae el nombre del día. También viene incluido en consulta-full, con el mismo filtro por ubicación y el tipo de vehículo detectado solo desde el RUNT.

Cuerpo de la solicitud

body (JSON)
{
  "ciudad": "Bogotá",
  "placa": "ABC123"
}
Parámetros del cuerpo de la solicitud
CampoTipoQué es
ciudadstringCiudad a consultar (ej. Bogotá).
latnumberLatitud; requiere lng. Geolocaliza la ciudad y manda sobre `ciudad`.
lngnumberLongitud; requiere lat.
placastringPlaca; agrega hoyAplica/manianaAplica.
tipoVehiculostringcarro (default) | moto. El dígito que se evalúa lo decide cada ciudad y se devuelve en `digitoPlaca`. taxi y publico se aceptan pero aún no tienen reglas cargadas (devuelven tienePicoYPlaca:false).

Ejemplos por lenguaje

cURL
curl -X POST 'https://placapi.com/api/pico-y-placa' \
  -H 'x-api-key: pk_live_TU_CLAVE' \
  -H 'content-type: application/json' \
  -d '{"ciudad":"Bogotá","placa":"ABC123"}'
JavaScript (fetch)
const res = await fetch("https://placapi.com/api/pico-y-placa", {
  method: "POST",
  headers: {
    "x-api-key": "pk_live_TU_CLAVE",
    "content-type": "application/json",
  },
  body: JSON.stringify({"ciudad":"Bogotá","placa":"ABC123"}),
});
const data = await res.json();
Python (requests)
import requests

res = requests.post(
    "https://placapi.com/api/pico-y-placa",
    headers={"x-api-key": "pk_live_TU_CLAVE"},
    json={"ciudad":"Bogotá","placa":"ABC123"},
)
data = res.json()

Respuesta exitosa

200 OK — datos ficticios de ejemplo
{
  "source": "pico-y-placa",
  "status": "ok",
  "ubicacion": {
    "matched": true,
    "source": "ciudad",
    "consulta": {
      "ciudad": "Bogotá"
    },
    "ciudad": "Bogotá",
    "departamento": "Bogotá D.C."
  },
  "festivo": {
    "hoy": null,
    "maniana": null
  },
  "data": [
    {
      "ciudad": "Bogotá",
      "departamento": "Bogotá D.C.",
      "tipoVehiculo": "carro",
      "digitoPlaca": "ultimo",
      "tienePicoYPlaca": true,
      "esquema": "parImpar",
      "hoyAplica": false,
      "manianaAplica": true,
      "digitosHoy": [
        1,
        2,
        3,
        4,
        5
      ],
      "digitosManiana": [
        6,
        7,
        8,
        9,
        0
      ],
      "diasSemana": [],
      "horarios": "L–V, 6:00–21:00",
      "vigencia": "Vigente en julio de 2026",
      "fuente": "https://www.movilidadbogota.gov.co/pico-y-placa"
    }
  ],
  "mode": "live",
  "fetchedAt": "2026-07-24T15:04:05.000Z"
}

Errores y cobro

Cuesta 1 crédito cuando devuelve datos. Códigos posibles: 400 401 402 404 429 500 502 — qué significa cada uno, cuál reintentar y cuál cobra, en errores y rate limits. Autenticación por x-api-key: cómo generar la clave.

Última revisión: 20 de agosto de 2026 · PlacApi opera desde Colombia. PlacApi no es una entidad oficial del Gobierno.

Contacto