Airline Routes
curl --request GET \
--url https://api.flystack.dev/v1/routes \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.flystack.dev/v1/routes"
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/routes', 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/routes",
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/routes"
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/routes")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flystack.dev/v1/routes")
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[
{
"airline_iata": "SK",
"airline_icao": "SAS",
"flight_number": "834",
"flight_iata": "SK834",
"flight_icao": "SAS834",
"cs_airline_iata": null,
"cs_flight_iata": null,
"cs_flight_number": null,
"dep_iata": "CDG",
"dep_icao": "LFPG",
"dep_time": "12:16",
"dep_time_utc": "11:16",
"dep_terminals": null,
"arr_iata": "OSL",
"arr_icao": "ENGM",
"arr_time": "14:21",
"arr_time_utc": "13:21",
"arr_terminals": null,
"duration": 124,
"days": ["tue"],
"aircraft_icao": "A20N",
"updated": "2026-11-03T19:05:25.453Z"
}
]
[
{
"airline_iata": "AF",
"airline_icao": "AFR",
"flight_number": "1080",
"flight_iata": "AF1080",
"flight_icao": "AFR1080",
"cs_airline_iata": null,
"cs_flight_iata": null,
"cs_flight_number": null,
"dep_iata": "CDG",
"dep_icao": "LFPG",
"dep_time": null,
"dep_time_utc": null,
"dep_terminals": null,
"arr_iata": "LHR",
"arr_icao": "EGLL",
"arr_time": null,
"arr_time_utc": null,
"arr_terminals": null,
"duration": 44,
"days": null,
"aircraft_icao": null,
"updated": "2026-11-03T19:01:19.956Z"
}
]
Datasets
Airline Routes
Explore airline routes and planned schedules (non real-time) to build connections and future itineraries.
GET
/
v1
/
routes
Airline Routes
curl --request GET \
--url https://api.flystack.dev/v1/routes \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.flystack.dev/v1/routes"
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/routes', 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/routes",
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/routes"
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/routes")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flystack.dev/v1/routes")
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[
{
"airline_iata": "SK",
"airline_icao": "SAS",
"flight_number": "834",
"flight_iata": "SK834",
"flight_icao": "SAS834",
"cs_airline_iata": null,
"cs_flight_iata": null,
"cs_flight_number": null,
"dep_iata": "CDG",
"dep_icao": "LFPG",
"dep_time": "12:16",
"dep_time_utc": "11:16",
"dep_terminals": null,
"arr_iata": "OSL",
"arr_icao": "ENGM",
"arr_time": "14:21",
"arr_time_utc": "13:21",
"arr_terminals": null,
"duration": 124,
"days": ["tue"],
"aircraft_icao": "A20N",
"updated": "2026-11-03T19:05:25.453Z"
}
]
[
{
"airline_iata": "AF",
"airline_icao": "AFR",
"flight_number": "1080",
"flight_iata": "AF1080",
"flight_icao": "AFR1080",
"cs_airline_iata": null,
"cs_flight_iata": null,
"cs_flight_number": null,
"dep_iata": "CDG",
"dep_icao": "LFPG",
"dep_time": null,
"dep_time_utc": null,
"dep_terminals": null,
"arr_iata": "LHR",
"arr_icao": "EGLL",
"arr_time": null,
"arr_time_utc": null,
"arr_terminals": null,
"duration": 44,
"days": null,
"aircraft_icao": null,
"updated": "2026-11-03T19:01:19.956Z"
}
]
The Routes dataset contains planned airline schedules that are operated by airlines. This is not real-time data and does not include live flight status.
Together with the Flight Schedules API, routes data can help you predict schedules further into the future and build connection logic (days of week, departure times, aircraft type, terminals, etc.).
Authentication
string
required
Your FlyStack API token. You can create one from the dashboard (see Authentication).
Query parameters
Route filters
string
Filter by departure airport IATA code (e.g.,
CMB).string
Filter by departure airport ICAO code (e.g.,
VCBI).string
Filter by arrival airport IATA code (e.g.,
AUH).string
Filter by arrival airport ICAO code (e.g.,
OMAA).string
Filter by airline IATA code (e.g.,
UL).string
Filter by airline ICAO code (e.g.,
ALK).string
Filter by flight ICAO code-number (e.g.,
ALK2265).string
Filter by flight IATA code-number (e.g.,
UL2265).string
Filter by flight number only (e.g.,
2265).Response shaping & pagination
string
Comma-separated list of fields to return (e.g.,
airline_iata,flight_number).number
Max number of rows per response: 100 by default, up to 1,000 (limits may depend on your plan).
number
Pagination offset (0+). When more rows match, the response has the headers
X-Has-More: true and X-Next-Offset: pass its value as offset to get the next page.For best results, provide at least one filter (airport, airline, or flight code).
Published routes give the airports of a flight number. Once FlyStack has tracked the flight, its route also carries the times, days of operation, aircraft type and duration observed (
SK834 in the example); before that, these fields are null and the duration is estimated from the distance (AF1080). A route no source publishes, learned from tracked flights only, is returned once flown at least twice: a single flight may be a diversion or a positioning flight.Response
The endpoint returns a list of routes.Routes dataset response fields
Show Airline & flight identifiers
Show Airline & flight identifiers
Show Departure
Show Departure
Show Arrival
Show Arrival
Show Operations
Show Operations
number
Flight duration in minutes, takeoff to landing: observed on the flights FlyStack tracked, else estimated from the distance.
array
Days of operation (
sun, mon, tue, wed, thu, fri, sat).string
Last used aircraft ICAO type on this route (when available).
string
Last update timestamp (when available).
[
{
"airline_iata": "SK",
"airline_icao": "SAS",
"flight_number": "834",
"flight_iata": "SK834",
"flight_icao": "SAS834",
"cs_airline_iata": null,
"cs_flight_iata": null,
"cs_flight_number": null,
"dep_iata": "CDG",
"dep_icao": "LFPG",
"dep_time": "12:16",
"dep_time_utc": "11:16",
"dep_terminals": null,
"arr_iata": "OSL",
"arr_icao": "ENGM",
"arr_time": "14:21",
"arr_time_utc": "13:21",
"arr_terminals": null,
"duration": 124,
"days": ["tue"],
"aircraft_icao": "A20N",
"updated": "2026-11-03T19:05:25.453Z"
}
]
[
{
"airline_iata": "AF",
"airline_icao": "AFR",
"flight_number": "1080",
"flight_iata": "AF1080",
"flight_icao": "AFR1080",
"cs_airline_iata": null,
"cs_flight_iata": null,
"cs_flight_number": null,
"dep_iata": "CDG",
"dep_icao": "LFPG",
"dep_time": null,
"dep_time_utc": null,
"dep_terminals": null,
"arr_iata": "LHR",
"arr_icao": "EGLL",
"arr_time": null,
"arr_time_utc": null,
"arr_terminals": null,
"duration": 44,
"days": null,
"aircraft_icao": null,
"updated": "2026-11-03T19:01:19.956Z"
}
]