Flight Lookup
curl --request GET \
--url https://api.flystack.dev/v1/flights/lookup \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.flystack.dev/v1/flights/lookup"
headers = {"x-api-key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
fetch('https://api.flystack.dev/v1/flights/lookup', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.flystack.dev/v1/flights/lookup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.flystack.dev/v1/flights/lookup"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.flystack.dev/v1/flights/lookup")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flystack.dev/v1/flights/lookup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"hex": "39D2A2",
"reg_number": "F-HUVC",
"aircraft_icao": "A359",
"flag": "FR",
"lat": 48.882457,
"lng": -68.940221,
"alt": 12192.0,
"dir": 241.7,
"speed": 807.8,
"v_speed": 0.0,
"squawk": "2420",
"airline_icao": "AFR",
"airline_iata": "AF",
"flight_number": "66",
"flight_icao": "AFR66",
"flight_iata": "AF66",
"cs_airline_iata": null,
"cs_flight_number": null,
"cs_flight_iata": null,
"dep_icao": "LFPG",
"dep_iata": "CDG",
"dep_terminal": null,
"dep_gate": null,
"dep_time": null,
"dep_time_ts": null,
"dep_time_utc": null,
"arr_icao": "KLAX",
"arr_iata": "LAX",
"arr_terminal": null,
"arr_gate": null,
"arr_baggage": null,
"arr_time": null,
"arr_time_ts": null,
"arr_time_utc": null,
"duration": 692,
"delayed": null,
"dep_delayed": null,
"arr_delayed": null,
"updated": 1793732805,
"status": "en-route",
"age": 3,
"built": 2023,
"engine": "jet",
"engine_count": "2",
"model": "Airbus A-350-900 XWB",
"manufacturer": "AIRBUS",
"msn": "616",
"type": "landplane"
}
{
"error": {
"code": "NOT_FOUND",
"message": "No live, recent or planned flight matches this code."
}
}
Real-time
Flight Lookup
Lookup a single flight and get detailed information by IATA or ICAO flight code.
GET
/
v1
/
flights
/
lookup
Flight Lookup
curl --request GET \
--url https://api.flystack.dev/v1/flights/lookup \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.flystack.dev/v1/flights/lookup"
headers = {"x-api-key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
fetch('https://api.flystack.dev/v1/flights/lookup', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.flystack.dev/v1/flights/lookup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.flystack.dev/v1/flights/lookup"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.flystack.dev/v1/flights/lookup")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flystack.dev/v1/flights/lookup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"hex": "39D2A2",
"reg_number": "F-HUVC",
"aircraft_icao": "A359",
"flag": "FR",
"lat": 48.882457,
"lng": -68.940221,
"alt": 12192.0,
"dir": 241.7,
"speed": 807.8,
"v_speed": 0.0,
"squawk": "2420",
"airline_icao": "AFR",
"airline_iata": "AF",
"flight_number": "66",
"flight_icao": "AFR66",
"flight_iata": "AF66",
"cs_airline_iata": null,
"cs_flight_number": null,
"cs_flight_iata": null,
"dep_icao": "LFPG",
"dep_iata": "CDG",
"dep_terminal": null,
"dep_gate": null,
"dep_time": null,
"dep_time_ts": null,
"dep_time_utc": null,
"arr_icao": "KLAX",
"arr_iata": "LAX",
"arr_terminal": null,
"arr_gate": null,
"arr_baggage": null,
"arr_time": null,
"arr_time_ts": null,
"arr_time_utc": null,
"duration": 692,
"delayed": null,
"dep_delayed": null,
"arr_delayed": null,
"updated": 1793732805,
"status": "en-route",
"age": 3,
"built": 2023,
"engine": "jet",
"engine_count": "2",
"model": "Airbus A-350-900 XWB",
"manufacturer": "AIRBUS",
"msn": "616",
"type": "landplane"
}
{
"error": {
"code": "NOT_FOUND",
"message": "No live, recent or planned flight matches this code."
}
}
The Flight Lookup API combines schedule data, near real-time tracking, and aircraft details for a single scheduled & live flight. It’s ideal for flight detail screens: status, position, usual times, delays and aircraft information in one response. Terminals, gates and baggage belts are returned as
null: no open source provides them.
This endpoint returns the closest matching flight (live, scheduled, or landed). If you need all occurrences of a flight number across a day, use the Flight Schedules API and query by
flight_iata or flight_icao.Scheduled times are the usual times of the flight, learned from at least 3 of its flights FlyStack tracked; delays are measured against them, not against an airline timetable.
Authentication
string
required
Your FlyStack API token. You can create one from the dashboard (see Authentication).
Query parameters
string
Search by flight ICAO code-number (e.g.,
AAL6).string
Or search by flight IATA code-number (e.g.,
AA6).Provide either
flight_iata or flight_icao.string
Comma-separated list of fields to return (e.g.,
flight_iata,status,dep_iata,arr_iata).Response
Show Live tracking
Show Live tracking
string
ICAO24 hex address.
number
Latitude.
number
Longitude.
number
Altitude (meters).
number
Heading (degrees).
number
Horizontal speed (km/h).
number
Vertical speed (m/s, positive when climbing).
string
Squawk code (when available).
number
UNIX timestamp of last update.
string
Flight status (e.g.,
scheduled, en-route, landed). A flight that leaves receiver coverage is landed once it should have arrived, or 6 hours after its last position when no arrival is known: its landing was not observed, and its arrival airport is the one its route publishes.Show Airline & flight identifiers
Show Airline & flight identifiers
Show Route
Show Route
Show Airport operations
Show Airport operations
Show Times & delays
Show Times & delays
string
Scheduled departure time (local).
number
Scheduled departure time (unix).
string
Scheduled departure time (UTC).
string
Scheduled arrival time (local).
number
Scheduled arrival time (unix).
string
Scheduled arrival time (UTC).
number
Flight duration in minutes, takeoff to landing: observed on the flights FlyStack tracked, else estimated from the distance.
number
Estimated total delay (minutes, when available).
number
Departure delay (minutes, when available).
number
Arrival delay (minutes, when available).
Show Aircraft details
Show Aircraft details
string
Aircraft registration number (when available).
string
Aircraft ICAO type designator.
string
Aircraft model (when available).
string
Aircraft manufacturer (when available).
string
Manufacturer serial number (when available).
string
Engine type (when available).
string
Engine count (when available).
number
Build year (when available).
number
Aircraft age (years, when available).
string
Airframe type (when available).
string
Country of registration of the aircraft (ISO-2 code, when available).
{
"hex": "39D2A2",
"reg_number": "F-HUVC",
"aircraft_icao": "A359",
"flag": "FR",
"lat": 48.882457,
"lng": -68.940221,
"alt": 12192.0,
"dir": 241.7,
"speed": 807.8,
"v_speed": 0.0,
"squawk": "2420",
"airline_icao": "AFR",
"airline_iata": "AF",
"flight_number": "66",
"flight_icao": "AFR66",
"flight_iata": "AF66",
"cs_airline_iata": null,
"cs_flight_number": null,
"cs_flight_iata": null,
"dep_icao": "LFPG",
"dep_iata": "CDG",
"dep_terminal": null,
"dep_gate": null,
"dep_time": null,
"dep_time_ts": null,
"dep_time_utc": null,
"arr_icao": "KLAX",
"arr_iata": "LAX",
"arr_terminal": null,
"arr_gate": null,
"arr_baggage": null,
"arr_time": null,
"arr_time_ts": null,
"arr_time_utc": null,
"duration": 692,
"delayed": null,
"dep_delayed": null,
"arr_delayed": null,
"updated": 1793732805,
"status": "en-route",
"age": 3,
"built": 2023,
"engine": "jet",
"engine_count": "2",
"model": "Airbus A-350-900 XWB",
"manufacturer": "AIRBUS",
"msn": "616",
"type": "landplane"
}
{
"error": {
"code": "NOT_FOUND",
"message": "No live, recent or planned flight matches this code."
}
}
When no live, recent or planned flight matches, the response is
404 with the error code NOT_FOUND. You can often find future occurrences using the Routes Dataset.