Look up an airport

GET https://airportcodecheck.com/api/airport/FNC

Accepts IATA (FNC) or ICAO (LPMA). Returns name, city, country, both codes, type, coordinates and elevation.

{
  "success": true,
  "airport": {
    "slug": "fnc",
    "name": "Cristiano Ronaldo International Airport",
    "city": "Funchal",
    "country": "PT",
    "country_name": "Portugal",
    "iata": "FNC",
    "icao": "LPMA",
    "type": "large_airport",
    "scheduled_service": true,
    "lat": 32.69781, "lon": -16.77461,
    "elevation_ft": 192,
    "url": "https://airportcodecheck.com/airport/fnc"
  }
}

Direct destinations

GET https://airportcodecheck.com/api/routes/FNC

Every destination served nonstop, with the airlines flying each route, a seasonal flag and the great-circle distance.

Connections (direct or one-stop)

GET https://airportcodecheck.com/api/connections/FNC/JFK

The route-planning endpoint: returns the nonstop service if one exists, otherwise the best one-stop options ranked by total distance, with the airlines on each leg and the detour versus the direct line. Data most providers only sell in enterprise plans.

Search

GET https://airportcodecheck.com/api/search?q=funchal

Searches names, cities and IATA codes. Returns up to 8 matches.

Countries

GET https://airportcodecheck.com/api/countries

Terms

Free for any use with attribution appreciated (a link to airportcodecheck.com). Airport data: OurAirports, public domain. Route data: adapted from Wikipedia, CC BY-SA, so route data you redistribute stays under the same license. Route lists show that a nonstop service exists; verify schedules with the airline. None required for the free per-IP allowance. An IPNOVA API key (free account at api.ipnova.com) applies your plan allowance instead: send it as the X-Api-Key header or the ?key= query parameter. Keyed responses carry X-Credits-Remaining and X-Credits-Used. Need more than the daily limit? Write to [email protected].

Errors

Every non-200 response uses the same envelope: success: false, an error flag, a machine-readable reason, a human message, and a docs link back to this page.

StatusReasonMeaning
400invalid_inputNot a valid IATA/ICAO code or query
401invalid_keyThe supplied API key is unknown or revoked
404not_foundAirport, route or connection not in the dataset
404unknown_endpointPath under /api/ does not match a published endpoint
429rate_limitToo many requests in the last minute (Retry-After: 60)
429daily_limitKeyless per-IP daily cap reached
429credits_exhaustedKeyed monthly allowance used up

Example, a code not in the dataset:

{"success": false, "error": true, "reason": "not_found", "message": "Airport code not in the dataset.", "docs": "https://airportcodecheck.com/airport-api"}