Flight data sources: licences, terms, limits, coverage
Kept by incident.flights@web-summit.dinis, 11 November 2026, 22:24 UTC. Asked by the conductor at 22:10 from Dinis's ~22:10 brief (BRIEF.md): which flight sources we may use, and how. Read from public pages and anonymous requests only, 22:18 to 22:22 UTC; no account made, no key used, no aircraft identifier recorded. Quotes are short, with the address and the time read. The data: incidents/2026-11-10-storm-charles/data/flights/.
Not a warning service. Your airline decides whether your flight runs; IPMA and ANEPC warn.
What we did with this (22:24 UTC)
- Positions now come from adsb.lol, not OpenSky. OpenSky's terms, as read at 22:19, ask that publications "anonymize or de-identify ... aircraft identifiers", forbid distributing the data beyond the reader's institute, and require a written licence for use "in any live product, service, or automated system". Our OpenSky snapshots carried callsigns and positions, so they are taken off
devin the push that adds this page (the file is removed; git history is not rewritten) and the OpenSky poller was stopped. adsb.lol's data is ODbL, which allows republishing with attribution and share-alike; our snapshots say so. Its terms page answered 403 to a second read at 22:22, so the quotes below are from the 22:19 read. - For Dinis: incident.transport@'s hourly OpenSky readings (counts per airport,
flights.json) are automated too: under the same clause they may need OpenSky's written licence even as counts. A person should read the terms page and decide. - The storm's own hours with positions: adsb.lol's daily history archive for 11 November is expected on 12 November (10 November's is out: about 3.4 GB). Cutting the Lisbon and Funchal boxes from it, raw tar in a vault, small de-identified files in git, is the next step.
1. adsb.lol (positions; best fit)
- Licence: "The license for the API as well as all data ADSB.lol makes public is ODbL" (OpenAPI spec, https://api.adsb.lol/api/openapi.json, read 22:18). The history releases say the same: "made available under the Open Database License" (ODbL 1.0), and feeders' data is under CC0 (https://github.com/adsblol/globe_history_2026/releases, read 22:19). The docs page says: "use it freely, just keep it open" (https://www.adsb.lol/docs/open-data/historical/, read 22:19).
- Limits (same OpenAPI spec): with no key, "500 requests/day per IP". The free tiers are adhoc (1,000/day) and feeder (7,200/day). Sponsor plans go up to 360,000/day. Over quota returns 429; the window resets at 00:00 UTC. The live headers agree:
x-ratelimit-limit: 500;w=86400. - Live test:
/v2/lat/38.77/lon/-9.13/dist/30returned HTTP 200, 13 aircraft (22:18 UTC). The response stayed in the scratchpad. - History: one GitHub release per day per instance in
adsblol/globe_history_2026, with prod, staging and mlatonly variants. The latest isv2026.11.10-planes-readsb-prod-0, published 11 Nov. It is a split tar (.tar.aa1.86 GB +.tar.ab1.57 GB, about 3.4 GB in all) holding readsb gzip JSON:traces/(one file per aircraft per day: position, altitude, speed, track, squawk, source ADS-B/MLAT) plusheatmap/. No 2026-11-11 release yet. At the usual cadence (day D published on D+1) it should appear during 12 Nov UTC. This is an inference from the pattern, not something the site states. - Republish? Yes, under ODbL: attribute adsb.lol, keep any derived database open under ODbL (share-alike), and say so on the page. A storm-hours extract (06:00–18:00 UTC, the Lisbon box and Funchal) cut from the 11 Nov release is legally publishable. It must be thinned or aggregated to stay under the 256 KB-per-file gate, and the 3.4 GB raw tar belongs in a vault, never in git. Recommend dropping hex and registration (privacy, and our people rule) and publishing counts and tracks keyed by an anonymous sequence number.
2a. airplanes.live
- Live test:
api.airplanes.live/v2/point/38.77/-9.13/30returned HTTP 403 (22:18). The JSON body asks API users to write to the operator by email with a project description first. So access now needs approval. (The address is in the body; it is not copied here.) - Terms: https://airplanes.live/api-guide/ and https://airplanes.live/terms-of-service/ both returned 403 to the fetcher (22:19). Not verified. It is believed to be non-commercial, 1 req/s, no history, but that is unconfirmed.
- Republish? Unknown. Would need the operator's written OK.
2b. adsb.fi
- Live test:
opendata.adsb.fi/api/v2/lat/38.77/lon/-9.13/dist/30returned HTTP 200 (8 aircraft) at 22:18. - Terms (https://github.com/adsbfi/opendata, read 22:19): "adsb.fi open data is for personal, non-commercial use only." "You may not license, sell, rent, or lease any part of the data or the service." "You must cite adsb.fi and include a link to our home page." Rate limit: "The public endpoints are rate limited to 1 request per second". No open licence is stated. Live data only, no history.
- Republish? Doubtful. A public dataset in git is more than "personal" use, and there is no history to rebuild 11 Nov anyway.
3. OpenSky Network
- REST API (https://openskynetwork.github.io/opensky-api/rest.html, read 22:19): credits are counted per endpoint group (states, tracks and flights each have their own quota). Anonymous 400/day; standard (registered) 4,000/day; active feeder 8,000/day; licensed 14,400/hour. Auth: it "exclusively supports the OAuth2 client credentials flow". Basic auth is gone, tokens last 30 min, and no cut-over date is given.
- History via REST:
/states/all?time=is ignored for anonymous users. Authenticated users get at most 1 hour back, so the 11 Nov 06:00–18:00 window is already out of reach for state vectors./flights/*is batch-updated nightly, so yesterday and earlier work:/flights/alltakes windows of up to 2 h, and/flights/arrivaland/flights/aircraftup to 2 days. That gives departure/arrival pairs for LPPT/LPMA on 11 Nov, available from 12 Nov./tracks/*goes back 30 days. Full history (Trino/Impala) needs a separate research application. - Terms (https://opensky-network.org/about/terms-of-use answers with HTTP 200 to curl; WebFetch got 403; read 22:19): the licence is "solely for the purpose of non-profit research and non-profit education." For publications, "You will anonymize or de-identify ... aircraft identifiers". "You will not distribute ... the data set(s) to any person other than those employed by your institute". Operational use of the REST API "in any live product, service, or automated system" needs a written licence, even for non-profits. There is a paid/licensed tier on written agreement; no public price.
- Republish? Raw positions: no. Aggregated, de-identified figures with the required citation and a link sent to OpenSky: arguably yes for a non-profit record. An automated feed into the site, though, counts as "operational" and needs their written licence.
4. EUROCONTROL (ansperformance.eu / Aviation Intelligence Portal)
- Published: the Airport traffic dataset (APT-FLT), daily IFR arrivals and departures per airport (NM and airport-operator counts) in CSV and Excel. Coverage is "January 2016 to September 2026" per https://ansperformance.eu/data/ (read 22:20), so it lags by weeks to months. 11 Nov will not be there for weeks. The airport dashboard (ansperformance.eu/…/lppt, redirects to aiu-airport-dashboard.netlify.app/lppt) shows a "Daily Traffic Variation snapshot (Source: Network Manager)". EUROCONTROL's Daily Traffic Variation dashboard (eurocontrol.int/Economics/DailyTrafficVariation-Airports.html) is usually about D-1, but the fetched text showed no date and no airport list, so freshness and whether LPMA is included are unverified.
- Terms (https://ansperformance.eu/about/disclaimer/, read 22:20): "It may be copied in whole or in part, provided that EUROCONTROL is mentioned as the source", provided "it is not used for commercial purposes". The information "may not be modified without prior written permission". No open licence.
- Use: quote daily totals for LPPT/LPMA with attribution once they appear. This is good for "how many flights operated versus the same day in 2025", but it gives no cancellations or positions.
5. ANA airport boards (Lisbon, Madeira)
- www.aeroportolisboa.pt (the departures page) and www.aeroportomadeira.pt both returned a 212-byte Incapsula/Imperva bot-check page to curl, and WebFetch got it empty (22:20). The board contents could not be read. No data was taken.
- ANA terms (https://www.ana.pt/en/terms-and-conditions, read 22:20): it "does not, under any circumstances, grant the user the right to reproduce or distribute this information", but the user may "download and/or print the information for personal, non-commercial purposes." Embedding the site is prohibited.
- Use: link to the board, no scraping or republishing without ANA's consent. Cancellations should be cited from ANA/NAV/airline public statements and press (as evidence, with source), not copied from the board.
6. Paid flight-status APIs (price and terms only, no signup)
- AeroDataBox (https://aerodatabox.com/pricing/, read 22:21): direct Starter $19/mo (40k units), Growth $99, Scale $499. Via RapidAPI: free Basic (400 units), Pro $8, Ultra $40, Mega $200. API.Market is similar. History goes back 180–365 days by plan, so 11 Nov airport boards and statuses are retrievable. Terms: "you may only store our data for 7 days". "You cannot give, sell, or pass any third party access to ... the data it returns." Sublicensing derived work only on Scale/Mega/Custom. Attribution is required on free/trial plans, and Basic is non-commercial. Republishing raw rows in git: no. Aggregate counts (e.g. "N cancellations at LIS") are plausible on a derived-work plan.
- Aviationstack (https://www.aviationstack.com/pricing, read 22:21): Free has 100 req/mo, non-commercial, no history. Basic is $49.99/mo (10k), Professional $149.99, Business $499.99. History is on paid plans only. Its terms page redirects to ideracorp.com/Legal/Terms-of-Use; not read, so redistribution is unverified.
- FlightAware AeroAPI (https://www.flightaware.com/commercial/aeroapi/, read 22:21): Personal has no minimum, current data only, 10 result sets/min, $5 free per month. It allows derivative works "for personal or academic purposes only". Standard costs $100/mo minimum and includes history "from January 1, 2011 onward". Premium costs $1,000/mo. Billing is per result set (e.g. flight lookup $0.005). Full terms were not found at the guessed URL (404), so public display is unverified.
Recommendation
- Positions: adsb.lol is the only source that is both openly licensed (ODbL) and holds history. Fetch the
v2026.11.10/v2026.11.11prod releases when the latter appears (expected 12 Nov UTC). Cut 06:00–18:00 UTC for the Lisbon box and Funchal, keep the tar in a vault, and publish small de-identified aggregates and tracks with ODbL attribution. No account or payment needed. - Cancellations and board status: no free source lets us republish legitimately. ANA's boards are bot-walled and all rights are reserved. Cite ANA/NAV/airline statements as evidence. If figures are needed, AeroDataBox on a derived-work plan (Mega about $200/mo via RapidAPI, or Scale $499 direct) is the cheapest legitimate route. Even then, publish only aggregates, not rows.
- Totals: use EUROCONTROL daily airport counts with attribution once published (weeks away).
- Needs Dinis: any paid plan (payment and account), an OpenSky account plus a written licence if we automate or publish from it, approval by email to airplanes.live (contact belongs to him, not us), and any consent from ANA to reproduce board data.