staticdata.dev
Menu
Datasets About Contact

Airports

4 500+ commercial and major airports worldwide, each with its IATA and ICAO codes, human-readable name, municipality, ISO country code, WGS-84 coordinates, elevation in feet, and airport type (large or medium). Use it for flight-search autocomplete, route planning, geo lookups, and any application that needs a reliable, coded list of the world's airports.

v1.0.0 MIT 4,568 records Updated 2026-10-05 stable Source:  OurAirports (David Megginson)

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
curl https://staticdata.dev/v1/airports.json

Or use as a typed import: import { airports } from "https://staticdata.dev/v1/airports.ts"

Formats

  • JSON 1.02 MB

    /v1/airports.json

    Open

    min: 780.9 KB · /v1/airports.min.json

  • CSV 406.0 KB

    /v1/airports.csv

    Open
  • TypeScript 1.02 MB

    /v1/airports.ts

    export const airports

    type Airport = (typeof airports)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
Field Type Description Example
iata string IATA 3-letter airport code JFK
icao? string | null ICAO 4-letter ident (may equal local code) KJFK
name string Full airport name John F Kennedy International Airport
city? string | null Municipality served by the airport New York
country string ISO 3166-1 alpha-2 country code US
lat number WGS-84 latitude in decimal degrees 40.63972
lon number WGS-84 longitude in decimal degrees -73.77889
elevationFt? number | null Elevation above mean sea level in feet 13
type string Airport size class: large_airport or medium_airport large_airport

Preview

First 10 records.

Data preview
iataicaonamecitycountrylat
AAANTGAAnaa AirportAnaaPF-17.3526
AACHEAREl Arish International AirportEl ArishEG31.055324
AAEDABBAnnaba Rabah Bitat AirportAnnabaDZ36.826781
AALEKYTAalborg AirportAalborgDK57.094763
AAMFAMDMalamala AirportMalamalaZA-24.816866
AANOMALAl Ain International AirportAl AinAE24.2617
AAOSVANAnaco AirportAnacoVE9.430225
AAPWALSAji Pangeran Tumenggung Pranoto International AirportSamarindaID-0.374478
AAQURKAAnapa Vityazevo AirportKrasnyi KurganRU45.002102
AAREKAHAarhus AirportAarhusDK56.303331

Showing 10 of 4,568. View full data:  JSON · CSV

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/airports.json | jq '.[0]'
JavaScript
import type { Airport } from "https://staticdata.dev/v1/airports.ts";

const res = await fetch("https://staticdata.dev/v1/airports.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const airports: Airport[] = await res.json();
console.log(airports[0]);
Python
import urllib.request, json

with urllib.request.urlopen("https://staticdata.dev/v1/airports.min.json") as r:
    airports = json.load(r)

print(airports[0])
Go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	resp, err := http.Get("https://staticdata.dev/v1/airports.min.json")
	if err != nil { panic(err) }
	defer resp.Body.Close()

	var data []map[string]any
	if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
		panic(err)
	}
	fmt.Println(data[0])
}
Rust
use serde_json::Value;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let body = ureq::get("https://staticdata.dev/v1/airports.min.json").call()?.into_string()?;
    let data: Vec<Value> = serde_json::from_str(&body)?;
    println!("{:?}", data.first());
    Ok(())
}

Sources and methodology

The dataset is derived from the OurAirports open-data project maintained by David Megginson and contributors. The upstream CSV is released into the public domain and updated frequently by a global volunteer community. Only rows where type is large_airport or medium_airport and an IATA code is present are included, which removes private strips, heliports, seaplane bases, and small GA fields that are irrelevant for most developer use cases.

Each record’s iata field is the IATA Location Identifier (the three-letter code printed on baggage tags). The icao field is taken from the OurAirports ident column, which for most international airports matches the ICAO four-letter designator but may be a local code for some regional airports. Coordinates (lat, lon) are WGS-84 decimal degrees sourced from OurAirports; elevationFt is in feet above mean sea level and is null where the source does not record an elevation.

Country codes follow ISO 3166-1 alpha-2. A small number of airports are assigned to territories rather than sovereign states (e.g. GF for French Guiana, PR for Puerto Rico); this mirrors standard IATA country assignments. Records are sorted alphabetically by IATA code for deterministic diffs and predictable binary search. The current snapshot (4 568 airports) was regenerated from OurAirports as of October 2026; it reflects recent changes such as Palm Beach International becoming President Donald J. Trump International Airport with IATA code DJT (formerly PBI, August 2026). IATA codes are occasionally reassigned or retired when airports close or are renamed, so do not treat them as permanent identifiers.

Versioning

URLs under /v1/ are stable: field names and types will not change in a way that breaks consumers. Values can be corrected or records added when the upstream source changes; schema-incompatible updates ship under a new version path. See the airports changelog for this dataset's history.

Related datasets

More Geo datasets