Scraper Statistics & Monitoring

Today
2833
Future
72741
Total
75574
Airlines
162

Maritime Coverage Snapshot

Sailings Today
220
Future Sailings
37919
Total Sailings
38139
Operators
22

Maritime Status Today

Status Count
Scheduled 209
Delayed 5
Underway 3
Completed 3

Maritime Operator Coverage

Operator Today Future Total Date Range
AIDA Cruises 0 17 17 2026-06-02 to 2026-12-28
Brittany Ferries 11 2721 2732 2026-05-30 to 2027-02-24
Celebrity Cruises 0 14 14 2026-06-06 to 2026-10-18
Crystal Cruises 0 1 1 2026-07-07 to 2026-07-07
Cunard 0 43 43 2026-06-05 to 2026-12-28
DFDS Seaways 2 614 616 2026-05-30 to 2027-04-02
Disney Cruise Line 0 11 11 2026-07-27 to 2026-09-14
Explora Journeys 0 2 2 2026-08-17 to 2026-09-09
Fred. Olsen Cruise Lines 0 143 143 2026-06-04 to 2027-09-27
Isle of Man Steam Packet Company 10 1712 1722 2026-05-30 to 2027-04-02
MSC Cruises 1 30 31 2026-05-30 to 2026-12-24
Norwegian Cruise Line 0 18 18 2026-05-31 to 2026-11-20
Oceania Cruises 0 12 12 2026-05-31 to 2026-10-31
P&O Cruises 2 106 108 2026-05-30 to 2026-12-29
Princess Cruises 1 23 24 2026-05-30 to 2026-11-05
Red Funnel 94 13256 13350 2026-05-30 to 2026-11-06
Regent Seven Seas Cruises 0 6 6 2026-06-16 to 2026-09-01
Royal Caribbean International 0 21 21 2026-05-31 to 2026-10-16
Silversea Cruises 0 4 4 2026-07-12 to 2026-10-13
Stena Line 4 960 964 2026-05-30 to 2027-01-31
TUI Cruises 0 8 8 2026-06-15 to 2026-11-03
Wightlink 95 18197 18292 2026-05-30 to 2026-12-20

Airport Coverage

Airport Status Today Future Total Date Range Last Scrape Last Result Duration Errors (24h)
ABZ OK 24 197 221 2026-05-30 to 2026-08-31 2026-05-30 16:28 18 found, 0 new, 18 updated 0.3s 0/136
ALC OK 287 8024 8311 2026-05-30 to 2026-08-31 2026-05-30 16:24 494 found, 0 new, 263 updated 1.8s 0/136
BFS Issue 0 1 1 2026-06-05 to 2026-06-05 Never 0/0
BHX Issue 116 3462 3578 2026-05-30 to 2026-08-31 2026-05-30 16:33 0 found, 0 new, 0 updated 15.8s 36/130
BRS OK 172 2250 2422 2026-05-30 to 2026-08-31 2026-05-30 16:29 129 found, 0 new, 129 updated 17.5s 0/136
CWL OK 14 339 353 2026-05-30 to 2026-08-31 2026-05-30 16:24 95 found, 0 new, 13 updated 0.4s 0/137
DLM Issue 0 2 2 2026-05-31 to 2026-06-11 Never 0/0
EDI OK 172 4803 4975 2026-05-30 to 2026-08-31 2026-05-30 16:33 184 found, 0 new, 184 updated 0.7s 0/138
EMA OK 53 2939 2992 2026-05-30 to 2026-08-31 2026-05-30 16:31 4693 found, 0 new, 104 updated 7.2s 0/138
FAO Issue 0 1 1 2026-06-07 to 2026-06-07 Never 0/0
GLA Issue 95 737 832 2026-05-30 to 2026-08-31 2026-05-30 16:31 76 found, 0 new, 76 updated 15.0s 8/137
IBZ Issue 0 1 1 2026-08-02 to 2026-08-02 Never 0/0
IST Issue 1 0 1 2026-05-30 to 2026-05-30 Never 0/0
LBA OK 58 1764 1822 2026-05-30 to 2026-08-31 2026-05-30 16:29 195 found, 15 new, 103 updated 12.6s 0/137
LCY Issue 14 51 65 2026-05-30 to 2026-06-03 2026-05-30 16:29 0 found, 0 new, 0 updated 0.8s 31/108
LGW OK 247 1074 1321 2026-05-30 to 2026-08-31 2026-05-30 16:34 42 found, 5 new, 37 updated 0.6s 0/137
LHR OK 652 4076 4728 2026-05-30 to 2026-06-05 2026-05-30 16:31 4692 found, 0 new, 1035 updated 8.2s 0/137
LPL OK 60 2317 2377 2026-05-30 to 2026-08-31 2026-05-30 16:23 54 found, 0 new, 54 updated 0.4s 0/136
LTN OK 154 2287 2441 2026-05-30 to 2026-08-31 2026-05-30 16:23 103 found, 0 new, 103 updated 1.7s 0/137
MAN OK 299 14639 14938 2026-05-30 to 2026-08-31 2026-05-30 16:24 11551 found, 0 new, 611 updated 25.1s 0/136
NCE Issue 0 1 1 2026-06-16 to 2026-06-16 Never 0/0
NCL OK 91 1213 1304 2026-05-30 to 2026-08-31 2026-05-30 16:29 60 found, 0 new, 60 updated 9.5s 0/137
SOU Issue 25 8 33 2026-05-30 to 2026-06-03 2026-05-30 16:31 17 found, 0 new, 17 updated 0.2s 1/136
SPU Issue 1 0 1 2026-05-30 to 2026-05-30 Never 0/0
STN OK 298 22555 22853 2026-05-30 to 2026-08-31 2026-05-30 16:24 10000 found, 0 new, 582 updated 16.8s 0/137

Airline Coverage

Airline Code Total Recorded Future Primary Source
RYR 58097 53888 Airport scraper + AeroDataBox
BA 6141 2707 British Airways API
EZY 5912 2390 easyJet schedule scraper
RUK 5130 4759 Airport scraper + AeroDataBox
EXS 4938 3107 Jet2 schedule scraper
TOM 2291 1420 Airport scraper + AeroDataBox
EIN 1172 594 Airport scraper + AeroDataBox
LOG 868 421 Airport scraper + AeroDataBox
EJU 850 360 Airport scraper + AeroDataBox
KLM 816 433 Airport scraper + AeroDataBox
VIR 610 345 Airport scraper + AeroDataBox
VY 588 188 Airport scraper + AeroDataBox
XQ 450 292 Airport scraper + AeroDataBox
SAS 432 240 Airport scraper + AeroDataBox
AA 400 167 Airport scraper + AeroDataBox
DLH 365 176 Airport scraper + AeroDataBox
EW 365 181 Airport scraper + AeroDataBox
THY 354 228 Airport scraper + AeroDataBox
AFR 353 204 Airport scraper + AeroDataBox
PGT 350 269 Airport scraper + AeroDataBox
LX 344 183 Airport scraper + AeroDataBox
W9 326 48 Airport scraper + AeroDataBox
UA 312 147 Airport scraper + AeroDataBox
UAE 308 186 Airport scraper + AeroDataBox
QTR 297 152 Airport scraper + AeroDataBox
IBE 253 91 Airport scraper + AeroDataBox
WZZ 210 33 Airport scraper + AeroDataBox
W4 200 31 Airport scraper + AeroDataBox
D8 199 45 Airport scraper + AeroDataBox
GR 183 67 Airport scraper + AeroDataBox

Data Sources

Airport scrapers — grouped by system

System Airports Method Max horizon Why that limit
MAG GraphQL API MAN (36d), STN (37d), EMA (90d) GraphQL (allArrivals) 36–90 days Manchester Airport Group exposes a private GraphQL API that returns the full published schedule — up to 90 days for EMA, 36–37 days for MAN/STN. This is the richest airport data source in the system.
Direct httpx (no browser needed)
Cardiff / Heathrow REST API CWL (7d), LHR (7d) REST API (JSON) 7 days Both airports expose a structured JSON REST API. Cardiff returns ~7 days; Heathrow returns 7 days via parallel date-range requests. The APIs are publicly accessible but undocumented.
Direct httpx (no browser needed)
Leeds Bradford (Next.js) LBA (3d) Next.js RSC payload scrape 3 days LBA's site is a Next.js app that embeds flight data in server-side rendered page payloads. Scraping the RSC JSON gives ~3 days of data — more than the Hangar ADM airports but less than REST APIs.
Direct httpx (no browser needed)
Edinburgh REST API EDI (2d) REST API (JSON) 2 days Edinburgh Airport exposes a direct JSON API for flight data, limited to approximately 48 hours of flights. The API is publicly accessible without authentication.
Direct httpx (no browser needed)
Hangar ADM (direct httpx) LPL (2d), SOU (2d), ABZ (2d) Hangar ADM live flights API 2 days These airports use the Hangar ADM flight information system, which architecturally stores only ~48 hours of data. All date/range parameters are silently ignored by the backend — the 2-day limit is a hard system constraint, not a UI filter.
Direct httpx (no browser needed — no Cloudflare)
Hangar ADM (Playwright — Cloudflare) GLA (2d) Hangar ADM via Playwright browser 2 days Same Hangar ADM system as LPL/SOU/ABZ with the same 48-hour data limit, but Glasgow Airport sits behind Cloudflare WAF which blocks direct httpx requests. A full headless Chromium session via Playwright is required to intercept the XHR response.
Playwright (Cloudflare bypass required)
Luton HTML scrape LTN (2d) HTML page scrape 2 days London Luton's arrivals page renders flight data directly in HTML. The page only shows ~48 hours of flights and there is no accessible JSON API endpoint.
Direct httpx (no browser needed)
Umbraco / Playwright (Cloudflare) NCL (2d) Umbraco CMS API via Playwright browser 2 days Newcastle uses an Umbraco CMS-backed flight API with a ~48-hour data window. Like Glasgow, it is protected by Cloudflare and requires Playwright to access.
Playwright (Cloudflare bypass required)
Playwright HTML (Cloudflare) BRS (2d), BHX (1d) HTML scrape via Playwright browser 1–2 days Bristol and Birmingham render flight data dynamically in JavaScript-heavy pages protected by Cloudflare. Playwright loads the full page in a headless browser to extract the data. Both expose only 1–2 days.
Playwright (Cloudflare bypass required)
Gatwick (Demandware API) LGW (2d) Demandware/Salesforce Commerce REST API 2 days Gatwick uses a Demandware (Salesforce Commerce Cloud) backend for its flight display. The API only returns same-day and next-day flights — a 1-day effective horizon.
Direct httpx (no browser needed)

Airline schedule & enrichment sources

Source Type Airlines Covered Schedule Horizon Cost
Ryanair schedule API Airline timetable FR, RK (Ryanair only) Daily at 04:00 UTC 3 months ahead Free
AeroDataBox FlightByNumber
RapidAPI — on-demand
On-demand flight lookup
1 credit per search miss
All airlines
EZY, LS, TOM, BA, KL, EI, LM, etc.
Triggered automatically when a flight search finds no DB record for a current or future date Any future date 1 credit/lookup
600/month free tier — 1h cooldown on misses
Wizz Air timetable API Route discovery
No auth required
W6 (Wizz Air only)
Route map + flight dates
Daily at 04:30 UTC Route coverage only Free
Loganair VARS scraper Schedule scrape
Videcom VARS system
LM (Loganair only) Disabled VARS schedule report decommissioned by Loganair
KLM / Air France Open Data Official airline API
developer.airfranceklm.com
KL, AF + codeshares
DL, KQ, etc.
Daily at 05:30 UTC 5 days ahead Free
British Airways API
No API key
Official airline API
developer.iairgroup.com
BA, BAW + codeshares
AA, IB, etc.
Daily at 06:00 UTC 5 days ahead Free
AirLabs aggregator Schedule aggregator
airlabs.co
All airlines
EZY, LS, TOM, etc.
Every 8h (3x daily) ~10h lookahead 1,000 req/month
Free tier
FlightRadar24 ADS-B position tracking All (booked flights only) Every 30 seconds
Area 300km + global fallback
Live positions + enrichment Free
adsb.lol ADS-B fallback tracking All (booked flights only) Every 30 seconds
Area query fallback
Live positions Free
OpenSky Network ADS-B legacy tracking All (booked flights only) Every 2-5 min (adaptive)
Backup only
Live positions + arrival Free
Steam Packet timetable + live status Maritime schedule + status Douglas ↔ Heysham/Liverpool/Belfast Incremental every 4h
Full sync daily + PDF horizon sync
Season timetable horizon Free
Brittany Ferries Maritime schedule API Portsmouth ↔ Ouistreham Every 4h + daily full sync Configured maritime horizon Free
Wightlink Maritime schedule API/scrape Portsmouth/Fishbourne, Portsmouth/Ryde, Lymington/Yarmouth Every 4h + daily full sync Configured maritime horizon Free
Red Funnel Dolli API Maritime schedule API Southampton ↔ East Cowes/West Cowes Every 4h + daily full sync Configured maritime horizon Free
Southampton Cruise Schedule Cruise call schedule scrape Southampton cruise terminals Every 4h + daily full sync Configured maritime horizon Free
MyShipTracking / AISHub Maritime live vessel positions Booked sailings Every 2 min status refresh + position updates Live positions Free tiers / no-signup fallback

Data Pipeline

Feature Behaviour
Deduplication key airport + flight_number + date — all sources share one record per flight
Status merge Terminal states (landed, cancelled, diverted) protected from regression by schedule sources
Codeshare dedup Cross-references codeshare numbers to prevent duplicate records for same physical flight
Origin preference Keeps the richer (longer) origin name across sources
Time updates Scheduled arrival always updated; estimated/actual only updated when non-null
Position Tracking (Booked Flights)
Pipeline 3-layer fallback:
1. FR24 area query (300km) with enrichment (aircraft type, registration, gate, terminal)
2. adsb.lol area fallback (300km) — unmatched flights
3. FR24 per-flight global lookup — catches long-distance arrivals
Polling interval Every 30 seconds for active booked flights
Enrichment fields Aircraft type, registration (tail number), departure gate, arrival terminal — from FlightRadar24. Applied on first match, persisted in DB.
Booking tracking Bookings support JM3 reference-level storage for idempotent POST/DELETE calls. Active booking references are exposed via /api/flights/lookup and /api/flights/active-bookings.
Live map /map shows all booked flights for a date with ring-only status colors, multi-booking count badges, booking-reference tooltips, and optional landed-flight filtering via hide_landed=1.
Tracking window Active from -1h before scheduled arrival through +6h after (adjustable). Filtered by departure heuristic (estimated flight duration + 30 min)

Recent Errors

Airport Time Error
BHX 2026-05-30 16:33 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 16:23 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 16:11 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 15:48 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 15:27 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 15:15 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 14:52 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 14:40 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 14:29 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 13:55 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 13:34 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 13:22 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 13:11 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 13:01 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 12:50 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 12:06 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-05-30 11:55 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
LCY 2026-05-30 11:54 HTTPError: HTTP Error 403:
LCY 2026-05-30 11:44 HTTPError: HTTP Error 403:
LCY 2026-05-30 11:34 HTTPError: HTTP Error 403:

Back to flights | Maritime Sailings | API Docs