Flight Tracker — Live Aircraft Data for AI Agents
Pricing
from $1.50 / 1,000 results
Flight Tracker — Live Aircraft Data for AI Agents
Real-time flight tracking tool for AI agents & LLMs. Look up live aircraft position, altitude, speed, heading & on-ground status by flight/callsign, region or airport — plus airport departures/arrivals. MCP-callable real-time grounding for travel assistants & RAG.
Flight Tracker — Live Aircraft Position, Altitude & Speed for AI Agents
A real-time flight tracker, aviation data extractor, and live aircraft status API built for AI agents, LLMs, RAG pipelines, and B2B aviation intelligence. This flight tracker lets you scrape flight data and pull live aircraft position, barometric & geometric altitude, ground speed, true heading, vertical climb/descent rate, transponder squawk, and on-ground status by flight number / callsign, airline prefix, continental region, or airport — live telemetry that no language model knows from its training data.
Export flight data in bulk to JSON, CSV, Excel, or API — or call the actor directly as an MCP / tool-call grounding source from any AI agent.
✈️ Built for AI travel assistants, LLM copilots, aviation operations dashboards, cargo & supply-chain logistics, OSINT researchers, and travel-tech teams who need real-time flight tracking from 100 to 1,000+ live aircraft per run without manual radar scraping.
⚡ At a glance
| Feature | Details |
|---|---|
| Data coverage | Live global ADS-B, MLAT, ASTERIX & FLARM air-traffic telemetry + airport arrivals/departures |
| Search modes | Flight / Callsign lookup (DLH717, LH717), Airline fleet filter (DLH, BAW, UAL), Regional bounding boxes (europe, north-america, asia, worldwide, etc.), and 45+ Airport ICAO feeds |
| Core extracted fields | 23 fields: callsign, icao24, originCountry, latitude, longitude, baroAltitudeM, geoAltitudeM, velocityMs, velocityKmh, headingDeg, verticalRateMs, onGround, squawk, timePosition, lastContact, positionSource, departureAirport, arrivalAirport |
| 1,000+ scale | Single bulk snapshot or multi-region expansion returns 100 to 5,000+ unique live aircraft in seconds |
| Execution modes | Standard Batch Actor run (Dataset export) + warm Standby HTTP API / MCP Server |
| Export formats | JSON, CSV, Excel (XLSX), HTML, XML, Apify REST API, MCP, Webhooks, Make & Zapier |
🔎 Why scrape live flight data?
Flight telemetry is live, high-value, and perishable. A commercial jet's position, altitude, and ground speed change every few seconds, so any static dataset is obsolete within minutes. Large language models have a fixed training cutoff and zero visibility into current airspace — ask an ungrounded chatbot where a flight is right now and it will guess or refuse. The only way to answer accurately is to query a real-time flight tracker at runtime.
Manual radar websites throttle automation, lock data behind heavy WebGL maps, and are not structured for AI agents or bulk analytics. This flight data extractor turns live global air-traffic state vectors into clean, token-efficient JSON records — one object per aircraft — that drop straight into an LLM context window, an operational map, a logistics pipeline, or an Excel workbook.
Common reasons teams use this flight tracker:
- ✈️ Ground AI travel assistants & chatbots — answer "Where is flight LH717 right now?" with live coordinates, altitude in metres, and ground speed in km/h.
- 🤖 Equip LLM agents with a real-time MCP tool — give Claude, ChatGPT, LangChain, or CrewAI agents on-demand access to live sky telemetry.
- 🏢 Airline fleet & competitor monitoring (B2B intelligence) — filter live airspace by airline prefixes (
LH,BA,UA,EK,QR,TK) to count active airborne fleet size and regional deployment. - 📦 Air cargo & freight logistics visibility — track cargo callsigns (
FDX,UPS,CLX,BOX) across continents to estimate freight arrival windows. - 🗺️ Power live aviation maps & ops dashboards — pull 1,000+ live aircraft across Europe, North America, Asia, or Worldwide into BI dashboards and geospatial tools.
- 🛫 Monitor airport arrivals & departures — inspect recent arrival and departure activity across 45+ major international hub airports by ICAO code.
- 🔍 OSINT, journalism & academic research — capture verifiable snapshots of airspace density, aircraft registration countries, and flight tracks.
✨ What this flight tracker does
- ✅ Smart Flight & Callsign Lookup (IATA ↔ ICAO auto-mapping) — pass one or more flight numbers (
DLH717,BA123,UAL456) or airline prefixes (LH,BA,DLH). Standard 2-letter IATA flight numbers likeLH717are automatically resolved to their 3-letter ICAO air-traffic callsign (DLH717). - ✅ Airline Fleet Filtering (
airlines) — filter any regional or worldwide snapshot by one or more airline IATA/ICAO prefixes (e.g.["LH", "BA", "AF", "KL"]) to extract all currently airborne aircraft for specific carriers. - ✅ Regional & Worldwide Airspace Snapshots — retrieve every live aircraft flying over Europe, North America, South America, Asia, Oceania, Africa, the Middle East, or Worldwide.
- ✅ Unlocked 1,000+ Aircraft Scale — when
maxItemsis set to1,000+(or0for unlimited), the actor pulls full bulk snapshots and automatically expands across regional bounding boxes if a single region has fewer aircraft than requested. - ✅ Airport Departures & Arrivals (45+ Hubs + Custom ICAO) — select from 45+ major global airports (
EGLL,KJFK,EDDF,LFPG,OMDB,RJTT,WSSS,LTFM, etc.) or add any custom 4-letter ICAO code underairportsCustom. - ✅ Complete 17-point ADS-B State Vector Normalization — extracts WGS-84
latitude&longitude,baroAltitudeM&geoAltitudeM,velocityMs&velocityKmh,headingDeg,verticalRateMs,onGround,squawk,originCountry,icao24hex address,timePosition,lastContact, andpositionSource(ADS-B,MLAT,ASTERIX,FLARM). - ✅ Dual Execution: Batch + Warm Standby HTTP API — run as a standard Apify batch job for bulk JSON/CSV/Excel exports, or query instantly over HTTP in Standby / MCP mode.
- ✅ Zero Duplicates — every record is strictly de-duplicated by
icao24+source+firstSeen.
🎯 Use cases
| Audience | How they use this Flight Tracker |
|---|---|
| AI & LLM Engineers | Connect via MCP (mcp.apify.com) or Standby HTTP API so conversational travel agents can verify live flight positions and speeds in real time. |
| Supply Chain & Freight Forwarders | Track long-haul air freight callsigns and monitor congestion around key cargo hubs (EDDF, VHHH, KMEM, KANC). |
| Aviation Analysts & B2B Intelligence | Sample 1,000+ airborne aircraft on a schedule to measure carrier utilization, route density, and fleet activity by country of registration. |
| Travel-Tech & Hospitality Apps | Trigger automated hotel/chauffeur notifications when an inbound flight descends below 3,000m or enters a regional bounding box. |
| OSINT & Investigative Teams | Log verifiable timestamps, transponder squawk codes (7700/7600), and ICAO24 hex addresses across regions of interest. |
| Data Science & Geospatial Teams | Export clean CSV/JSON airspace snapshots into PostGIS, BigQuery, Snowflake, Tableau, or Kepler.gl for 3D flight path visualization. |
📥 Input parameters
All input fields are optional. By default (and in prefill), the actor runs a fast Europe live airspace snapshot returning 100 live aircraft in a few seconds.
| Parameter | Type | Default / Prefill | Description |
|---|---|---|---|
flights | array | [] | Specific flight numbers, callsigns, or airline prefixes to locate live (e.g. ["DLH717", "BA123", "LH400"]). IATA codes (LH717) are auto-converted to ICAO (DLH717). Leave empty for regional/worldwide snapshot mode. |
region | string | "worldwide" (prefill: "europe") | Airspace bounding box when flights is empty: worldwide, europe, north-america, south-america, asia, oceania, africa, middle-east, or none. |
airlines | array | [] | Optional airline IATA or ICAO prefixes (e.g. ["LH", "BA", "UAL", "THY"]) to filter live aircraft by carrier. |
airports | array | [] | Select from 45+ major international airports by ICAO code (EDDF, EGLL, LFPG, KJFK, KLAX, OMDB, LTFM, WSSS, RJTT, etc.) to list recent departures or arrivals. |
airportsCustom | array | [] | Additional airport ICAO codes not in the dropdown (e.g. ["KSEA", "EGKK", "LIMC"]). |
airportDirection | string | "arrival" | For airport mode: fetch "arrival" or "departure" flights. |
openSkyClientId | string | "" | Optional OpenSky OAuth2 client ID (enables authenticated airport history & higher rate quotas). |
openSkyClientSecret | string | "" | Optional OpenSky OAuth2 client secret (stored securely as a secret field). |
maxItems | integer | 100 (prefill: 100) | Maximum number of aircraft / flights to return. Set 1000+ for large snapshots or 0 for unlimited. |
proxyConfiguration | object | { "useApifyProxy": true } | Apify Proxy configuration. Enabled by default so requests route cleanly without shared-IP throttling. |
Example 1 — Fast Regional Airspace Snapshot (Prefill / 100+ Live Aircraft)
{"flights": [],"region": "europe","maxItems": 100,"proxyConfiguration": { "useApifyProxy": true }}
Example 2 — 1,500+ Worldwide Live Aircraft Bulk Export
{"flights": [],"region": "worldwide","maxItems": 1500,"proxyConfiguration": { "useApifyProxy": true }}
Example 3 — Track Specific Flights or Airline Fleets (IATA / ICAO)
{"flights": ["LH717", "BA123", "UAL", "THY"],"maxItems": 250,"proxyConfiguration": { "useApifyProxy": true }}
Example 4 — Filter European Airspace by Major Carriers
{"region": "europe","airlines": ["DLH", "BAW", "AFR", "KLM", "RYR", "EZY"],"maxItems": 500,"proxyConfiguration": { "useApifyProxy": true }}
📤 Output format & field reference
Each aircraft or flight record is written as a structured JSON object.
✈️ Identity & Registration Fields
| Field | Coverage | Description |
|---|---|---|
callsign | 🟢 High (~98%) | Active air-traffic callsign broadcast by the aircraft transponder (e.g. "DLH717", "UAL70"). |
icao24 | 🟢 High (100%) | Unique 24-bit ICAO transponder hex address (e.g. "3c6675", "aa9321"). Natural primary key. |
originCountry | 🟢 High (100% live) | Country of aircraft registration derived from the ICAO24 address allocation (e.g. "Germany", "United States"). |
matchedQuery | 🟡 Conditional | The input query string that matched this aircraft when running in flights lookup mode; null in regional snapshot mode. |
squawk | 🟡 Conditional (~65%) | 4-digit octal transponder squawk code assigned by Air Traffic Control (e.g. "7107"). |
🌍 Live Position, Altitude & Velocity Telemetry
| Field | Coverage | Description |
|---|---|---|
latitude | 🟢 High (~99.6% live) | Current WGS-84 latitude in decimal degrees (e.g. 44.5102). |
longitude | 🟢 High (~99.6% live) | Current WGS-84 longitude in decimal degrees (e.g. -66.7877). |
baroAltitudeM | 🟢 High (~88% airborne) | Barometric altitude in metres above mean sea level (null when aircraft is on the ground). |
geoAltitudeM | 🟢 High (~88% airborne) | Geometric (GNSS/GPS) altitude in metres (null when on the ground). |
velocityMs | 🟢 High (100% live) | Ground speed in metres per second (e.g. 234.6). |
velocityKmh | 🟢 High (100% live) | Ground speed converted to kilometres per hour (e.g. 845). |
headingDeg | 🟢 High (~99% live) | True track angle in degrees clockwise from geographic north (0°–360°). |
verticalRateMs | 🟢 High (~88% airborne) | Vertical climb (+) or descent (-) rate in metres per second (0 in level cruise). |
onGround | 🟢 High (100% live) | Boolean (true / false) indicating whether the surface switch is active. |
⏱️ Data Freshness, Sensor Source & Airport Fields
| Field | Coverage | Description |
|---|---|---|
timePosition | 🟢 High (~99.6% live) | ISO 8601 timestamp of the latest coordinate fix from the aircraft. |
lastContact | 🟢 High (100% live) | ISO 8601 timestamp of the most recent transponder message of any type. |
positionSource | 🟢 High (100% live) | Telemetry receiver technology: "ADS-B", "MLAT", "ASTERIX", or "FLARM". |
departureAirport | 🟡 Conditional (Airport) | Estimated 4-letter ICAO departure airport code (populated in airport mode). |
arrivalAirport | 🟡 Conditional (Airport) | Estimated 4-letter ICAO arrival airport code (populated in airport mode). |
firstSeen / lastSeen | 🟡 Conditional (Airport) | ISO 8601 timestamps for departure/arrival window in airport mode. |
source | 🟢 High (100%) | Record origin: "live-position", "airport-arrival", or "airport-departure". |
scrapedAt | 🟢 High (100%) | ISO 8601 timestamp when the record was captured by the actor. |
Sample JSON output (Live Position Record)
{"callsign": "UAL70","icao24": "aa9321","matchedQuery": null,"originCountry": "United States","latitude": 44.5102,"longitude": -66.7877,"baroAltitudeM": 10058.4,"geoAltitudeM": 10142.22,"velocityMs": 234.6,"velocityKmh": 845,"headingDeg": 58.54,"verticalRateMs": 0,"onGround": false,"squawk": "7107","timePosition": "2026-11-02T00:12:08.000Z","lastContact": "2026-11-02T00:12:08.000Z","positionSource": "ADS-B","departureAirport": null,"arrivalAirport": null,"firstSeen": null,"lastSeen": null,"source": "live-position","scrapedAt": "2026-11-02T00:12:14.397Z"}
Sample JSON output (Airport Mode Record)
{"callsign": "DLH441","icao24": "3c6675","matchedQuery": null,"originCountry": null,"latitude": null,"longitude": null,"baroAltitudeM": null,"geoAltitudeM": null,"velocityMs": null,"velocityKmh": null,"headingDeg": null,"verticalRateMs": null,"onGround": null,"squawk": null,"timePosition": null,"lastContact": null,"positionSource": null,"departureAirport": "EDDF","arrivalAirport": "KIAD","firstSeen": "2026-11-02T12:05:11.000Z","lastSeen": "2026-11-02T13:58:40.000Z","source": "airport-departure","scrapedAt": "2026-11-02T14:00:02.000Z"}
🔁 Scale, Bulk Snapshots & Multi-Region Expansion
- Single-call bulk airspace extraction: Unlike traditional web scrapers that crawl one page at a time, live airspace state vectors are retrieved in bulk — returning hundreds to 5,000+ active aircraft in a single snapshot.
- Automatic multi-region expansion for 1,000+ runs: If you select a quiet region (such as
oceaniaorafricaovernight) withmaxItems: 1000+, the actor automatically expands across neighboring regional bounding boxes (europe,north-america,asia, etc.) so your run reliably reaches the requestedmaxItemsvolume. - Airline fleet prefix matching: Pass 2-letter IATA (
LH,BA,UA,EK,TK) or 3-letter ICAO (DLH,BAW,UAL,UAE,THY) carrier codes inairlinesorflightsto extract entire airborne airline fleets (100–500+ aircraft) in seconds.
⚙️ How to use (Batch, API & AI Agent / MCP)
1. Apify Console (No-Code)
- Open the actor on the Apify Console.
- Choose a
region(e.g.europeorworldwide), or enterflights/airlines, and setmaxItems(e.g.100or1000). - Click Start and export your dataset as JSON, CSV, Excel, HTML, or XML.
2. Python API Client
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/flight-tracker").call(run_input={"region": "europe","airlines": ["DLH", "BAW", "AFR", "KLM"],"maxItems": 200,})for flight in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{flight['callsign']} ({flight['originCountry']}): {flight['baroAltitudeM']}m @ {flight['velocityKmh']} km/h")
3. JavaScript / TypeScript API Client
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('haketa/flight-tracker').call({region: 'worldwide',maxItems: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Captured ${items.length} live aircraft`);
4. AI Agent / MCP Tool Integration
Register this actor with Claude Desktop, Cursor, VS Code, LangChain, CrewAI, or LlamaIndex via mcp.apify.com or query its Standby HTTP endpoint (?region=europe&maxItems=50 or ?flights=DLH717,BA123) for sub-second JSON responses.
Example MCP Server Configuration (claude_desktop_config.json)
{"mcpServers": {"apify-flight-tracker": {"command": "npx","args": ["-y","@apify/actors-mcp-server","--actors","haketa/flight-tracker"],"env": {"APIFY_TOKEN": "YOUR_APIFY_TOKEN"}}}}
Example Standby HTTP Query (cURL)
curl -s -H "Authorization: Bearer YOUR_APIFY_TOKEN" \"https://haketa--flight-tracker.apify.actor/?region=europe&airlines=DLH,BAW&maxItems=50"
📊 Regional Bounding Boxes & Coverage Reference
When you select a region from the input dropdown, the flight tracker queries the corresponding geographic bounding box (lamin, lomin, lamax, lomax):
| Region Code | Geographic Area | Bounding Box (Lat Min, Lon Min → Lat Max, Lon Max) | Typical Live Aircraft Count |
|---|---|---|---|
worldwide | Global Airspace (All Continents) | -90, -180 → 90, 180 | 4,000 – 6,500+ aircraft |
europe | European Airspace (UK, EU, EEA, Turkey) | 35, -15 → 72, 40 | 1,200 – 2,500+ aircraft |
north-america | USA, Canada, Mexico & Caribbean | 15, -170 → 72, -50 | 2,000 – 3,500+ aircraft |
asia | East, South & Southeast Asia | 5, 60 → 55, 150 | 600 – 1,400+ aircraft |
middle-east | Gulf Hubs (DXB, DOH, RUH, IST) & Levant | 12, 34 → 42, 63 | 250 – 600+ aircraft |
south-america | Brazil, Argentina, Andes & Southern Cone | -56, -82 → 13, -34 | 200 – 500+ aircraft |
oceania | Australia, New Zealand & South Pacific | -50, 110 → 0, 180 | 150 – 400+ aircraft |
africa | North, West, East & Southern Africa | -35, -18 → 37, 52 | 150 – 400+ aircraft |
🛫 Built-In IATA ↔ ICAO Airline Prefix Mapping
You can pass either 2-letter IATA codes or 3-letter ICAO prefixes in flights and airlines:
| Carrier | IATA Code | ICAO Callsign Prefix | Example Input |
|---|---|---|---|
| Lufthansa | LH | DLH | LH717 or DLH717 |
| British Airways | BA | BAW | BA123 or BAW123 |
| United Airlines | UA | UAL | UA456 or UAL456 |
| American Airlines | AA | AAL | AA100 or AAL100 |
| Delta Air Lines | DL | DAL | DL200 or DAL200 |
| Air France / KLM | AF / KL | AFR / KLM | AF11 / KL601 |
| Emirates / Qatar / Etihad | EK / QR / EY | UAE / QTR / ETD | EK201 / QR1 |
| Turkish Airlines | TK | THY | TK1 or THY1 |
| Ryanair / easyJet / Wizz Air | FR / U2 / W6 | RYR / EZY / WZZ | FR101 / U2800 |
| Singapore / Cathay / Qantas | SQ / CX / QF | SIA / CPA / QFA | SQ25 / QF1 |
💡 Pro tips for best results
- Looking for 100+ or 1,000+ guaranteed results? Leave
flightsempty (or pass airline prefixes like["DLH", "UAL", "BAW"]) and useregion: "europe"orregion: "worldwide". Specific individual flight numbers only appear while that exact flight is airborne. - IATA vs. ICAO callsigns: The scraper maps 65+ major airline 2-letter IATA codes (
LH,BA,AA,UA,DL,AF,KL,EK,QR,TK,SQ,FR,U2,W6, etc.) to their 3-letter ICAO callsigns automatically. For regional airlines, pass the 3-letter ICAO callsign directly. - On-ground vs. airborne altitude: When
onGroundistrue,baroAltitudeMandgeoAltitudeMare naturallynull. Filter ononGround: falseif you only want cruising aircraft. - Keep Apify Proxy enabled: Leaving
proxyConfiguration: { "useApifyProxy": true }prevents shared-IP rate limiting and ensures fast, uninterrupted responses.
❓ Frequently Asked Questions (FAQ)
Do I need an API key or account to track live flights?
No! Live flight lookup (flights), airline filtering (airlines), and regional/worldwide snapshots (region) work out of the box with zero credentials. Optional OpenSky OAuth2 credentials are only used if you want historical 6-hour airport arrival/departure logs.
How many live aircraft can I extract in one run?
A single worldwide snapshot typically contains 4,000 to 6,500+ live airborne aircraft. Set maxItems: 100 for a fast sample, 1000 for large-scale analytics, or 0 to export the entire global sky at once.
Why did a single flight number return 0 results?
Aircraft transponders only broadcast live ADS-B state vectors while the plane is airborne (or taxiing with transponder active). If a specific flight number hasn't departed yet or has already landed, it won't be in the live sky snapshot. Use regional mode (region: "europe" / "worldwide") or airline prefixes ("DLH", "UAL") when you always want a populated dataset.
How fresh is the telemetry?
Positions are updated every few seconds. Check the timePosition and lastContact ISO timestamps on each record to see the exact second the coordinate fix was received.
Can I schedule recurring runs? Yes — use Apify Schedules (e.g. every 5 minutes or hourly) to build a time-series flight trajectory database in BigQuery, S3, PostgreSQL, or Google Sheets.
🔗 Related Live Tracking & Enrichment Scrapers
Pair this flight tracker with other real-time grounding and B2B intelligence actors:
- Vessel Tracker — Live Ship Position & AIS Data — real-time maritime vessel positions, speed, course, and MMSI/IMO telemetry.
- Wikidata Resolver — resolve airlines, airports, cities, and corporations to structured knowledge-graph entities.
- GLEIF LEI Lookup — verify corporate Legal Entity Identifiers and parent/subsidiary ownership trees.
- Sanctions Screening — screen companies, aircraft operators, vessels, and individuals against global sanctions lists.
- SEC EDGAR Scraper — corporate filings and financial disclosures for public airlines and aerospace companies.
📋 Changelog
- v1.2 (2026-11) — Added
airlinescarrier prefix filtering (IATA & ICAO), prefix matching inflights, automatic multi-region bounding-box expansion whenmaxItems > 1,000, and live-snapshot fallback for unauthenticated airport queries; updated prefill toregion: "europe"(maxItems: 100) for guaranteed 100-item<15sprefill runs. - v1.1 (2026-11) — Added
timePositionand human-readablepositionSource(ADS-B,MLAT,ASTERIX,FLARM) fields; verified 500-aircraft worldwide snapshot with 0 duplicates. - v1.0 (2026-07) — Initial release with Batch and warm Standby HTTP API modes, IATA-to-ICAO callsign mapping, and regional bounding-box snapshots.