Base URL

# All requests use:
https://api.freeairportdb.com/v1

Authentication

Free and open. No API key is required for usage within 1,000 requests per hour. Beyond that, we recommend downloading the dataset.


Search across all airport fields including IATA, ICAO, identifier code, name, city, and country.

GET /airports Search airports
ParameterTypeDefaultDescription
qstringSearch query (IATA, ICAO, identifier code, name, city, country)
typestringallFilter by: large_airport, medium_airport, small_airport
countrystringISO alpha-2 country code (e.g. US, GB)
limitinteger20Max results (max 100)
offsetinteger0Pagination offset

Example: Search by IATA code

curl https://api.freeairportdb.com/v1/airports?q=JFK

// Response
{
	"data": [{
		"code": "KJFK",
		"iata": "JFK",
		"icao": "KJFK",
		"name": "John F Kennedy International",
		"continent_code": "NA",
		"continent_name": "North America",
		"region_code": "US-NY",
		"region_name": "New York",
		"country_code": "US",
		"country_name": "United States",
		"municipality": "New York",
		"latitude": 40.6394,
		"longitude": -73.7789,
		"elevation": 4.0,
		"elevation_ft": 13.1,
		"time_zone": "America/New_York",
		"type": "large_airport"
	}],
	"total": 1,
	"limit": 20,
	"offset": 0
}

Get Airport by Code

Retrieve a single airport by its IATA, ICAO, or identifier code.

GET /airports/{code} Get by IATA, ICAO, or identifier

The {code} parameter accepts a 3-letter IATA code, 4-letter ICAO code, or an identifier code from OurAirports.

Example: Get by ICAO

curl https://api.freeairportdb.com/v1/airports/EGLL

// Response
{
	"data": {
		"code": "EGLL",
		"iata": "LHR",
		"icao": "EGLL",
		"name": "Heathrow",
		"continent_code": "EU",
		"continent_name": "Europe",
		"region_code": "GB-ENG",
		"region_name": "England",
		"country_code": "GB",
		"country_name": "United Kingdom",
		"municipality": "London",
		"latitude": 51.4700,
		"longitude": -0.4543,
		"elevation": 25.0,
		"elevation_ft": 82.0,
		"time_zone": "Europe/London",
		"type": "large_airport"
	}
}

Find Nearby Airports

Find the closest airports to a specific geographic coordinate.

GET /airports/nearby Nearest airports by lat/lng
ParameterTypeDefaultDescription
latfloatLatitude (required)
lngfloatLongitude (required)
limitinteger10Max results (max 50)
radiusfloatMax search radius in km (optional)

Example: Find airports near London

curl "https://api.freeairportdb.com/v1/airports/nearby?lat=51.5&lng=-0.12&limit=5"

// Response
{
	"data": [
	{
		"code": "EGLC",
		"iata": "LCY",
		"icao": "EGLC",
		"name": "London City Airport",
		"continent_code": "EU",
		"continent_name": "Europe",
		"region_code": "GB-ENG",
		"region_name": "England",
		"country_code": "GB",
		"country_name": "United Kingdom",
		"municipality": "London",
		"latitude": 51.5053,
		"longitude": 0.0554,
		"elevation": 6.0,
		"elevation_ft": 19.7,
		"time_zone": "Europe/London",
		"type": "large_airport",
		"distance_km": 11.5,
		"distance_mile": 7.1
	}
	]
}

Rate Limits

  • 1,000 requests/hour per IP address
  • 100 max results per search query
  • 10 requests/second burst limit

If you need higher limits, please contact us. Responses include rate limit headers.

Client Examples

curl "https://api.freeairportdb.com/v1/airports?q=LAX" \
	-H "Accept: application/json"
fetch('https://api.freeairportdb.com/v1/airports?q=LAX')
	.then(r => r.json())
	.then(data => console.log(data));
import requests
r = requests.get('https://api.freeairportdb.com/v1/airports', params={'q': 'LAX'})
data = r.json()
print(data['data'])