API and open data
Everything this site tracks is available as JSON and CSV. The versioned endpoints under /api/v1/ keep their
shape; fields are only ever added. Responses allow cross-origin requests from any site, and each caller gets 60 requests a
minute (a 429 with a Retry-After header past that). Please cache: flights change at most every few seconds, teams almost
never.
Licence
Flight records are derived from community ADS-B positions shared by airplanes.live and adsb.lol under the Open Database License 1.0, and this export is offered under the same licence: use it, build on it, and credit "NHL Flights, from airplanes.live and adsb.lol data". Game dates and opponents are facts from the NHL's public schedule. Nothing from FlightAware AeroAPI (filed plans, scheduled times) is included, because its terms do not allow redistribution. Matches are made by software and sometimes wrong; the corrections page lists every one a reviewer changed.
Endpoints
GET /api/v1/flights- Tracked flights with a published team match, plus positioning flights, newest first. Parameters:
team(a tri-code such asSEA),since(an ISO date or a number of days back, by first position),limit(1 to 500, default 100),before(a flight id, for the next page: the response'snextcarries the link),format=csv. Example: https://nhlflights.ca/api/v1/flights?since=7&limit=20, https://nhlflights.ca/api/v1/flights?team=SEA&format=csv. GET /api/v1/teams/{tri}/flights- The same, for one team. 404 for an unknown tri-code.
GET /api/v1/teams- The 32 teams with tri-code, name, home time zone, team page and feed addresses.
GET /api/v1- This index as JSON.
Flight fields
id, url | The flight's id and page. |
team, teamName, match | The matched team and how sure the match is: confirmed by a reviewer, auto by the matcher with identifying evidence, or likely (route and timing only). Null for a positioning flight. |
status, positioning | airborne, landed or lost (coverage ended before a landing was seen); positioning flights carry no team. |
callsign, registration, hex, type, operator | The aircraft: callsign flown, tail number, ICAO 24-bit address, ICAO type code and operator code. |
origin, destination and their Confidence | ICAO airport codes; confidence is observed on the ground, inferred from where the track started or ended, or unknown. |
firstSeen, lastSeen, departed, arrived | ISO 8601 UTC instants. Departure and arrival are when the aircraft was seen leaving and reaching the ground. |
distanceNm, airborneMin, fuelKg, co2Kg | Great-circle distance, time in the air, and the fuel and CO2 estimates explained on the About page. |
Live data
The pages themselves use /api/live (aircraft positions right now, ?format=geojson for a FeatureCollection), /api/board?date=YYYY-MM-DD (the games of a day with each team's travel), /api/map (team locations and recent
tracks) and /api/events (server-sent events). They are open too, with the same CORS and limits, but their shape follows
the site and may change without notice. Every team also has RSS and JSON feeds and a calendar subscription; see the About page.