Flightradar APIflightradar.com ↗
Access real-time aircraft positions, airport data, airline records, and flight search via the Flightradar24 API. 5 endpoints covering global aviation data.
What is the Flightradar API?
This API exposes 5 endpoints covering real-time flight tracking, global airport and airline reference data, and keyword-based aviation search from Flightradar24. The get_nearby_flights endpoint returns live aircraft positions, altitudes, speeds, squawk codes, and routing for every tracked flight within a geographic bounding box. Companion endpoints deliver the complete Flightradar24 airport and airline databases, plus a GeoIP lookup to anchor location-based queries.
curl -X GET 'https://api.parse.bot/scraper/b555692e-b82d-4248-9882-e92e4b9e5f0a/get_nearby_flights?bounds=40.85%2C40.65%2C-74.15%2C-73.85' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace flightradar-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Flightradar24 aviation tracker — real-time flights, airports, airlines."""
from parse_apis.flightradar24_api import Flightradar24, FlightAreaEmpty
client = Flightradar24()
# Detect current location to derive a bounding box for flight scanning.
geo = client.geolocations.detect()
print(f"Location: {geo.country}, lat={geo.lat}, lng={geo.lng}, radius={geo.radiuskm}km")
# Scan for nearby flights in the New York metro area.
for flight in client.flights.nearby(bounds="40.85,40.65,-74.15,-73.85", limit=5):
print(f"{flight.flight_number} | {flight.origin}→{flight.destination} | alt={flight.altitude} spd={flight.speed}")
# Search for airlines/airports/flights by keyword.
result = client.searchresults.find(query="JFK", limit=1).first()
if result:
print(f"Top match: {result.label} (type={result.type}, id={result.id})")
# List airports — take one and inspect it.
airport = client.airports.list(limit=1).first()
if airport:
print(f"Airport: {airport.name} ({airport.iata}/{airport.icao}) in {airport.city}, {airport.country}")
# List airlines with typed-error handling.
try:
for airline in client.airlines.list(limit=3):
print(f"Airline: {airline.name} ({airline.icao}) active={airline.active}")
except FlightAreaEmpty as exc:
print(f"Not found: {exc}")
print("Exercised: geolocations.detect / flights.nearby / searchresults.find / airports.list / airlines.list")
Get all nearby flights within a specified geographic bounding box. Returns real-time aircraft positions, altitudes, speeds, routing, and metadata for each flight visible in the area. The bounding box is defined as lat_max,lat_min,lon_min,lon_max in decimal degrees. Global tracking stats are included alongside the flight list.
| Param | Type | Description |
|---|---|---|
| bounds | string | Bounding box as 'lat_max,lat_min,lon_min,lon_max' (decimal degrees). Defines the geographic area to scan for flights. |
{
"type": "object",
"fields": {
"stats": "object with total and visible flight source counts broken down by ads-b, mlat, faa, flarm, estimated, satellite, uat, other",
"flights": "array of flight objects with id, hex, latitude, longitude, track, altitude, speed, squawk, radar, aircraft_type, registration, timestamp, origin, destination, flight_number, on_ground, vertical_speed, callsign, airline",
"version": "integer API version",
"full_count": "integer total number of flights tracked globally"
},
"sample": {
"data": {
"stats": {
"total": {
"faa": 210,
"uat": 42,
"mlat": 767,
"ads-b": 13441,
"flarm": 12,
"other": 142,
"estimated": 327,
"satellite": 1024
},
"visible": {
"faa": 3,
"uat": 0,
"mlat": 0,
"ads-b": 20,
"flarm": 0,
"other": 1,
"estimated": 0,
"satellite": 0
}
},
"flights": [
{
"id": "401faeef",
"hex": "39CF0C",
"radar": "T-AER",
"speed": 122,
"track": 206,
"origin": "CDG",
"squawk": "",
"airline": "AFR",
"altitude": 700,
"callsign": "AFR064",
"latitude": 40.723,
"longitude": -74.1454,
"on_ground": 0,
"timestamp": 1781142232,
"destination": "EWR",
"registration": "F-HTYM",
"aircraft_type": "A359",
"flight_number": "AF64",
"vertical_speed": -576
}
],
"version": 4,
"full_count": 15988
},
"status": "success"
}
}About the Flightradar API
Real-Time Flight Positions
The get_nearby_flights endpoint accepts a bounds parameter formatted as lat_max,lat_min,lon_min,lon_max in decimal degrees and returns an array of flight objects. Each object includes the aircraft's current latitude, longitude, altitude, speed, track (heading), squawk transponder code, aircraft_type, registration, and the radar source that reported it. The response also includes a stats object breaking down tracked aircraft by source type — ADS-B, MLAT, FAA, FLARM, satellite, UAT, estimated, and other — along with a full_count integer showing how many flights are tracked globally at that moment.
Search and Reference Data
The search endpoint accepts a query string (flight number, airport code, or airline name) and an optional limit. Results are returned as a typed array where each item carries an id, label, detail, type, and match field. The stats object in the response breaks counts down by result category: airport, operator, live, schedule, and aircraft. This makes it practical for resolving ambiguous input — for example, distinguishing a live flight from a scheduled one when querying by flight number.
Airport and Airline Databases
get_airports returns the full Flightradar24 airport list with no required parameters. Each airport record includes iata, icao, city, country, lat, lon, alt, size, and a timezone object with name, offset, and DST offset. get_airlines returns all tracked airlines with iata, icao, active boolean, hub, logo metadata, and a URL slug. Both endpoints include a version field for cache invalidation.
GeoIP for Location Bootstrapping
get_geoip returns the lat, lng, country, region, eu flag, and a radiuskm value derived from the requesting IP address. This is specifically useful for constructing an initial bounding box to pass into get_nearby_flights without requiring the caller to hard-code coordinates.
The Flightradar API is a managed, monitored endpoint for flightradar.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when flightradar.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official flightradar.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display a live map of aircraft over a city by feeding bounding-box coordinates into get_nearby_flights
- Build a flight-status lookup tool using the search endpoint to resolve flight numbers to live or scheduled results
- Populate an airport selector dropdown using the IATA, ICAO, city, and country fields from get_airports
- Filter active vs. inactive carriers in an airline directory using the active boolean from get_airlines
- Auto-center a regional flight map using the lat, lng, and radiuskm values returned by get_geoip
- Identify transponder anomalies by monitoring squawk codes across flights in a bounding box
- Analyze ADS-B vs. MLAT vs. satellite coverage ratios using the stats breakdown from get_nearby_flights
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.