Flight Tracker — Live Aircraft Data for AI Agents avatar

Flight Tracker — Live Aircraft Data for AI Agents

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Flight Tracker — Live Aircraft Data for AI Agents

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.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

0

Monthly active users

a day ago

Last modified

Categories

Features

Limited permissions

Share

Flight Tracker — Live Aircraft Position, Altitude & Speed for AI Agents

Flight Tracker AI & MCP Ready Global Airspace Export

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

FeatureDetails
Data coverageLive global ADS-B, MLAT, ASTERIX & FLARM air-traffic telemetry + airport arrivals/departures
Search modesFlight / 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 fields23 fields: callsign, icao24, originCountry, latitude, longitude, baroAltitudeM, geoAltitudeM, velocityMs, velocityKmh, headingDeg, verticalRateMs, onGround, squawk, timePosition, lastContact, positionSource, departureAirport, arrivalAirport
1,000+ scaleSingle bulk snapshot or multi-region expansion returns 100 to 5,000+ unique live aircraft in seconds
Execution modesStandard Batch Actor run (Dataset export) + warm Standby HTTP API / MCP Server
Export formatsJSON, 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 like LH717 are 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 maxItems is set to 1,000+ (or 0 for 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 under airportsCustom.
  • ✅ Complete 17-point ADS-B State Vector Normalization — extracts WGS-84 latitude & longitude, baroAltitudeM & geoAltitudeM, velocityMs & velocityKmh, headingDeg, verticalRateMs, onGround, squawk, originCountry, icao24 hex address, timePosition, lastContact, and positionSource (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

AudienceHow they use this Flight Tracker
AI & LLM EngineersConnect 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 ForwardersTrack long-haul air freight callsigns and monitor congestion around key cargo hubs (EDDF, VHHH, KMEM, KANC).
Aviation Analysts & B2B IntelligenceSample 1,000+ airborne aircraft on a schedule to measure carrier utilization, route density, and fleet activity by country of registration.
Travel-Tech & Hospitality AppsTrigger automated hotel/chauffeur notifications when an inbound flight descends below 3,000m or enters a regional bounding box.
OSINT & Investigative TeamsLog verifiable timestamps, transponder squawk codes (7700/7600), and ICAO24 hex addresses across regions of interest.
Data Science & Geospatial TeamsExport 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.

ParameterTypeDefault / PrefillDescription
flightsarray[]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.
regionstring"worldwide" (prefill: "europe")Airspace bounding box when flights is empty: worldwide, europe, north-america, south-america, asia, oceania, africa, middle-east, or none.
airlinesarray[]Optional airline IATA or ICAO prefixes (e.g. ["LH", "BA", "UAL", "THY"]) to filter live aircraft by carrier.
airportsarray[]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.
airportsCustomarray[]Additional airport ICAO codes not in the dropdown (e.g. ["KSEA", "EGKK", "LIMC"]).
airportDirectionstring"arrival"For airport mode: fetch "arrival" or "departure" flights.
openSkyClientIdstring""Optional OpenSky OAuth2 client ID (enables authenticated airport history & higher rate quotas).
openSkyClientSecretstring""Optional OpenSky OAuth2 client secret (stored securely as a secret field).
maxItemsinteger100 (prefill: 100)Maximum number of aircraft / flights to return. Set 1000+ for large snapshots or 0 for unlimited.
proxyConfigurationobject{ "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

FieldCoverageDescription
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🟡 ConditionalThe 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

FieldCoverageDescription
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

FieldCoverageDescription
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 oceania or africa overnight) with maxItems: 1000+, the actor automatically expands across neighboring regional bounding boxes (europe, north-america, asia, etc.) so your run reliably reaches the requested maxItems volume.
  • Airline fleet prefix matching: Pass 2-letter IATA (LH, BA, UA, EK, TK) or 3-letter ICAO (DLH, BAW, UAL, UAE, THY) carrier codes in airlines or flights to extract entire airborne airline fleets (100–500+ aircraft) in seconds.

⚙️ How to use (Batch, API & AI Agent / MCP)

1. Apify Console (No-Code)

  1. Open the actor on the Apify Console.
  2. Choose a region (e.g. europe or worldwide), or enter flights / airlines, and set maxItems (e.g. 100 or 1000).
  3. Click Start and export your dataset as JSON, CSV, Excel, HTML, or XML.

2. Python API Client

from apify_client import ApifyClient
client = 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 CodeGeographic AreaBounding Box (Lat Min, Lon Min → Lat Max, Lon Max)Typical Live Aircraft Count
worldwideGlobal Airspace (All Continents)-90, -180 → 90, 1804,000 – 6,500+ aircraft
europeEuropean Airspace (UK, EU, EEA, Turkey)35, -15 → 72, 401,200 – 2,500+ aircraft
north-americaUSA, Canada, Mexico & Caribbean15, -170 → 72, -502,000 – 3,500+ aircraft
asiaEast, South & Southeast Asia5, 60 → 55, 150600 – 1,400+ aircraft
middle-eastGulf Hubs (DXB, DOH, RUH, IST) & Levant12, 34 → 42, 63250 – 600+ aircraft
south-americaBrazil, Argentina, Andes & Southern Cone-56, -82 → 13, -34200 – 500+ aircraft
oceaniaAustralia, New Zealand & South Pacific-50, 110 → 0, 180150 – 400+ aircraft
africaNorth, West, East & Southern Africa-35, -18 → 37, 52150 – 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:

CarrierIATA CodeICAO Callsign PrefixExample Input
LufthansaLHDLHLH717 or DLH717
British AirwaysBABAWBA123 or BAW123
United AirlinesUAUALUA456 or UAL456
American AirlinesAAAALAA100 or AAL100
Delta Air LinesDLDALDL200 or DAL200
Air France / KLMAF / KLAFR / KLMAF11 / KL601
Emirates / Qatar / EtihadEK / QR / EYUAE / QTR / ETDEK201 / QR1
Turkish AirlinesTKTHYTK1 or THY1
Ryanair / easyJet / Wizz AirFR / U2 / W6RYR / EZY / WZZFR101 / U2800
Singapore / Cathay / QantasSQ / CX / QFSIA / CPA / QFASQ25 / QF1

💡 Pro tips for best results

  • Looking for 100+ or 1,000+ guaranteed results? Leave flights empty (or pass airline prefixes like ["DLH", "UAL", "BAW"]) and use region: "europe" or region: "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 onGround is true, baroAltitudeM and geoAltitudeM are naturally null. Filter on onGround: false if 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.


Pair this flight tracker with other real-time grounding and B2B intelligence actors:


📋 Changelog

  • v1.2 (2026-11) — Added airlines carrier prefix filtering (IATA & ICAO), prefix matching in flights, automatic multi-region bounding-box expansion when maxItems > 1,000, and live-snapshot fallback for unauthenticated airport queries; updated prefill to region: "europe" (maxItems: 100) for guaranteed 100-item <15s prefill runs.
  • v1.1 (2026-11) — Added timePosition and human-readable positionSource (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.
⌂ 换网址