# Flightradar24 API — Real-Time Aircraft, Bbox & Search (`tugelbay/flightradar-live-tracker`) Actor

Real-time aircraft positions worldwide via Flightradar24's mobile-app feed. Bbox queries, airport search, VIP-jet registration tracking, and PPE billing. Guide: https://konabayev.com/tools/flightradar-live-tracker/?utm\_source=apify\_readme\&utm\_medium=referral\&utm\_campaign=flightradar-live-tracker

- **URL**: https://apify.com/tugelbay/flightradar-live-tracker.md
- **Developed by:** [Tugelbay Konabayev](https://apify.com/tugelbay) (community)
- **Categories:** Developer tools, AI, Travel
- **Stats:** 17 total users, 1 monthly users, 96.8% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 live flight records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

Flightradar24 API-style live aircraft tracker: query a bounded map area, airport, flight, or registration and return current position, altitude, speed, heading, aircraft identity, route fields, map URL, and source `timestamp` as structured data.

Pull current public aircraft positions worldwide with bbox queries, airport search, and registration tracking. This flight tracker API workflow is PPE-priced and does not require Playwright for the source request.

For implementation notes, examples, and live aviation data workflows, see the <a href="https://konabayev.com/tools/flightradar-live-tracker/?utm_source=apify_readme&utm_medium=referral&utm_campaign=flightradar-live-tracker" rel="nofollow sponsored">Flightradar24 Live Tracker guide</a> on Konabayev.com.

<a href="https://apify.com/tugelbay/flightradar-live-tracker">
  <img src="https://api.apify.com/v2/key-value-stores/bplRdpnd85eGQkW1N/records/flightradar-live-tracker-hero.png" alt="Flightradar24 Live Tracker real-time aircraft API" width="100%">
</a>

<p>
  <img src="https://api.apify.com/v2/key-value-stores/bplRdpnd85eGQkW1N/records/flightradar-live-tracker-input-output.png" alt="Flightradar24 Live Tracker input and output example" width="49%">
  <img src="https://api.apify.com/v2/key-value-stores/bplRdpnd85eGQkW1N/records/flightradar-live-tracker-dataset-preview.png" alt="Live aircraft position dataset preview" width="49%">
</p>

### What it does

Three modes covering the most common live-aviation use cases:

1. **`bbox`** — get every aircraft inside a lat/lon bounding box (or convenience preset like `nyc`, `europe`, `russia`, `tokyo`).
2. **`airports`** — search for airports/airlines/aircraft by IATA code or name. Returns the matching entities with metadata.
3. **`registrations`** — track specific tail numbers worldwide (e.g., `N628TS` for Elon Musk's Gulfstream, `RA-96021` for Putin's IL-96).

Each flight returns a structured record: position (lat/lon/altitude/speed/heading), identity (registration/callsign/aircraft type), itinerary (origin/destination/flight number), and a Flightradar map link. `airline_icao` is the three-letter airline code reported by the feed. `airline_iata` is the two-character prefix of the reported flight number, or `null` when unavailable; on codeshares this can differ from the operating airline. `onlyAirlineIatas` filters that flight-number prefix.

### Flightradar24 API comparison: why use this Actor

There is **no equivalent on the Apify Store** today. Closest paid alternatives:

| Source                     | Pricing                          | Notes                                                  |
| -------------------------- | -------------------------------- | ------------------------------------------------------ |
| Flightradar24 Business API | $200-2000+/mo (enterprise tiers) | Full features but pricey, contract-only                |
| ADSBexchange               | $19.95/mo                        | Raw ADS-B feeds only, no airline/route enrichment      |
| aviationstack              | $29-499/mo                       | Slow, rate-limited                                     |
| OpenSky Network            | free (academic)                  | ADS-B only, sparse coverage                            |
| **This actor**             | **PPE, $0.005/flight**           | Pay only for results you actually use, AI-agent native |

For agents that occasionally need aviation data, our PPE model is dramatically cheaper than monthly subscriptions.

### How to run: input examples

1. Start with one bounded city/airport box and a small `maxItems` value.
2. Inspect `timestamp`, registration/callsign, altitude, speed, route fields, and map URL; empty fields are valid when the source does not expose them.
3. Schedule only the validated region or registrations and budget for every returned aircraft record.

#### Live flights over New York

```json
{
  "mode": "bbox",
  "preset": "nyc",
  "maxItems": 100
}
```

#### Compare US east-coast vs Europe traffic

```json
{
  "mode": "bbox",
  "bboxes": ["50,24,-130,-65", "72,35,-12,40"],
  "maxItems": 500,
  "includeOnGround": false
}
```

#### Track specific VIP/celebrity jets

```json
{
  "mode": "registrations",
  "registrations": ["N628TS", "M-YBLU", "T7-LXG"],
  "maxItems": 20
}
```

#### Search airports by code

```json
{
  "mode": "airports",
  "airports": ["JFK", "LHR", "SVO", "NRT"]
}
```

#### Filter Russia airspace by airline

```json
{
  "mode": "bbox",
  "preset": "russia",
  "onlyAirlineIatas": ["SU", "S7", "U6"],
  "maxItems": 200
}
```

### Output data fields

```json
{
  "id": "3f8d7b02",
  "icao24": "A7DC99",
  "lat": 40.533,
  "lon": -74.956,
  "heading": 200,
  "altitude": 4700,
  "speed": 44,
  "squawk": "1200",
  "aircraft_type": "P28A",
  "registration": "N6053F",
  "timestamp": 1778006362,
  "origin": "MMU",
  "destination": "FRG",
  "flight": "",
  "callsign": "N6053F",
  "vertical_rate": -192,
  "airline_iata": "",
  "onGround": false,
  "mapUrl": "https://www.flightradar24.com/N6053F"
}
```

### Use cases

- **VIP jet tracking** — journalists tracking oligarch / politician movements (open-source intelligence)
- **Travel-app ETA prediction** — cross-reference scheduled vs actual arrival times
- **AI agents** — give your assistant "where is flight UA42?" and "is JFK busy?" capabilities
- **Logistics dashboards** — cargo aircraft routing visualization
- **Aviation research** — flight emissions, route optimization, fleet utilization
- **Drone safety apps** — ground-airspace conflict awareness
- **News/incident detection** — diversions, emergency squawks (7500/7600/7700)

### Programmatic usage

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("tugelbay/flightradar-live-tracker").call(run_input={
    "mode": "registrations",
    "registrations": ["N628TS"],
})
for flight in client.dataset(run["defaultDatasetId"]).iterate_items():
    if flight.get("registration") == "N628TS":
        print(f"Elon's plane is at {flight['lat']},{flight['lon']} alt={flight['altitude']}ft")
```

#### LangChain tool

```python
from langchain_core.tools import tool

@tool
def find_flight(callsign_or_registration: str) -> dict | None:
    """Locate a specific aircraft worldwide right now."""
    from apify_client import ApifyClient
    client = ApifyClient("YOUR_TOKEN")
    run = client.actor("tugelbay/flightradar-live-tracker").call(run_input={
        "mode": "registrations",
        "registrations": [callsign_or_registration.upper()],
        "maxItems": 5,
    })
    items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
    return items[0] if items else None
```

### Pricing (PPE)

| Event              | Price  | Note                  |
| ------------------ | ------ | --------------------- |
| Actor start        | $0.01  | One-time per run      |
| Live flight record | $0.005 | Per aircraft returned |

A typical 100-flight bbox query: $0.01 + 100×$0.005 = **$0.51 per run**.

### FAQ

**Q: Is this legal?**
A: We use Flightradar24's public data feed, the same one their iOS/Android/Web apps consume. No login required. Standard web-scraping rules apply — check Flightradar24's ToS for your specific use case if commercial.

**Q: How fresh is the data?**
A: Real-time — positions are updated within ~5-30 seconds depending on aircraft transponder type (ADS-B / MLAT / FLARM).

**Q: Coverage?**
A: Worldwide. Coverage is excellent over land in developed countries; sparse over open ocean. Flightradar combines ADS-B receivers, MLAT triangulation, and satellite ADS-B.

**Q: What's the max bbox size?**
A: Whole-world bbox returns ~18-20K concurrent flights. Pricing × 18K = $90 — use bbox subdivision if you only need a region.

**Q: Can I run this on a schedule?**
A: Yes. Use Apify Schedules to run every minute / 5 min / hour and pipe to your database for historical position tracking.

**Q: Does it follow a specific aircraft?**
A: For live position only, yes (mode=`registrations`). For historical track of one aircraft over time, build a schedule that runs every N minutes and accumulate records.

### Validation evidence and Flightradar24 terms (2026-07-14)

Validation on 2026-07-14 records the source and freshness boundary:

- Flightradar24 explains its receiver/data network in [How it works](https://www.flightradar24.com/how-it-works).
- Flightradar24's current [Terms and Conditions](https://www.flightradar24.com/terms-and-conditions) remain authoritative; commercial use may require a different licensed route.
- Results preserve the source `timestamp`, registration/callsign when available, and a Flightradar24 map URL for spot checks.
- Strict Actor QA validates schemas, metadata, links, Docker configuration, bounded defaults, and PPE declarations before release.

This independent Actor is not endorsed by Flightradar24. Evidence does not guarantee coverage, aircraft identity, future availability, historical tracking, rankings, or AI citations.

### Limitations

- **Position-only**: this actor returns the current position snapshot. Historical track-replay of past flights requires Flightradar24's enterprise API (we may add v0.2 if there's demand).
- **Bbox-bound**: large queries cost more (priced per flight returned). Scope your bbox to the region you actually care about.
- **Some private operators** opt out via FAA's LADD/PIA programs — those flights won't appear.

### Changelog

- **0.1.18 (2026-07-02)** — HTTP retries now use exponential backoff instead of fixed delays.
- **0.1.11–0.1.16 (2026-06)** — Fixed FR24's empty-bbox throttle (valid HTTP 200 with global `full_count` but an empty per-bbox feed on ~1/3 of requests) by rotating to a fresh residential proxy IP and retrying instead of returning an empty result.
- 0.1.0 (2026-05-05): Initial release — bbox, airports, registrations modes; presets for major regions; airline/on-ground filters.

### Support & Feedback

If this actor saves you time, please **[leave a review](https://apify.com/tugelbay/flightradar-live-tracker)** on its Store page — it takes under a minute and is the main trust signal that helps other users find a reliable tool.

Hit a bug or missing a feature? Open a ticket on the Actor's **Issues tab** — issues are typically answered within 24-48 hours and fixes ship fast.

### Related Actors

- [article-extractor](https://apify.com/tugelbay/article-extractor) — Extract public aviation news from known article URLs for additional context.
- [google-trends-tracker](https://apify.com/tugelbay/google-trends-tracker) — Explore daily trending topics separately from aircraft-position data.

# Actor input Schema

## `mode` (type: `string`):

What to query.

## `preset` (type: `string`):

Convenience preset bounding box. Either pick one OR pass custom bboxes.

## `bboxes` (type: `array`):

List of 'N,S,W,E' lat/lon strings. Example: '50,24,-130,-65' for the contiguous US.

## `airports` (type: `array`):

Used in 'airports' mode. Pass IATA codes (JFK, LHR, SVO) or free-text.

## `registrations` (type: `array`):

Used in 'registrations' mode. Tracks specific aircraft like 'N628TS' (Elon's plane), 'RA-96021', etc.

## `maxItems` (type: `integer`):

Hard cap on returned records (1-50000). Default 25 for fast first runs — bump up for production.

## `includeOnGround` (type: `boolean`):

Include taxiing/parked aircraft. Disable to filter to airborne only.

## `onlyAirlineIatas` (type: `array`):

Filter by the IATA prefix of the reported flight number (e.g., DL, UA, BA, LH). This can differ from the operating airline on codeshares. Empty = all airlines.

## `proxyConfiguration` (type: `object`):

FlightRadar24 intermittently throttles IPs (returns an empty feed). The actor rotates the proxy exit IP and retries on empty responses, so a residential proxy gives reliable results and is the default. Example: {"useApifyProxy": true, "apifyProxyGroups": \["RESIDENTIAL"]}. Only change this if you know your IPs work.

## Actor input object example

```json
{
  "mode": "bbox",
  "bboxes": [
    "42,40,-75,-72"
  ],
  "airports": [
    "JFK"
  ],
  "registrations": [
    "N628TS"
  ],
  "maxItems": 1,
  "includeOnGround": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Real-time flight data: callsign, registration, aircraft type, origin/destination airports, altitude, speed, latitude/longitude.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "bbox",
    "bboxes": [
        "42,40,-75,-72"
    ],
    "airports": [
        "JFK"
    ],
    "registrations": [
        "N628TS"
    ],
    "maxItems": 1,
    "includeOnGround": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tugelbay/flightradar-live-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "bbox",
    "bboxes": ["42,40,-75,-72"],
    "airports": ["JFK"],
    "registrations": ["N628TS"],
    "maxItems": 1,
    "includeOnGround": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("tugelbay/flightradar-live-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "bbox",
  "bboxes": [
    "42,40,-75,-72"
  ],
  "airports": [
    "JFK"
  ],
  "registrations": [
    "N628TS"
  ],
  "maxItems": 1,
  "includeOnGround": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call tugelbay/flightradar-live-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tugelbay/flightradar-live-tracker"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/NWOhiYoBw9EoDk0HA/builds/AdgBgYPgCaVaHDmg6/openapi.json
