One line of HTML shows your visitors the current wait at any Canada–US crossing, straight from the CBSA and U.S. CBP feeds. Built for Niagara and Windsor hotels, tour operators, and anyone whose guests have to cross a border to reach them.
Pick your crossings and style. The preview below is the real widget running on live data — what you see is exactly what your visitors get.
Paste it wherever you want the widget to appear. Both lines together — the
<script> can also live once at the bottom of your template if you are
placing several widgets.
Elementor: use the HTML widget. Divi: the Code module.
<div> where the widget should sit.<script> once, anywhere on the page.Styling. The widget renders inside a shadow root, so your
theme cannot break it and it cannot leak styles into your page. It reads the width of whatever
container you put it in — drop it in a 300px sidebar and it switches to a stacked layout on its own.
Set data-theme="auto" and it follows each visitor's light or dark preference.
border.js on your own server — you'd freeze it and miss fixes.Two official government feeds, unchanged. We parse them, join them, and pass them through. We add nothing and we round nothing.
CBSA publishes travellers' and commercial waits for 29 crossings as an open CSV. It refreshes roughly hourly, and each crossing carries its own timestamp — which the widget shows, unedited, under every row.
CBP publishes passenger and commercial lane delays per port. We match its ports to the CBSA crossings bridge by bridge, so a Niagara embed shows the right span rather than a city average. 26 of the 29 crossings have a matching CBP port; the rest show the Canada-bound figure only.
Both agencies publish about once an hour. Nothing here is a live measurement of the queue in front of you, and the widget never claims otherwise — it prints the agency's own "published at" line beside every number. If a feed goes quiet, the widget says so instead of showing a number it cannot stand behind.
The widget is a thin shell over one public endpoint. It is CORS-open, needs no key, and you are welcome to build your own thing on it.
GET https://transitbarometer.com/api/border.json // every crossing, both directions, cars and trucks, // each with the agency's own timestamp and a severity band
Refreshed every 10 minutes from source. Please cache for at least 5 minutes rather than polling per page view — the underlying feeds only change hourly anyway. Attribution appreciated the same way as the widget.
data-crossings | Region key (niagara, detroit-windsor, ontario, bc, quebec, atlantic, prairies, all) or a comma-separated list of crossing slugs. |
data-direction | both · into_canada · into_us |
data-lanes | cars · both (adds commercial) |
data-theme | auto · light · dark |
data-title | Heading text. |
data-max | Show at most N rows. |