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
| Parameter | Type | In | Required | Description |
|---|---|---|---|---|
flight_number | string | path | Yes | Flight number (2-10 characters). IATA (e.g., BA123) or ICAO (e.g., BAW123) format. |
Supported Flight Number Formats
| Format | Example | Description |
|---|---|---|
| IATA | BA123 | 2-letter airline code + numeric |
| IATA | CA933 | Air China |
| IATA | AA456 | American Airlines |
| ICAO | BAW123 | 3-letter ICAO code + numeric |
| ICAO | CCA933 | Air China ICAO callsign |
| ICAO | AAL456 | American Airlines ICAO callsign |
| ICAO | RYR5733 | Ryanair 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
| Field | Type | Description |
|---|---|---|
flight_number | string | Flight number as displayed (e.g., BA 123) |
airline | string | Airline name |
status | string | Current flight status (e.g., En Route, Landed, Scheduled) |
departure.airport | string | Departure airport ICAO code |
departure.airport_full | string | Departure airport full name |
departure.scheduled_time | string | Scheduled departure time |
departure.scheduled_date | string | Scheduled departure date |
departure.actual_time | string | Actual departure time (if departed) |
departure.actual_date | string | Actual departure date |
departure.terminal | string | Departure terminal |
departure.gate | string | Departure gate |
departure.checkin | string | Check-in counter |
arrival.airport | string | Arrival airport ICAO code |
arrival.airport_full | string | Arrival airport full name |
arrival.scheduled_time | string | Scheduled arrival time |
arrival.scheduled_date | string | Scheduled arrival date |
arrival.estimated_time | string | Estimated arrival time |
arrival.estimated_date | string | Estimated arrival date |
arrival.terminal | string | Arrival terminal |
arrival.gate | string | Arrival gate |
arrival.baggage | string | Baggage 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
| Status | Description |
|---|---|
| 400 | Flight number is empty or invalid |
| 404 | Flight not found |
| 500 | Internal 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.