Skip to main content

Flight Status

Get real-time flight status, departure and arrival details, gate and terminal information for any active flight.

Get Flight Status

GET /v3/flight_status/{flight_number}

Retrieve real-time status for a specific flight. Supports both IATA and ICAO flight number formats.

Parameters

ParameterTypeInRequiredDescription
flight_numberstringpathYesFlight number (2-10 characters). IATA (e.g., BA123) or ICAO (e.g., BAW123) format.

Supported Flight Number Formats

FormatExampleDescription
IATABA1232-letter airline code + numeric
IATACA933Air China
IATAAA456American Airlines
ICAOBAW1233-letter ICAO code + numeric
ICAOCCA933Air China ICAO callsign
ICAOAAL456American Airlines ICAO callsign
ICAORYR5733Ryanair ICAO callsign
v3 Improvement

In v3, ICAO callsigns (e.g., BAW123) are automatically converted to IATA format (e.g., BA123) for lookup. In v2, only IATA format is accepted.

Response Fields

FieldTypeDescription
flight_numberstringFlight number as displayed (e.g., BA 123)
airlinestringAirline name
statusstringCurrent flight status (e.g., En Route, Landed, Scheduled)
departure.airportstringDeparture airport ICAO code
departure.airport_fullstringDeparture airport full name
departure.scheduled_timestringScheduled departure time
departure.scheduled_datestringScheduled departure date
departure.actual_timestringActual departure time (if departed)
departure.actual_datestringActual departure date
departure.terminalstringDeparture terminal
departure.gatestringDeparture gate
departure.checkinstringCheck-in counter
arrival.airportstringArrival airport ICAO code
arrival.airport_fullstringArrival airport full name
arrival.scheduled_timestringScheduled arrival time
arrival.scheduled_datestringScheduled arrival date
arrival.estimated_timestringEstimated arrival time
arrival.estimated_datestringEstimated arrival date
arrival.terminalstringArrival terminal
arrival.gatestringArrival gate
arrival.baggagestringBaggage claim belt

Response Example

{
"flight_number": "BA 123",
"airline": "British Airways",
"status": "En Route",
"departure": {
"airport": "EGLL",
"airport_full": "London Heathrow Airport",
"scheduled_time": "10:30",
"scheduled_date": "11 Feb",
"actual_time": "10:35",
"actual_date": "11 Feb",
"terminal": "5",
"gate": "A12",
"checkin": ""
},
"arrival": {
"airport": "KJFK",
"airport_full": "John F Kennedy International Airport",
"scheduled_time": "14:45",
"scheduled_date": "11 Feb",
"estimated_time": "14:50",
"estimated_date": "11 Feb",
"terminal": "7",
"gate": "B15",
"baggage": ""
}
}

Code Examples

cURL

# Using IATA format
curl -X GET "YOUR_API_BASE_URL/v3/flight_status/BA123" \
-H "X-RapidAPI-Key: YOUR_API_KEY"

# Using ICAO format (automatically converted to IATA)
curl -X GET "YOUR_API_BASE_URL/v3/flight_status/BAW123" \
-H "X-RapidAPI-Key: YOUR_API_KEY"

# Ryanair flight using ICAO callsign
curl -X GET "YOUR_API_BASE_URL/v3/flight_status/RYR5733" \
-H "X-RapidAPI-Key: YOUR_API_KEY"

Python

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "YOUR_API_BASE_URL"

def get_flight_status(flight_number: str) -> dict:
"""Get real-time flight status. Accepts IATA or ICAO format."""
response = requests.get(
f"{BASE_URL}/v3/flight_status/{flight_number}",
headers={"X-RapidAPI-Key": API_KEY}
)
response.raise_for_status()
return response.json()

# IATA format
status = get_flight_status("BA123")
print(f"Flight: {status['flight_number']}")
print(f"Status: {status['status']}")
print(f"From: {status['departure']['airport_full']}")
print(f"To: {status['arrival']['airport_full']}")

# ICAO format works too
status = get_flight_status("BAW123")
print(f"Flight: {status['flight_number']}")
# Async example with httpx
import httpx

async def get_flight_status_async(flight_number: str) -> dict:
async with httpx.AsyncClient() as client:
response = await client.get(
f"{BASE_URL}/v3/flight_status/{flight_number}",
headers={"X-RapidAPI-Key": API_KEY}
)
response.raise_for_status()
return response.json()

JavaScript

const API_KEY = "YOUR_API_KEY";
const BASE_URL = "YOUR_API_BASE_URL";

async function getFlightStatus(flightNumber) {
const response = await fetch(
`${BASE_URL}/v3/flight_status/${flightNumber}`,
{
headers: { "X-RapidAPI-Key": API_KEY },
}
);

if (!response.ok) {
const error = await response.json();
throw new Error(error.detail || `HTTP ${response.status}`);
}

return response.json();
}

// Works with both IATA and ICAO formats
getFlightStatus("BA123").then((flight) => {
console.log(`${flight.flight_number} - ${flight.status}`);
console.log(
`${flight.departure.airport_full} -> ${flight.arrival.airport_full}`
);
console.log(`Departure: ${flight.departure.scheduled_time} (Gate ${flight.departure.gate})`);
console.log(`Arrival: ${flight.arrival.estimated_time} (Terminal ${flight.arrival.terminal})`);
});

Error Responses

StatusDescription
400Flight number is empty or invalid
404Flight not found
500Internal server error
warning

Flight status data is real-time and depends on upstream data availability. Some fields (such as gate, terminal, baggage) may be empty if the airline or airport has not published that information.

tip

If you have an ICAO callsign from ADS-B data (e.g., BAW123), you can pass it directly to this endpoint without manual conversion. The v3 API handles the ICAO-to-IATA translation automatically.