Free · No signup · No tracking

Put live border waits on your website.

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.

29
Crossings covered
2
Directions — into Canada & into the U.S.
8KB
Total transfer, gzipped — script + data
$0
Forever
Step 1

Build it

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.

Which crossings
Direction
Lanes
Theme
Live preview
Your code Copied

        

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.

Step 2

Install it

WordPress

Block editor

  1. Edit the page, click + and add a Custom HTML block.
  2. Paste the code. Click Preview — the editor itself will not run it.
  3. Update. Done.

Elementor: use the HTML widget. Divi: the Code module.

Squarespace & Wix

Embed block

  1. Squarespace: add a Code block, set it to HTML, paste.
  2. Wix: Add → Embed → Embed HTML, choose Code, paste.
  3. Give the block room — it grows to fit its container.
Plain HTML

Any site

  1. Paste the <div> where the widget should sit.
  2. Paste the <script> once, anywhere on the page.
  3. No build step, no dependencies, nothing to keep updated.

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.

The rules

Free, with one condition

Yes

  • Use it on any site, commercial or not, on as many pages as you like.
  • Use it forever. There is no key, no quota, and no account.
  • Change the heading, the crossings, the theme, the width.
  • Quote our numbers in your own writing, with a link.

No

  • Don't remove the attribution link. That link is the whole price.
  • Don't edit the figures, or present stale ones as current.
  • Don't call it real-time. It isn't, and neither are the agency feeds.
  • Don't re-host border.js on your own server — you'd freeze it and miss fixes.
Honesty

Where the numbers come from

Two official government feeds, unchanged. We parse them, join them, and pass them through. We add nothing and we round nothing.

Into Canada

Canada Border Services Agency

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.

CBSA border wait times →

Into the U.S.

U.S. Customs and Border Protection

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.

CBP border wait times →

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.

For developers

Or just take the JSON

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-crossingsRegion key (niagara, detroit-windsor, ontario, bc, quebec, atlantic, prairies, all) or a comma-separated list of crossing slugs.
data-directionboth · into_canada · into_us
data-lanescars · both (adds commercial)
data-themeauto · light · dark
data-titleHeading text.
data-maxShow at most N rows.