Airports Dataset
curl --request GET \
--url https://api.flystack.dev/v1/airports \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.flystack.dev/v1/airports"
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/airports', 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/airports",
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/airports"
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/airports")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flystack.dev/v1/airports")
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[
{
"name": "Paris Charles de Gaulle Airport",
"iata_code": "CDG",
"icao_code": "LFPG",
"lat": 49.009592,
"lng": 2.555675,
"alt": 392,
"city": "Paris",
"city_code": "PAR",
"un_locode": "FRCDG",
"timezone": "Europe/Paris",
"country_code": "FR",
"phone": "+33170363950",
"website": "http://www.aeroportsdeparis.fr/",
"facebook": "facebook.com/parisaeroport",
"instagram": "instagram.com/parisaeroport/",
"linkedin": "linkedin.com/company/groupe-adp",
"twitter": "twitter.com/parisaeroport",
"names": {
"en": "Paris Charles de Gaulle Airport",
"fr": "Aéroport Paris–Charles de Gaulle",
"es": "Aeropuerto de París - Charles de Gaulle"
},
"runways": 8,
"departures": 186292,
"connections": 411,
"is_major": false,
"is_international": 1,
"slug": "charles-gaulle-cdg-lfpg-fr"
}
]
Datasets
Airports Dataset
Search and filter airports worldwide using IATA/ICAO codes and rich metadata.
GET
/
v1
/
airports
Airports Dataset
curl --request GET \
--url https://api.flystack.dev/v1/airports \
--header 'x-api-key: <x-api-key>'import requests
url = "https://api.flystack.dev/v1/airports"
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/airports', 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/airports",
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/airports"
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/airports")
.header("x-api-key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flystack.dev/v1/airports")
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[
{
"name": "Paris Charles de Gaulle Airport",
"iata_code": "CDG",
"icao_code": "LFPG",
"lat": 49.009592,
"lng": 2.555675,
"alt": 392,
"city": "Paris",
"city_code": "PAR",
"un_locode": "FRCDG",
"timezone": "Europe/Paris",
"country_code": "FR",
"phone": "+33170363950",
"website": "http://www.aeroportsdeparis.fr/",
"facebook": "facebook.com/parisaeroport",
"instagram": "instagram.com/parisaeroport/",
"linkedin": "linkedin.com/company/groupe-adp",
"twitter": "twitter.com/parisaeroport",
"names": {
"en": "Paris Charles de Gaulle Airport",
"fr": "Aéroport Paris–Charles de Gaulle",
"es": "Aeropuerto de París - Charles de Gaulle"
},
"runways": 8,
"departures": 186292,
"connections": 411,
"is_major": false,
"is_international": 1,
"slug": "charles-gaulle-cdg-lfpg-fr"
}
]
Airport data is fundamental to any travel-related product. A complete airports dataset helps you meet user expectations and ship better experiences—destination maps, airport pickers, logistics models, internal tools, analytics, and more.
Use the Airports Dataset endpoint to retrieve airports worldwide and filter them by common aviation identifiers.
Authentication
string
required
Your FlyStack API token. You can create one from the dashboard (see Authentication).
Query parameters
Airport identifiers
string
Filter by airport IATA code (e.g.,
CDG).string
Filter by airport ICAO code (e.g.,
LFPG).string
Filter by IATA city code (e.g.,
PAR).string
Filter by country ISO-2 code (e.g.,
FR).Response shaping
string
Comma-separated list of fields to return (e.g.,
name,iata_code,icao_code,lat,lng).The response can be shortened for readability when using
_fields. Data coverage may vary by airport.Response
The endpoint returns a list of airports.Airports dataset response fields
string
Public airport name.
string
Official IATA code.
string
Official ICAO code.
number
Latitude.
number
Longitude.
number
Airport elevation (feet).
string
Metropolitan city name (when available).
string
IATA city code (when available).
string
United Nations location code (when available).
string
IANA timezone (when available).
string
ISO-2 country code.
Show Names & metadata
Show Names & metadata
object
Alternative airport names in different languages (when available).
number
Total number of runways (when available).
number
Estimated total departures per year (when available).
number
Estimated number of direct connections to other airports (when available).
boolean
Whether this is a major airport in its metro area (when available).
number
International operations flag (0/1, when available).
Show Links
Show Links
string
Unique airport identifier.
[
{
"name": "Paris Charles de Gaulle Airport",
"iata_code": "CDG",
"icao_code": "LFPG",
"lat": 49.009592,
"lng": 2.555675,
"alt": 392,
"city": "Paris",
"city_code": "PAR",
"un_locode": "FRCDG",
"timezone": "Europe/Paris",
"country_code": "FR",
"phone": "+33170363950",
"website": "http://www.aeroportsdeparis.fr/",
"facebook": "facebook.com/parisaeroport",
"instagram": "instagram.com/parisaeroport/",
"linkedin": "linkedin.com/company/groupe-adp",
"twitter": "twitter.com/parisaeroport",
"names": {
"en": "Paris Charles de Gaulle Airport",
"fr": "Aéroport Paris–Charles de Gaulle",
"es": "Aeropuerto de París - Charles de Gaulle"
},
"runways": 8,
"departures": 186292,
"connections": 411,
"is_major": false,
"is_international": 1,
"slug": "charles-gaulle-cdg-lfpg-fr"
}
]