API de BorderLive
JSON de solo lectura: garitas, esperas actuales, observaciones crudas recientes y promedios por hora almacenados.
Autenticación
Envía tu llave en el header x-api-key. Las llaves se emiten a cuentas Business.
Límite por defecto: 60 peticiones por minuto por llave.
Sin llave puedes hacer peticiones públicas con límite de tasa por IP. Para historial, usa observaciones recientes o el endpoint de promedios por hora; la guía histórica se reconstruye con nuevas observaciones en vivo.
BorderLive MCP
El endpoint Streamable HTTP es /mcp. Buscar, consultar y comparar cruces es anónimo; alertas requieren Pro y el historial/exportaciones requieren Business mediante OAuth de Auth0.
https://borderlive.us/mcp
La app de ChatGPT que usa este servidor está en revisión de OpenAI. Ver integración
Endpoints
GET /api/v1/ports
Todas las garitas terrestres. Opcional `?border=mx|ca`.
curl https://borderlive.us/api/v1/ports?border=mx
GET /api/v1/port-current
Última espera por garita y carril. `?include=ports` agrega los metadatos.
curl 'https://borderlive.us/api/v1/port-current?include=ports'
GET /api/v1/wait-observations
Observaciones crudas recientes, con máximo de 14 días. Las solicitudes mayores a 336 horas se limitan y devuelven `retentionHours: 336`.
curl 'https://borderlive.us/api/v1/wait-observations?port_id=PORT_ID&hours=24'
GET /api/v1/port-hourly-averages
Endpoint histórico almacenado: promedios por hora × día de la semana. Devuelve una lista vacía si no hay agregados guardados.
curl 'https://borderlive.us/api/v1/port-hourly-averages?port_id=PORT_ID'
Ejemplo de JavaScript
const res = await fetch(
"https://borderlive.us/api/v1/port-current?include=ports"
);
const { ports } = await res.json();
const sanYsidro = ports.find((p) => p.slug === "san-ysidro");
console.log(sanYsidro.current);Atribución
Los datos actuales vienen de los feeds públicos de U.S. Customs and Border Protection (CBP) y Canada Border Services Agency (CBSA). Si publicas algo basado en esta API, agradecemos un enlace a borderlive.us.