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, name, city, and country.

GET /airports Search airports
ParameterTypeDefaultDescription
qstringSearch query (IATA, ICAO, 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": [{
	"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_m": 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 or ICAO code.

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

The {code} parameter accepts a 3-letter IATA or 4-letter ICAO code. The API auto-detects which one you're using.

Example: Get by ICAO

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

// Response
{
  "data": {
	"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_m": 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": [
		{
		  "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_m": 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'])