Getting Started
Access aviation data including global airport directories, aircraft lookups, callsign lookups, and operator intelligence — all through a key-authenticated REST API.
The API is built on REST principles, accepts query parameters for GET requests, and returns standard JSON. All requests require an active API key.
Current Dataset
Available Endpoints
Data Coverage
The API is powered by a live, autonomously growing dataset.
All aircraft, callsign, route, and operator data is captured automatically by monitoring live flight tracking. Every time a flight is observed the system records the relevant information and adds it to the database. No manual data entry is involved.
Airport data is sourced from a static reference dataset and is available from day one. Aircraft and callsign records are only created once that specific aircraft or callsign has been observed in the live feed.
404 Not Found response for an aircraft, callsign, or operator does not necessarily mean the resource doesn't exist — it may simply not have been observed yet.You may encounter
| Situation | Explanation |
|---|---|
| Aircraft not found | Registration or ICAO24 hasn't been seen in the live feed yet. |
| Callsign not found | That specific callsign variant hasn't been logged yet. |
| Incomplete operator fleet | Only aircraft observed operating under that name are listed. |
| Sparse route results | The route hasn't been operated many times since data collection began. |
Authentication
All requests require an active API key passed as a query parameter on every call.
Append your API key to every request using the api_key query parameter.
Rate Limits
All API requests are subject to rate limiting based on your current plan.
Current Tiers
| Plan | Requests Per Minute |
|---|---|
| Free | 10 |
| Standard | 300 |
X-RateLimit-Limit and X-RateLimit-Remaining headers so you can track usage.{
"error": {
"code": 429,
"message": "Rate limit exceeded. Maximum 10 requests per minute."
}
}
Errors
All error responses follow the same shape — an error object with a numeric code and a human-readable message.
{
"error": {
"code": 401,
"message": "Invalid API key."
}
}
404 means the resource hasn't been observed in the live feed yet. See Data Coverage.Status Codes
api_key.Airport Short
Returns a compact airport summary containing just the key identifying fields.
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| airport_shortstring | Required | ICAO identifier (e.g. EGKK). 2–5 alphanumeric characters. |
| api_keystring | Required | Your active API key. |
Example Request
curl -X GET "https://aviationdb.uk/api/v1/airports.php?airport_short=EGKK&api_key=YOUR_KEY"import requests r = requests.get("https://aviationdb.uk/api/v1/airports.php", params={ "airport_short": "EGKK", "api_key": "YOUR_KEY" }) print(r.json()["airport"]["name"]) # London Gatwick Airport
const params = new URLSearchParams({ airport_short: "EGKK", api_key: "YOUR_KEY" });
const data = await fetch(`https://aviationdb.uk/api/v1/airports.php?${params}`).then(r => r.json());$url = "https://aviationdb.uk/api/v1/airports.php?" . http_build_query([ "airport_short" => "EGKK", "api_key" => "YOUR_KEY" ]); $data = json_decode(file_get_contents($url), true);
{
"airport": {
"ident": "EGKK",
"iso_country": "GB",
"gps_code": "EGKK",
"FIR": "EGTT",
"name": "London Gatwick Airport"
}
}Airport Full
Returns complete airport metadata alongside all associated runway records with threshold and heading data.
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| airport_fullstring | Required | ICAO identifier (e.g. EGKK). |
| api_keystring | Required | Your active API key. |
Example Request
curl -X GET "https://aviationdb.uk/api/v1/airports.php?airport_full=EGKK&api_key=YOUR_KEY"r = requests.get("https://aviationdb.uk/api/v1/airports.php", params={ "airport_full": "EGKK", "api_key": "YOUR_KEY" })
const params = new URLSearchParams({ airport_full: "EGKK", api_key: "YOUR_KEY" });
const data = await fetch(`https://aviationdb.uk/api/v1/airports.php?${params}`).then(r => r.json());$url = "https://aviationdb.uk/api/v1/airports.php?" . http_build_query([ "airport_full" => "EGKK", "api_key" => "YOUR_KEY" ]);
{
"airport": {
"ident": "EGKK", "type_left": "large_airport",
"elevation_ft": 202, "iso_country": "GB",
"iso_region": "GB-ENG", "municipality": "London",
"gps_code": "EGKK", "local_code": null,
"coordinates": "51.148744, -0.185739",
"FIR": "EGTT", "name": "London Gatwick Airport"
},
"runways": [
{
"id": 239573, "airport_ident": "EGKK",
"length_ft": 10883, "width_ft": 148,
"surface": "ASP", "lighted": 1, "closed": 0,
"le_ident": "08R", "le_heading_degT": 78,
"he_ident": "26L", "he_heading_degT": 258
}
]
}Aircraft Short
Returns a compact aircraft identity record. Accepts either a tail number or a 6-character ICAO24 hex address.
404 means it hasn't been seen yet.Query Parameters
| Parameter | Required | Description |
|---|---|---|
| aircraft_shortstring | Required | Registration (e.g. G-EZUC) or 6-char ICAO24 hex (e.g. 40643D). |
| api_keystring | Required | Your active API key. |
Example Request
curl -X GET "https://aviationdb.uk/api/v1/aircraft.php?aircraft_short=G-EZUC&api_key=YOUR_KEY"r = requests.get("https://aviationdb.uk/api/v1/aircraft.php", params={ "aircraft_short": "G-EZUC", "api_key": "YOUR_KEY" })
const params = new URLSearchParams({ aircraft_short: "G-EZUC", api_key: "YOUR_KEY" });
const data = await fetch(`https://aviationdb.uk/api/v1/aircraft.php?${params}`).then(r => r.json());$url = "https://aviationdb.uk/api/v1/aircraft.php?" . http_build_query([ "aircraft_short" => "G-EZUC", "api_key" => "YOUR_KEY" ]);
{
"aircraft": {
"registration": "G-EZUC",
"icao24": "40643D",
"aircraft_type": "A320",
"aircraft_model": "A320-200",
"operator": "easyJet"
}
}Aircraft Full
Returns complete aircraft details including serial, manufacturer, engine count, and optional callsign history.
&callsigns=1 to include a known_routes array. Use &limit=N to cap results (default 20, max 100).Query Parameters
| Parameter | Required | Description |
|---|---|---|
| aircraft_fullstring | Required | Registration or 6-char ICAO24 hex address. |
| callsignsinteger | Optional | Set to 1 to include known_routes. |
| limitinteger | Optional | Max callsign records when callsigns=1. Default 20, max 100. |
| api_keystring | Required | Your active API key. |
Example Request
curl -X GET "https://aviationdb.uk/api/v1/aircraft.php?aircraft_full=G-EZUC&callsigns=1&limit=5&api_key=YOUR_KEY"r = requests.get("https://aviationdb.uk/api/v1/aircraft.php", params={ "aircraft_full": "G-EZUC", "callsigns": 1, "limit": 5, "api_key": "YOUR_KEY" })
const params = new URLSearchParams({ aircraft_full: "G-EZUC", callsigns: 1, limit: 5, api_key: "YOUR_KEY" });
const data = await fetch(`https://aviationdb.uk/api/v1/aircraft.php?${params}`).then(r => r.json());$url = "https://aviationdb.uk/api/v1/aircraft.php?" . http_build_query([ "aircraft_full" => "G-EZUC", "callsigns" => 1, "limit" => 5, "api_key" => "YOUR_KEY" ]);
{
"aircraft": {
"registration": "G-EZUC", "icao24": "40643D",
"aircraft_type": "A320", "aircraft_model": "A320-200",
"operator": "easyJet", "serial": "2200",
"manufacturer": "Airbus", "engines": "2",
"modes_country": "United Kingdom"
}
}{
"aircraft": { /* ...same as above... */ },
"known_routes": [
{ "callsign": "EZY12AB", "route_from": "EGKK", "route_to": "LEMD" }
]
}Callsign Search
Retrieve the route for an exact callsign, along with all associated historical flights and unique aircraft that have operated it.
404 means it hasn't been observed yet.Query Parameters
| Parameter | Required | Description |
|---|---|---|
| callsign_searchstring | Required | Exact callsign (e.g. EZY65CG). 2–10 alphanumeric characters. |
| api_keystring | Required | Your active API key. |
Example Request
curl -X GET "https://aviationdb.uk/api/v1/callsigns.php?callsign_search=EZY65CG&api_key=YOUR_KEY"r = requests.get("https://aviationdb.uk/api/v1/callsigns.php", params={ "callsign_search": "EZY65CG", "api_key": "YOUR_KEY" })
const params = new URLSearchParams({ callsign_search: "EZY65CG", api_key: "YOUR_KEY" });
const data = await fetch(`https://aviationdb.uk/api/v1/callsigns.php?${params}`).then(r => r.json());$url = "https://aviationdb.uk/api/v1/callsigns.php?" . http_build_query([ "callsign_search" => "EZY65CG", "api_key" => "YOUR_KEY" ]);
{
"master": {
"callsign": "EZY65CG", "operator": "easyJet",
"route_from": "LPPT", "route_to": "EGGW",
"callsigns_total": 1, "last_seen_time": "2026-06-08 00:37:46"
},
"flights": [
{
"registration": "G-EZUC", "icao24": "40643D",
"route_from": "LPPT", "route_to": "EGGW",
"aircraft_type": "A320", "operator": "easyJet"
}
],
"aircraft": [
{ "registration": "G-EZUC", "aircraft_type": "A320", "aircraft_model": "A320-200" }
]
}Callsigns by Operator
Returns all known callsigns for a given operator name, ordered by most recent activity.
easyJet, not Easyjet). Use Operator Search to confirm the exact stored name.Query Parameters
| Parameter | Required | Description |
|---|---|---|
| callsign_operatorstring | Required | Exact operator name (e.g. Ryanair, easyJet). Min 2 characters. |
| limitinteger | Optional | Max records. Default 10, max 100. |
| api_keystring | Required | Your active API key. |
Example Request
curl -X GET "https://aviationdb.uk/api/v1/callsigns.php?callsign_operator=Ryanair&limit=2&api_key=YOUR_KEY"r = requests.get("https://aviationdb.uk/api/v1/callsigns.php", params={ "callsign_operator": "Ryanair", "limit": 2, "api_key": "YOUR_KEY" })
const params = new URLSearchParams({ callsign_operator: "Ryanair", limit: 2, api_key: "YOUR_KEY" });
const data = await fetch(`https://aviationdb.uk/api/v1/callsigns.php?${params}`).then(r => r.json());$url = "https://aviationdb.uk/api/v1/callsigns.php?" . http_build_query([ "callsign_operator" => "Ryanair", "limit" => 2, "api_key" => "YOUR_KEY" ]);
{
"count": 2,
"results": [
{
"callsign": "RYR13YB", "operator": "Ryanair",
"route_from": "LEMD", "route_to": "EGSS",
"callsigns_total": 1, "last_seen_time": "2026-06-07 19:18:43"
}
]
}Route Search NEW
Returns all distinct callsigns and aircraft that have operated a specific route pair, identified by departure and arrival ICAO codes joined with a hyphen.
EGKK-LEMD (Gatwick → Madrid).Query Parameters
| Parameter | Required | Description |
|---|---|---|
| route_searchstring | Required | Route pair in ICAO-ICAO format (e.g. EGKK-LEMD). |
| limitinteger | Optional | Max records for callsigns and aircraft. Default 20, max 100. |
| api_keystring | Required | Your active API key. |
Example Request
curl -X GET "https://aviationdb.uk/api/v1/callsigns.php?route_search=EGKK-LEMD&limit=5&api_key=YOUR_KEY"r = requests.get("https://aviationdb.uk/api/v1/callsigns.php", params={ "route_search": "EGKK-LEMD", "limit": 5, "api_key": "YOUR_KEY" })
const params = new URLSearchParams({ route_search: "EGKK-LEMD", limit: 5, api_key: "YOUR_KEY" });
const data = await fetch(`https://aviationdb.uk/api/v1/callsigns.php?${params}`).then(r => r.json());$url = "https://aviationdb.uk/api/v1/callsigns.php?" . http_build_query([ "route_search" => "EGKK-LEMD", "limit" => 5, "api_key" => "YOUR_KEY" ]);
{
"route": { "from": "EGKK", "to": "LEMD" },
"count": 2,
"callsigns": [
{
"callsign": "EZY12AB", "route_from": "EGKK", "route_to": "LEMD",
"operator": "easyJet", "callsigns_total": 4,
"last_seen_time": "2026-06-07 22:14:09"
}
],
"aircraft": [
{
"registration": "G-EZUC", "icao24": "40643D",
"aircraft_type": "A320", "operator": "easyJet"
}
]
}Operator Search
Look up an airline operator by exact name to retrieve a summary, their known callsigns, and their full fleet of known aircraft.
easyJet).Query Parameters
| Parameter | Required | Description |
|---|---|---|
| operator_searchstring | Required | Exact operator name (e.g. easyJet, Ryanair). Min 2 characters. |
| limitinteger | Optional | Max callsigns to return. Default 20, max 100. Does not affect aircraft list. |
| api_keystring | Required | Your active API key. |
Example Request
curl -X GET "https://aviationdb.uk/api/v1/operator.php?operator_search=easyJet&api_key=YOUR_KEY"r = requests.get("https://aviationdb.uk/api/v1/operator.php", params={ "operator_search": "easyJet", "api_key": "YOUR_KEY" })
const params = new URLSearchParams({ operator_search: "easyJet", api_key: "YOUR_KEY" });
const data = await fetch(`https://aviationdb.uk/api/v1/operator.php?${params}`).then(r => r.json());$url = "https://aviationdb.uk/api/v1/operator.php?" . http_build_query([ "operator_search" => "easyJet", "api_key" => "YOUR_KEY" ]);
{
"operator": {
"operator": "easyJet", "total_callsigns": 842,
"total_aircraft": 156, "last_seen_time": "2026-06-08 01:12:04"
},
"callsigns": [
{ "callsign": "EZY65CG", "route_from": "LPPT", "route_to": "EGGW",
"callsigns_total": 1, "last_seen_time": "2026-06-08 00:37:46" }
],
"aircraft": [
{ "registration": "G-EZUC", "icao24": "40643D",
"aircraft_type": "A320", "aircraft_model": "A320-200" }
]
}Response Objects
Field-level reference for every object returned by the API.
Airport (Short)
"ident"string— ICAO identifier (e.g. EGKK)
"iso_country"string— 2-letter ISO country code
"gps_code"string— GPS code (usually matches ident)
"FIR"string— Flight Information Region code
"name"string— Full airport name
}
Airport (Full) — additional fields
"type_left"string— Classification (e.g. large_airport, small_airport)
"elevation_ft"integer— Field elevation in feet
"iso_region"string— Region code (e.g. GB-ENG)
"municipality"string— Associated city or municipality
"local_code"string | null— Local aviation code if applicable
"coordinates"string— Decimal lat/lon (e.g. "51.148744, -0.185739")
"runways"array— Array of runway objects (see below)
}
Runway
"length_ft"integer
"width_ft"integer
"surface"string— Surface material code (e.g. ASP, CON, GRS)
"lighted"integer— 1 if lighted
"closed"integer— 1 if closed
"le_ident"string— Low-end threshold designator (e.g. 08R)
"le_heading_degT"float— Low-end true heading
"he_ident"string— High-end threshold designator (e.g. 26L)
"he_heading_degT"float
}
Aircraft (Short)
"registration"string— Aircraft tail number (e.g. G-EZUC)
"icao24"string— 24-bit Mode-S transponder address (e.g. 40643D)
"aircraft_type"string— ICAO type code (e.g. A320)
"aircraft_model"string— Common model name (e.g. A320-200)
"operator"string— Current operator name
}
Aircraft (Full) — additional fields
"serial"string | null— Manufacturer serial number (MSN)
"manufacturer"string | null
"engines"string | null— Number of engines
"modes_country"string | null— Country of Mode-S registration
"known_routes"array | undefined— Present only when callsigns=1
}
Callsign (Master)
"callsign"string
"operator"string
"route_from"string— Most common departure airport ICAO
"route_to"string— Most common arrival airport ICAO
"callsigns_total"integer— Times this callsign was logged
"last_seen_time"string— UTC timestamp of most recent sighting
}
Operator
"operator"string
"total_callsigns"integer— Total distinct callsigns observed
"total_aircraft"integer— Total distinct aircraft observed
"last_seen_time"string— UTC timestamp of most recent activity
}