Scraper Statistics & Monitoring

Today
3426
Future
81142
Total
84568
Airlines
197

Maritime Coverage Snapshot

Sailings Today
195
Future Sailings
37308
Total Sailings
37503
Operators
22

Maritime Status Today

Status Count
Scheduled 184
Completed 6
Underway 4
Delayed 1

Maritime Operator Coverage

Operator Today Future Total Date Range
AIDA Cruises 0 12 12 2026-08-10 to 2026-12-28
Brittany Ferries 12 2630 2642 2026-08-09 to 2027-05-06
Celebrity Cruises 0 7 7 2026-08-15 to 2026-10-18
Cunard 1 29 30 2026-08-09 to 2026-12-28
DENHOLM PORT SERVICES LTD 1 0 1 2026-08-09 to 2026-08-09
DFDS Seaways 2 540 542 2026-08-09 to 2027-05-06
Disney Cruise Line 0 9 9 2026-08-10 to 2026-09-14
Explora Journeys 0 2 2 2026-08-17 to 2026-09-09
Fred. Olsen Cruise Lines 0 134 134 2026-08-10 to 2028-01-05
Isle of Man Steam Packet Company 16 1481 1497 2026-08-09 to 2027-05-06
MSC Cruises 0 22 22 2026-08-20 to 2026-12-24
Norwegian Cruise Line 1 6 7 2026-08-09 to 2026-11-20
Oceania Cruises 0 4 4 2026-08-15 to 2026-10-31
P&O Cruises 0 65 65 2026-08-14 to 2026-12-29
Princess Cruises 0 11 11 2026-08-14 to 2026-11-05
Red Funnel 64 19583 19647 2026-08-09 to 2027-05-06
Regent Seven Seas Cruises 0 2 2 2026-08-12 to 2026-09-01
Royal Caribbean International 0 9 9 2026-08-16 to 2026-10-16
Silversea Cruises 0 3 3 2026-08-27 to 2026-10-13
Stena Line 4 1042 1046 2026-08-09 to 2027-05-06
TUI Cruises 0 5 5 2026-08-20 to 2026-11-03
Wightlink 94 11712 11806 2026-08-09 to 2026-12-20

Airport Coverage

Airport Status Today Future Total Date Range Last Scrape Last Result Duration Errors (24h)
ABZ OK 34 191 225 2026-08-09 to 2026-11-29 2026-08-09 20:08 23 found, 0 new, 23 updated 0.3s 0/137
ACE Issue 0 4 4 2026-08-13 to 2026-10-13 Never 0/0
ALC OK 279 9042 9321 2026-08-09 to 2026-11-30 2026-08-09 20:12 528 found, 0 new, 273 updated 0.7s 0/136
AMS Issue 0 1 1 2026-08-18 to 2026-08-18 Never 0/0
ATH Issue 0 1 1 2026-08-10 to 2026-08-10 Never 0/0
AYT Issue 0 1 1 2026-08-31 to 2026-08-31 Never 0/0
BER Issue 0 1 1 2026-08-10 to 2026-08-10 Never 0/0
BHX Issue 160 3867 4027 2026-08-09 to 2026-11-30 2026-08-09 20:16 40 found, 0 new, 40 updated 14.7s 66/81
BRS OK 213 2555 2768 2026-08-09 to 2026-11-30 2026-08-09 20:19 136 found, 0 new, 136 updated 16.0s 0/137
CDG Issue 0 1 1 2026-09-03 to 2026-09-03 Never 0/0
CWL OK 16 354 370 2026-08-09 to 2026-11-30 2026-08-09 20:16 97 found, 0 new, 16 updated 0.4s 0/137
DLM Issue 0 1 1 2026-09-08 to 2026-09-08 Never 0/0
EDI OK 217 5264 5481 2026-08-09 to 2026-11-30 2026-08-09 20:18 221 found, 0 new, 221 updated 0.7s 0/137
EMA OK 59 2843 2902 2026-08-09 to 2026-11-30 2026-08-09 20:15 3755 found, 0 new, 104 updated 5.8s 0/139
FAO Issue 0 1 1 2027-06-19 to 2027-06-19 Never 0/0
GLA Issue 118 874 992 2026-08-09 to 2026-11-30 2026-08-09 20:15 76 found, 2 new, 74 updated 14.3s 24/137
GVA Issue 0 1 1 2026-08-10 to 2026-08-10 Never 0/0
JAX Issue 0 1 1 2026-09-06 to 2026-09-06 Never 0/0
JFK Issue 0 1 1 2026-09-07 to 2026-09-07 Never 0/0
LBA OK 88 1822 1910 2026-08-09 to 2026-11-30 2026-08-09 20:11 186 found, 0 new, 71 updated 11.7s 0/138
LCY OK 77 46 123 2026-08-09 to 2026-08-13 2026-08-09 20:13 26 found, 3 new, 23 updated 0.2s 0/131
LGW OK 375 1384 1759 2026-08-09 to 2026-11-30 2026-08-09 20:09 41 found, 5 new, 36 updated 0.4s 0/137
LHR OK 692 4080 4772 2026-08-09 to 2026-10-22 2026-08-09 20:16 4723 found, 0 new, 1223 updated 5.8s 0/136
LPL OK 82 2588 2670 2026-08-09 to 2027-06-09 2026-08-09 20:10 54 found, 0 new, 54 updated 0.4s 0/137
LTN OK 189 2549 2738 2026-08-09 to 2026-11-30 2026-08-09 20:15 95 found, 1 new, 94 updated 0.6s 0/136
MAN OK 370 16159 16529 2026-08-09 to 2027-03-22 2026-08-09 20:15 12187 found, 0 new, 674 updated 26.2s 0/138
MCO Issue 0 2 2 2026-08-13 to 2026-09-07 Never 0/0
NCL Issue 100 1311 1411 2026-08-09 to 2026-11-30 2026-08-09 20:13 0 found, 0 new, 0 updated 8.9s 1/137
SOU OK 33 10 43 2026-08-09 to 2026-08-13 2026-08-09 20:18 17 found, 0 new, 17 updated 0.2s 0/138
STN OK 324 26186 26510 2026-08-09 to 2026-11-30 2026-08-09 20:08 10000 found, 0 new, 591 updated 17.2s 0/137
TRF Issue 0 1 1 2026-09-11 to 2026-09-11 Never 0/0

Airline Coverage

Airline Code Total Recorded Future Primary Source
RYR 64767 60308 Airport scraper + AeroDataBox
BA 6652 2826 British Airways API
EZY 6644 2705 easyJet schedule scraper
EXS 6278 3953 Jet2 schedule scraper
RUK 5786 5384 Airport scraper + AeroDataBox
TOM 2493 1462 Airport scraper + AeroDataBox
EIN 1224 618 Airport scraper + AeroDataBox
LOG 900 397 Airport scraper + AeroDataBox
KLM 837 435 Airport scraper + AeroDataBox
EJU 781 349 Airport scraper + AeroDataBox
VIR 683 389 Airport scraper + AeroDataBox
VY 582 196 Airport scraper + AeroDataBox
QTR 482 186 Airport scraper + AeroDataBox
PGT 481 372 Airport scraper + AeroDataBox
SAS 464 244 Airport scraper + AeroDataBox
XQ 459 316 Airport scraper + AeroDataBox
IBE 409 111 Airport scraper + AeroDataBox
AA 404 162 Airport scraper + AeroDataBox
W9 375 52 Airport scraper + AeroDataBox
THY 365 230 Airport scraper + AeroDataBox
EW 363 182 Airport scraper + AeroDataBox
AFR 348 205 Airport scraper + AeroDataBox
LX 342 185 Airport scraper + AeroDataBox
DLH 336 169 Airport scraper + AeroDataBox
UA 333 149 Airport scraper + AeroDataBox
UAE 331 202 Airport scraper + AeroDataBox
D8 236 68 Airport scraper + AeroDataBox
WZZ 209 42 Airport scraper + AeroDataBox
W4 199 34 Airport scraper + AeroDataBox
VL 197 138 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-08-09 19:53 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 19:21 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 19:10 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 19:00 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 18:50 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 18:38 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 18:27 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 18:16 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 18:05 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 17:43 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 17:32 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 17:21 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 16:58 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 16:02 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
GLA 2026-08-09 15:29 RuntimeError: GLA: page loaded but RetrieveFlights XHR never fired (likely Cloudflare interstitial or JS render failure)
BHX 2026-08-09 15:28 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
GLA 2026-08-09 15:18 RuntimeError: GLA: page loaded but RetrieveFlights XHR never fired (likely Cloudflare interstitial or JS render failure)
BHX 2026-08-09 14:56 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 14:24 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page
BHX 2026-08-09 14:03 CaptchaEncounteredError: Cloudflare challenge detected on BHX arrivals page

Back to flights | Maritime Sailings | API Docs