Skip to content
BorderLive

BorderLive API

Read-only JSON for ports, current waits, observations, and hourly averages.

Authentication

Pass your key as the x-api-key header. Keys are issued to Business-tier accounts.

Default rate limit is 60 requests per minute per key.

Without a key you can make rate-limited public requests by IP — fine for prototypes and open-source projects that link back.

Endpoints

  • GET /api/v1/ports

    All land ports of entry. Optional `?border=mx|ca`.

    curl https://borderlive.us/api/v1/ports?border=mx
  • GET /api/v1/port-current

    Latest wait per port and lane. `?include=ports` joins port metadata.

    curl 'https://borderlive.us/api/v1/port-current?include=ports'
  • GET /api/v1/wait-observations

    Time-series of observations. `?port_id=...&hours=24`.

    curl 'https://borderlive.us/api/v1/wait-observations?port_id=PORT_ID&hours=24'
  • GET /api/v1/port-hourly-averages

    Hour-of-day × day-of-week averages. `?port_id=...`.

    curl 'https://borderlive.us/api/v1/port-hourly-averages?port_id=PORT_ID'

JavaScript example

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);

Attribution

Data comes from the public U.S. Customs and Border Protection (CBP) feed. If you publish anything built on this API, a link back to borderlive.us is appreciated.

Request a keyRSS feed