country string ISO 3166-1 alpha-2 country or territory code, case-insensitive (dk and DK both resolve to DK). Must be exactly two letters.
Every scheduled-service airport with an IATA code — 4,159 rows with ICAO code, city, country, coordinates, elevation and IANA time zone.
Authoritative reference data or standards computation
Returns matching airports in IATA-code order. At most 100 records come back per request — use 'offset' to page and 'count' to shorten. Filters compose, and a zero-match filter returns an empty list plus a warning.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
country | string | example: DK | ISO 3166-1 alpha-2 country or territory code, case-insensitive (dk and DK both resolve to DK). Must be exactly two letters. |
search | string | example: sao paulo | Case- and diacritic-insensitive contains match over name, served city, country, country code, IATA code, ICAO code and ident. |
type | enum | default: any allowed: any | large_airport | medium_airport | small_airport | seaplane_base | heliport example: medium_airport | Only return one OurAirports size classification; any keeps every classification. |
offset | int | default: 0 allowed: 0 – 100000 example: 100 | Skip this many matches before returning records, for paging through a filter that matches more than one page. |
country string ISO 3166-1 alpha-2 country or territory code, case-insensitive (dk and DK both resolve to DK). Must be exactly two letters.
search string Case- and diacritic-insensitive contains match over name, served city, country, country code, IATA code, ICAO code and ident.
type enum Only return one OurAirports size classification; any keeps every classification.
offset int Skip this many matches before returning records, for paging through a filter that matches more than one page.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 100 allowed: 1 – 100 example: 3 | Limit the number of returned records (1–100). Defaults to 100. |
fields | list | example: name,city | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: timezone | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int Limit the number of returned records (1–100). Defaults to 100.
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
name | string | Airport name exactly as recorded in the OurAirports snapshot. | Copenhagen Kastrup Airport |
city | string | null | Primary municipality served, as recorded by OurAirports; it need not be the municipality where the airport is physically located. null when the snapshot records none. | Copenhagen |
country | string | Common English country or territory name. | Denmark |
countryCode | string (ISO 3166-1 alpha-2) | Two-letter country or territory code. | DK |
iata | string | Three-letter IATA airport code; unique across the snapshot. | CPH |
icao | string | null | Four-letter ICAO location indicator, or null for the airports the snapshot has no ICAO code for. | EKCH |
ident | string | OurAirports identifier — the ICAO code when one exists, otherwise a national or OurAirports-assigned id such as 5A8 or AG-0001. Always unique and always present. | EKCH |
type | string | OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport. | large_airport |
latitude | float | Airport latitude in WGS84 decimal degrees (positive north), rounded to 6 decimals. | 55.617901 |
longitude | float | Airport longitude in WGS84 decimal degrees (positive east), rounded to 6 decimals. | 12.656 |
elevationFt | integer | null | Airport elevation above mean sea level in feet; negative values are below sea level, null when the snapshot records none. | 17 |
timezone | string | null | IANA time zone id derived from the pinned coordinates at snapshot time and validated against the airport's ISO country; approximate near zone boundaries and null for the airports where the derivation could not be confirmed. | Europe/Copenhagen |
name string Airport name exactly as recorded in the OurAirports snapshot.
example: Copenhagen Kastrup Airport
city string | null Primary municipality served, as recorded by OurAirports; it need not be the municipality where the airport is physically located. null when the snapshot records none.
example: Copenhagen
country string Common English country or territory name.
example: Denmark
countryCode string (ISO 3166-1 alpha-2) Two-letter country or territory code.
example: DK
iata string Three-letter IATA airport code; unique across the snapshot.
example: CPH
icao string | null Four-letter ICAO location indicator, or null for the airports the snapshot has no ICAO code for.
example: EKCH
ident string OurAirports identifier — the ICAO code when one exists, otherwise a national or OurAirports-assigned id such as 5A8 or AG-0001. Always unique and always present.
example: EKCH
type string OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport.
example: large_airport
latitude float Airport latitude in WGS84 decimal degrees (positive north), rounded to 6 decimals.
example: 55.617901
longitude float Airport longitude in WGS84 decimal degrees (positive east), rounded to 6 decimals.
example: 12.656
elevationFt integer | null Airport elevation above mean sea level in feet; negative values are below sea level, null when the snapshot records none.
example: 17
timezone string | null IANA time zone id derived from the pinned coordinates at snapshot time and validated against the airport's ISO country; approximate near zone boundaries and null for the airports where the derivation could not be confirmed.
example: Europe/Copenhagen
/api/airports {
"data": [
{
"name": "Anaa Airport",
"city": "Anaa",
"country": "French Polynesia",
"countryCode": "PF",
"iata": "AAA",
"icao": "NTGA",
"ident": "NTGA",
"type": "medium_airport",
"latitude": -17.3526,
"longitude": -145.509995,
"elevationFt": 10,
"timezone": "Pacific/Tahiti"
},
{
"name": "El Arish International Airport",
"city": "El Arish",
"country": "Egypt",
"countryCode": "EG",
"iata": "AAC",
"icao": "HEAR",
"ident": "HEAR",
"type": "large_airport",
"latitude": 31.055324,
"longitude": 33.827964,
"elevationFt": 118,
"timezone": "Africa/Cairo"
},
{
"name": "Annaba Rabah Bitat Airport",
"city": "Annaba",
"country": "Algeria",
"countryCode": "DZ",
"iata": "AAE",
"icao": "DABB",
"ident": "DABB",
"type": "large_airport",
"latitude": 36.826781,
…
]
}
} /api/airports?country=be {
"data": [
{
"name": "Antwerp International Airport (Deurne)",
"city": "Antwerp",
"country": "Belgium",
"countryCode": "BE",
"iata": "ANR",
"icao": "EBAW",
"ident": "EBAW",
"type": "medium_airport",
"latitude": 51.190667,
"longitude": 4.463153,
"elevationFt": 39,
"timezone": "Europe/Brussels"
},
{
"name": "Brussels Airport",
"city": "Zaventem",
"country": "Belgium",
"countryCode": "BE",
"iata": "BRU",
"icao": "EBBR",
"ident": "EBBR",
"type": "large_airport",
"latitude": 50.901402,
"longitude": 4.48444,
"elevationFt": 175,
"timezone": "Europe/Brussels"
},
{
"name": "Brussels South Charleroi Airport",
"city": "Charleroi",
"country": "Belgium",
"countryCode": "BE",
"iata": "CRL",
"icao": "EBCI",
"ident": "EBCI",
"type": "large_airport",
"latitude": 50.461963,
…
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports?country=dk&count=100 {
"data": [
{
"name": "Aalborg Airport",
"city": "Aalborg",
"country": "Denmark",
"countryCode": "DK",
"iata": "AAL",
"icao": "EKYT",
"ident": "EKYT",
"type": "large_airport",
"latitude": 57.094763,
"longitude": 9.84993,
"elevationFt": 10,
"timezone": "Europe/Copenhagen"
},
{
"name": "Aarhus Airport",
"city": "Aarhus",
"country": "Denmark",
"countryCode": "DK",
"iata": "AAR",
"icao": "EKAH",
"ident": "EKAH",
"type": "large_airport",
"latitude": 56.303331,
"longitude": 10.618286,
"elevationFt": 82,
"timezone": "Europe/Copenhagen"
},
{
"name": "Billund Airport",
"city": "Billund",
"country": "Denmark",
"countryCode": "DK",
"iata": "BLL",
"icao": "EKBI",
"ident": "EKBI",
"type": "large_airport",
"latitude": 55.740335,
…
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports?search=sao+paulo {
"data": [
{
"name": "Congonhas–Deputado Freitas Nobre Airport",
"city": "São Paulo",
"country": "Brazil",
"countryCode": "BR",
"iata": "CGH",
"icao": "SBSP",
"ident": "SBSP",
"type": "large_airport",
"latitude": -23.627657,
"longitude": -46.654601,
"elevationFt": 2631,
"timezone": "America/Sao_Paulo"
},
{
"name": "São Paulo/Guarulhos–Governor André Franco Montoro International Airport",
"city": "São Paulo",
"country": "Brazil",
"countryCode": "BR",
"iata": "GRU",
"icao": "SBGR",
"ident": "SBGR",
"type": "large_airport",
"latitude": -23.431274,
"longitude": -46.469954,
"elevationFt": 2461,
"timezone": "America/Sao_Paulo"
}
],
"meta": {
"endpoint": "airports",
"count": 2,
"params": {
"search": "sao paulo",
"type": "any",
"offset": 0
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports?type=seaplane_base&count=100 {
"data": [
{
"name": "Angoon Seaplane Base",
"city": "Angoon",
"country": "United States",
"countryCode": "US",
"iata": "AGN",
"icao": "PAGN",
"ident": "PAGN",
"type": "seaplane_base",
"latitude": 57.497097,
"longitude": -134.56722,
"elevationFt": null,
"timezone": "America/Sitka"
},
{
"name": "Alitak Seaplane Base",
"city": "Lazy Bay",
"country": "United States",
"countryCode": "US",
"iata": "ALZ",
"icao": null,
"ident": "ALZ",
"type": "seaplane_base",
"latitude": 56.897294,
"longitude": -154.249692,
"elevationFt": null,
"timezone": "America/Anchorage"
},
{
"name": "Amook Bay Seaplane Base",
"city": "Amook Bay",
"country": "United States",
"countryCode": "US",
"iata": "AOS",
"icao": null,
"ident": "AK81",
"type": "seaplane_base",
"latitude": 57.4715,
…
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports?country=FR&count=25&offset=25 {
"data": [
{
"name": "Figari Sud-Corse Airport",
"city": "Figari",
"country": "France",
"countryCode": "FR",
"iata": "FSC",
"icao": "LFKF",
"ident": "LFKF",
"type": "large_airport",
"latitude": 41.50185,
"longitude": 9.097092,
"elevationFt": 85,
"timezone": "Europe/Paris"
},
{
"name": "Grenoble Alpes Isère Airport",
"city": "Grenoble",
"country": "France",
"countryCode": "FR",
"iata": "GNB",
"icao": "LFLS",
"ident": "LFLS",
"type": "medium_airport",
"latitude": 45.3629,
"longitude": 5.32937,
"elevationFt": 1302,
"timezone": "Europe/Paris"
},
{
"name": "Paris-Le Bourget International Airport",
"city": "Paris",
"country": "France",
"countryCode": "FR",
"iata": "LBG",
"icao": "LFPB",
"ident": "LFPB",
"type": "large_airport",
"latitude": 48.962276,
…
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports?country=US&count=5&format=csv name,city,country,countryCode,iata,icao,ident,type,latitude,longitude,elevationFt,timezone
Lehigh Valley International Airport,Allentown/Bethlehem,United States,US,ABE,KABE,KABE,medium_airport,40.651773,-75.442797,393,America/New_York
Abilene Regional Airport,Abilene,United States,US,ABI,KABI,KABI,medium_airport,32.411301,-99.6819,1791,America/Chicago
Ambler Airport,Ambler,United States,US,ABL,PAFM,PAFM,medium_airport,67.105529,-157.855339,334,America/Anchorage
Albuquerque International Sunport,Albuquerque,United States,US,ABQ,KABQ,KABQ,large_airport,35.039976,-106.608925,5355,America/Denver
Aberdeen Regional Airport,Aberdeen,United States,US,ABR,KABR,KABR,medium_airport,45.4491,-98.421799,1302,America/Chicago
Accepts a three-letter IATA code, a four-letter ICAO code or an OurAirports ident, case-insensitively and resolved in that order. Unknown well-formed codes are explicit 404s, never substitute records.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
code
required
| string | allowed: 3 – 7 example: CPH | A 3-letter IATA code, a 4-letter ICAO code or an OurAirports ident, case-insensitive. |
code string required A 3-letter IATA code, a 4-letter ICAO code or an OurAirports ident, case-insensitive.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: name,city | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: timezone | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
name | string | Airport name exactly as recorded in the OurAirports snapshot. | Copenhagen Kastrup Airport |
city | string | null | Primary municipality served, as recorded by OurAirports; it need not be the municipality where the airport is physically located. null when the snapshot records none. | Copenhagen |
country | string | Common English country or territory name. | Denmark |
countryCode | string (ISO 3166-1 alpha-2) | Two-letter country or territory code. | DK |
iata | string | Three-letter IATA airport code; unique across the snapshot. | CPH |
icao | string | null | Four-letter ICAO location indicator, or null for the airports the snapshot has no ICAO code for. | EKCH |
ident | string | OurAirports identifier — the ICAO code when one exists, otherwise a national or OurAirports-assigned id such as 5A8 or AG-0001. Always unique and always present. | EKCH |
type | string | OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport. | large_airport |
latitude | float | Airport latitude in WGS84 decimal degrees (positive north), rounded to 6 decimals. | 55.617901 |
longitude | float | Airport longitude in WGS84 decimal degrees (positive east), rounded to 6 decimals. | 12.656 |
elevationFt | integer | null | Airport elevation above mean sea level in feet; negative values are below sea level, null when the snapshot records none. | 17 |
timezone | string | null | IANA time zone id derived from the pinned coordinates at snapshot time and validated against the airport's ISO country; approximate near zone boundaries and null for the airports where the derivation could not be confirmed. | Europe/Copenhagen |
name string Airport name exactly as recorded in the OurAirports snapshot.
example: Copenhagen Kastrup Airport
city string | null Primary municipality served, as recorded by OurAirports; it need not be the municipality where the airport is physically located. null when the snapshot records none.
example: Copenhagen
country string Common English country or territory name.
example: Denmark
countryCode string (ISO 3166-1 alpha-2) Two-letter country or territory code.
example: DK
iata string Three-letter IATA airport code; unique across the snapshot.
example: CPH
icao string | null Four-letter ICAO location indicator, or null for the airports the snapshot has no ICAO code for.
example: EKCH
ident string OurAirports identifier — the ICAO code when one exists, otherwise a national or OurAirports-assigned id such as 5A8 or AG-0001. Always unique and always present.
example: EKCH
type string OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport.
example: large_airport
latitude float Airport latitude in WGS84 decimal degrees (positive north), rounded to 6 decimals.
example: 55.617901
longitude float Airport longitude in WGS84 decimal degrees (positive east), rounded to 6 decimals.
example: 12.656
elevationFt integer | null Airport elevation above mean sea level in feet; negative values are below sea level, null when the snapshot records none.
example: 17
timezone string | null IANA time zone id derived from the pinned coordinates at snapshot time and validated against the airport's ISO country; approximate near zone boundaries and null for the airports where the derivation could not be confirmed.
example: Europe/Copenhagen
/api/airports/lookup?code=CPH {
"data": {
"name": "Copenhagen Kastrup Airport",
"city": "Copenhagen",
"country": "Denmark",
"countryCode": "DK",
"iata": "CPH",
"icao": "EKCH",
"ident": "EKCH",
"type": "large_airport",
"latitude": 55.617901,
"longitude": 12.656,
"elevationFt": 17,
"timezone": "Europe/Copenhagen"
},
"meta": {
"endpoint": "airports",
"route": "/lookup",
"params": {
"code": "CPH"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports/lookup?code=ekch {
"data": {
"name": "Copenhagen Kastrup Airport",
"city": "Copenhagen",
"country": "Denmark",
"countryCode": "DK",
"iata": "CPH",
"icao": "EKCH",
"ident": "EKCH",
"type": "large_airport",
"latitude": 55.617901,
"longitude": 12.656,
"elevationFt": 17,
"timezone": "Europe/Copenhagen"
},
"meta": {
"endpoint": "airports",
"route": "/lookup",
"params": {
"code": "EKCH"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports/lookup?code=BRU {
"data": {
"name": "Brussels Airport",
"city": "Zaventem",
"country": "Belgium",
"countryCode": "BE",
"iata": "BRU",
"icao": "EBBR",
"ident": "EBBR",
"type": "large_airport",
"latitude": 50.901402,
"longitude": 4.48444,
"elevationFt": 175,
"timezone": "Europe/Brussels"
},
"meta": {
"endpoint": "airports",
"route": "/lookup",
"params": {
"code": "BRU"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports/lookup?code=LHR&fields=name,iata,icao,latitude,longitude,timezone {
"data": {
"name": "London Heathrow Airport",
"iata": "LHR",
"icao": "EGLL",
"latitude": 51.470748,
"longitude": -0.459909,
"timezone": "Europe/London"
},
"meta": {
"endpoint": "airports",
"route": "/lookup",
"params": {
"code": "LHR"
},
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} Ranks the 4,159-airport snapshot by spherical great-circle distance. Radius, country and type filters compose before the count limit, and at most 100 records come back.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
lat
required
| float | allowed: -90 – 90 example: 55.617901 | Search-point latitude in WGS84 decimal degrees (-90 to 90). |
lng
required
| float | allowed: -180 – 180 example: 12.656 | Search-point longitude in WGS84 decimal degrees (-180 to 180). |
radiusKm | float | default: 500 allowed: 0 – 20020 example: 100 | Maximum spherical great-circle distance in kilometers (0–20020). Defaults to 500 km. |
country | string | example: GB | Optional ISO 3166-1 alpha-2 country/territory filter, case-insensitive. |
type | enum | default: any allowed: any | large_airport | medium_airport | small_airport | seaplane_base | heliport example: medium_airport | Optional OurAirports size classification filter; any keeps every classification. |
lat float required Search-point latitude in WGS84 decimal degrees (-90 to 90).
lng float required Search-point longitude in WGS84 decimal degrees (-180 to 180).
radiusKm float Maximum spherical great-circle distance in kilometers (0–20020). Defaults to 500 km.
country string Optional ISO 3166-1 alpha-2 country/territory filter, case-insensitive.
type enum Optional OurAirports size classification filter; any keeps every classification.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 10 allowed: 1 – 100 example: 3 | Limit the number of returned records (1–100). Defaults to 10. |
fields | list | example: name,city | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: distanceKm | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int Limit the number of returned records (1–100). Defaults to 10.
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
name | string | Airport name exactly as recorded in the OurAirports snapshot. | Copenhagen Kastrup Airport |
city | string | null | Primary municipality served, as recorded by OurAirports; it need not be the municipality where the airport is physically located. null when the snapshot records none. | Copenhagen |
country | string | Common English country or territory name. | Denmark |
countryCode | string (ISO 3166-1 alpha-2) | Two-letter country or territory code. | DK |
iata | string | Three-letter IATA airport code; unique across the snapshot. | CPH |
icao | string | null | Four-letter ICAO location indicator, or null for the airports the snapshot has no ICAO code for. | EKCH |
ident | string | OurAirports identifier — the ICAO code when one exists, otherwise a national or OurAirports-assigned id such as 5A8 or AG-0001. Always unique and always present. | EKCH |
type | string | OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport. | large_airport |
latitude | float | Airport latitude in WGS84 decimal degrees (positive north), rounded to 6 decimals. | 55.617901 |
longitude | float | Airport longitude in WGS84 decimal degrees (positive east), rounded to 6 decimals. | 12.656 |
elevationFt | integer | null | Airport elevation above mean sea level in feet; negative values are below sea level, null when the snapshot records none. | 17 |
timezone | string | null | IANA time zone id derived from the pinned coordinates at snapshot time and validated against the airport's ISO country; approximate near zone boundaries and null for the airports where the derivation could not be confirmed. | Europe/Copenhagen |
distanceKm | float | Spherical great-circle distance from the requested point in kilometers, using the IUGG mean Earth radius; rounded to 3 decimals. | 0 |
name string Airport name exactly as recorded in the OurAirports snapshot.
example: Copenhagen Kastrup Airport
city string | null Primary municipality served, as recorded by OurAirports; it need not be the municipality where the airport is physically located. null when the snapshot records none.
example: Copenhagen
country string Common English country or territory name.
example: Denmark
countryCode string (ISO 3166-1 alpha-2) Two-letter country or territory code.
example: DK
iata string Three-letter IATA airport code; unique across the snapshot.
example: CPH
icao string | null Four-letter ICAO location indicator, or null for the airports the snapshot has no ICAO code for.
example: EKCH
ident string OurAirports identifier — the ICAO code when one exists, otherwise a national or OurAirports-assigned id such as 5A8 or AG-0001. Always unique and always present.
example: EKCH
type string OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport.
example: large_airport
latitude float Airport latitude in WGS84 decimal degrees (positive north), rounded to 6 decimals.
example: 55.617901
longitude float Airport longitude in WGS84 decimal degrees (positive east), rounded to 6 decimals.
example: 12.656
elevationFt integer | null Airport elevation above mean sea level in feet; negative values are below sea level, null when the snapshot records none.
example: 17
timezone string | null IANA time zone id derived from the pinned coordinates at snapshot time and validated against the airport's ISO country; approximate near zone boundaries and null for the airports where the derivation could not be confirmed.
example: Europe/Copenhagen
distanceKm float Spherical great-circle distance from the requested point in kilometers, using the IUGG mean Earth radius; rounded to 3 decimals.
example: 0
/api/airports/nearby?lat=55.617901&lng=12.656&radiusKm=100 {
"data": [
{
"name": "Copenhagen Kastrup Airport",
"city": "Copenhagen",
"country": "Denmark",
"countryCode": "DK",
"iata": "CPH",
"icao": "EKCH",
"ident": "EKCH",
"type": "large_airport",
"latitude": 55.617901,
"longitude": 12.656,
"elevationFt": 17,
"timezone": "Europe/Copenhagen",
"distanceKm": 0
},
{
"name": "Copenhagen Roskilde Airport",
"city": "Roskilde",
"country": "Denmark",
"countryCode": "DK",
"iata": "RKE",
"icao": "EKRK",
"ident": "EKRK",
"type": "medium_airport",
"latitude": 55.585602,
"longitude": 12.1314,
"elevationFt": 146,
"timezone": "Europe/Copenhagen",
"distanceKm": 33.15
},
{
"name": "Malmö Sturup Airport",
"city": "Malmö",
"country": "Sweden",
"countryCode": "SE",
"iata": "MMX",
"icao": "ESMS",
"ident": "ESMS",
…
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports/nearby?lat=48.8566&lng=2.3522&radiusKm=100&count=25 {
"data": [
{
"name": "Paris-Le Bourget International Airport",
"city": "Paris",
"country": "France",
"countryCode": "FR",
"iata": "LBG",
"icao": "LFPB",
"ident": "LFPB",
"type": "large_airport",
"latitude": 48.962276,
"longitude": 2.436539,
"elevationFt": 218,
"timezone": "Europe/Paris",
"distanceKm": 13.269
},
{
"name": "Paris-Orly Airport",
"city": "Paris (Orly, Val-de-Marne)",
"country": "France",
"countryCode": "FR",
"iata": "ORY",
"icao": "LFPO",
"ident": "LFPO",
"type": "large_airport",
"latitude": 48.729499,
"longitude": 2.358963,
"elevationFt": 291,
"timezone": "Europe/Paris",
"distanceKm": 14.142
},
{
"name": "Charles de Gaulle International Airport",
"city": "Paris (Roissy-en-France, Val-d'Oise)",
"country": "France",
"countryCode": "FR",
"iata": "CDG",
"icao": "LFPG",
"ident": "LFPG",
…
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports/nearby?lat=51.5074&lng=-0.1278&radiusKm=100&type=large_airport {
"data": [
{
"name": "London Heathrow Airport",
"city": "London",
"country": "United Kingdom",
"countryCode": "GB",
"iata": "LHR",
"icao": "EGLL",
"ident": "EGLL",
"type": "large_airport",
"latitude": 51.470748,
"longitude": -0.459909,
"elevationFt": 83,
"timezone": "Europe/London",
"distanceKm": 23.353
},
{
"name": "London Gatwick Airport",
"city": "London",
"country": "United Kingdom",
"countryCode": "GB",
"iata": "LGW",
"icao": "EGKK",
"ident": "EGKK",
"type": "large_airport",
"latitude": 51.148744,
"longitude": -0.185739,
"elevationFt": 202,
"timezone": "Europe/London",
"distanceKm": 40.083
},
{
"name": "London Luton Airport",
"city": "Luton, Luton",
"country": "United Kingdom",
"countryCode": "GB",
"iata": "LTN",
"icao": "EGGW",
"ident": "EGGW",
…
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} /api/airports/nearby?lat=41.8781&lng=-87.6298&country=US&radiusKm=20020&count=5 {
"data": [
{
"name": "Chicago Midway International Airport",
"city": "Chicago",
"country": "United States",
"countryCode": "US",
"iata": "MDW",
"icao": "KMDW",
"ident": "KMDW",
"type": "large_airport",
"latitude": 41.785999,
"longitude": -87.752403,
"elevationFt": 620,
"timezone": "America/Chicago",
"distanceKm": 14.424
},
{
"name": "Chicago O'Hare International Airport",
"city": "Chicago",
"country": "United States",
"countryCode": "US",
"iata": "ORD",
"icao": "KORD",
"ident": "KORD",
"type": "large_airport",
"latitude": 41.9786,
"longitude": -87.9048,
"elevationFt": 680,
"timezone": "America/Chicago",
"distanceKm": 25.346
},
{
"name": "Gary/Chicago International Airport",
"city": "Gary",
"country": "United States",
"countryCode": "US",
"iata": "GYY",
"icao": "KGYY",
"ident": "KGYY",
…
"generatedAt": "2026-07-30T15:14:08.000Z"
}
} Real airport reference data for all 4,159 scheduled-service airports that carry a three-letter IATA code, across 235 countries and territories, snapshotted from the public-domain OurAirports dataset on 2026-07-29 and pinned by SHA-256.
That scope is the whole rule: an OurAirports row is included when it is marked as having scheduled service and has an IATA code. Private strips, closed fields, military-only bases and the many small aerodromes without scheduled flights are out of scope — this is not a complete registry of every airfield on Earth, and it is not a traffic ranking. Regional coverage of the included set: AF 377, AS 1235, EU 589, NA 1232, OC 387, SA 339.
country accepts an ISO 3166-1 alpha-2 code, case-insensitively. The canonical uppercase code is echoed in meta.params. A well-formed code with no scheduled-service airport in the snapshot returns an empty list plus a warning — never another country's airport.search is a case- and diacritic-insensitive contains match across airport name, served city, country name, country code, IATA code, ICAO code and ident. For example, sao paulo finds GRU and CGH, and egll finds Heathrow.type filters the OurAirports size classification: large_airport, medium_airport, small_airport, seaplane_base, heliport. Seaplane bases and heliports are in the data because they genuinely carry scheduled IATA-coded service (Alaska, British Columbia, the Maldives).offset skips that many matches, so ?country=US&offset=100 continues where ?country=US stopped, and a warning tells you how many matched in total./lookup?code= resolves a 3-letter IATA code, a 4-letter ICAO code or an OurAirports ident, case-insensitively, in that order. A well-formed code that is not in the snapshot is an explicit 404 with a close-code suggestion where one is unambiguous./nearby?lat=…&lng=… ranks the snapshot by spherical great-circle distance, with optional radius, country and type filters.timezone is not an OurAirports column: it is derived once, at snapshot time, from each airport's pinned coordinates and then validated against that airport's own ISO country using the IANA tz database, so the Worker never runs a geographic lookup per request. 4,136 airports have a confirmed zone; the remaining 23 return null instead of a guess. Zone boundaries are approximated away from populated areas, so a zone id can name a neighbouring zone.
Names, served municipalities, classifications, coordinates and elevations are the values in the cited snapshot, with an empty source cell returned as null. Aviation data changes constantly: use an operational aviation authority or current aeronautical publication for flight planning, safety or navigation.
Yes. Pass a three-letter IATA code such as CPH, a four-letter ICAO code such as EKCH, or the OurAirports ident to /api/airports/lookup?code=...; matching is case-insensitive and resolved in that order.
Every OurAirports row marked as having scheduled service and carrying a three-letter IATA code — 4,159 airports in 235 countries and territories. Airfields without scheduled service, and scheduled rows with no IATA code, are excluded.
A response returns at most 100 records, so combine offset with count: ?country=US&count=100, then ?country=US&count=100&offset=100. A warning reports the total number of matches.
OurAirports has no timezone column, so the IANA zone is derived from the airport's pinned coordinates at snapshot time and cross-checked against its ISO country. 23 airports whose zone could not be confirmed return null rather than a guess.
No. They are public reference coordinates from a dated snapshot, suitable for software fixtures, search and maps; safety-critical or operational use requires current official aeronautical data.
6,300+ world cities from a pinned GeoNames snapshot: coordinates, IANA timezone, population and capital flag — filter by country, size, name or distance.
Live IANA offsets, DST transitions, local-time ambiguity resolution and exact instant conversion — no guessed wall-clock mappings.
Random geographic coordinates: uniform across the globe (no pole clustering), inside a bounding box, or within a radius of a point — with haversine distances.
Coherent fake flight fixtures between real hub airports, with working route, status, cabin and departure-window filters — never live operations.
Magnetic declination, inclination and field strength anywhere on Earth from the official WMM2025 coefficients, plus compass-to-true heading conversion.
Convert WGS 84 latitude and longitude to UTM, UPS and MGRS and back, with grid zone, band letter, convergence, scale factor and the Norway/Svalbard exceptions.