API Documentation | Aviation Database

API Documentation

Aviation Database REST API — v1

← Back to Dashboard
DocsOverview

Getting Started

Access aviation data including global airport directories, aircraft lookups, callsign lookups, and operator intelligence — all through a key-authenticated REST API.

Base URL https://aviationdb.uk/api/v1/

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

Operators
Aircraft
Callsigns
Airports
Runways

Available Endpoints

GET
Airport Short
Compact airport summary: ident, country, GPS code, FIR, and name.
GET
Airport Full
Full airport metadata plus detailed runway specifications.
GET
Aircraft Short
Look up an aircraft by registration or ICAO24 for identity and operator details.
GET
Aircraft Full
Full details including serial, manufacturer, engines, and optional callsign history.
GET
Callsign Search
Look up an exact callsign and retrieve its master record, flights, and aircraft.
GET
Callsigns by Operator
List all known callsigns associated with a given airline operator.
NEW GET
Route Search
Find all callsigns and aircraft that have operated a specific route pair.
GET
Operator Search
Look up an operator by name to see their callsigns and known fleet.
DocsOverview

Data Coverage

The API is powered by a live, autonomously growing dataset.

How Data is Collected

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.

Missing records are not errorsA 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

SituationExplanation
Aircraft not foundRegistration or ICAO24 hasn't been seen in the live feed yet.
Callsign not foundThat specific callsign variant hasn't been logged yet.
Incomplete operator fleetOnly aircraft observed operating under that name are listed.
Sparse route resultsThe route hasn't been operated many times since data collection began.
DocsOverview

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.

GET https://aviationdb.uk/api/v1/airports.php?airport_short=EGKK&api_key=asb_live_...
DocsOverview

Rate Limits

All API requests are subject to rate limiting based on your current plan.

Current Tiers

PlanRequests Per Minute
Free10
Standard300
Rate limit headersEvery response includes X-RateLimit-Limit and X-RateLimit-Remaining headers so you can track usage.
429 Too Many Requests
Response
{
  "error": {
    "code": 429,
    "message": "Rate limit exceeded. Maximum 10 requests per minute."
  }
}
DocsOverview

Errors

All error responses follow the same shape — an error object with a numeric code and a human-readable message.

Error shape
{
  "error": {
    "code": 401,
    "message": "Invalid API key."
  }
}
404 doesn't always mean missingFor aircraft, callsigns, and operators a 404 means the resource hasn't been observed in the live feed yet. See Data Coverage.

Status Codes

200
OK — request successful.
400
Bad Request — missing or invalid parameter.
401
Unauthorized — missing or invalid api_key.
403
Forbidden — API key is disabled.
404
Not Found — resource doesn't exist or hasn't been observed yet.
429
Too Many Requests — rate limit exceeded.
500
Server Error — something went wrong on our end.
DocsAirports

Airport Short

GET /api/v1/airports.php?airport_short={icao}&api_key={key}

Returns a compact airport summary containing just the key identifying fields.

Query Parameters

ParameterRequiredDescription
airport_shortstringRequiredICAO identifier (e.g. EGKK). 2–5 alphanumeric characters.
api_keystringRequiredYour active API key.

Example Request

cURL
Python
JavaScript
PHP
cURL
curl -X GET "https://aviationdb.uk/api/v1/airports.php?airport_short=EGKK&api_key=YOUR_KEY"
Python
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
JavaScript
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());
PHP
$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);
200 OKapplication/json
Response
{
  "airport": {
    "ident": "EGKK",
    "iso_country": "GB",
    "gps_code": "EGKK",
    "FIR": "EGTT",
    "name": "London Gatwick Airport"
  }
}
DocsAirports

Airport Full

GET/api/v1/airports.php?airport_full={icao}&api_key={key}

Returns complete airport metadata alongside all associated runway records with threshold and heading data.

Query Parameters

ParameterRequiredDescription
airport_fullstringRequiredICAO identifier (e.g. EGKK).
api_keystringRequiredYour active API key.

Example Request

cURL
Python
JavaScript
PHP
cURL
curl -X GET "https://aviationdb.uk/api/v1/airports.php?airport_full=EGKK&api_key=YOUR_KEY"
Python
r = requests.get("https://aviationdb.uk/api/v1/airports.php", params={
    "airport_full": "EGKK", "api_key": "YOUR_KEY"
})
JavaScript
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());
PHP
$url = "https://aviationdb.uk/api/v1/airports.php?" . http_build_query([
    "airport_full" => "EGKK", "api_key" => "YOUR_KEY"
]);
200 OKapplication/json
Response
{
  "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
    }
  ]
}
DocsAircraft

Aircraft Short

GET/api/v1/aircraft.php?aircraft_short={reg_or_icao24}&api_key={key}

Returns a compact aircraft identity record. Accepts either a tail number or a 6-character ICAO24 hex address.

Most-recent recordReturns the most recent record from the history table. If an aircraft has changed operators the current name will be reflected.
Aircraft may not yet be in the databaseRecords are created the first time a registration or ICAO24 address is observed. A 404 means it hasn't been seen yet.

Query Parameters

ParameterRequiredDescription
aircraft_shortstringRequiredRegistration (e.g. G-EZUC) or 6-char ICAO24 hex (e.g. 40643D).
api_keystringRequiredYour active API key.

Example Request

cURL
Python
JavaScript
PHP
cURL
curl -X GET "https://aviationdb.uk/api/v1/aircraft.php?aircraft_short=G-EZUC&api_key=YOUR_KEY"
Python
r = requests.get("https://aviationdb.uk/api/v1/aircraft.php", params={
    "aircraft_short": "G-EZUC", "api_key": "YOUR_KEY"
})
JavaScript
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());
PHP
$url = "https://aviationdb.uk/api/v1/aircraft.php?" . http_build_query([
    "aircraft_short" => "G-EZUC", "api_key" => "YOUR_KEY"
]);
200 OKapplication/json
Response
{
  "aircraft": {
    "registration": "G-EZUC",
    "icao24": "40643D",
    "aircraft_type": "A320",
    "aircraft_model": "A320-200",
    "operator": "easyJet"
  }
}
DocsAircraft

Aircraft Full

GET/api/v1/aircraft.php?aircraft_full={reg_or_icao24}&api_key={key}

Returns complete aircraft details including serial, manufacturer, engine count, and optional callsign history.

Optional callsign historyAdd &callsigns=1 to include a known_routes array. Use &limit=N to cap results (default 20, max 100).

Query Parameters

ParameterRequiredDescription
aircraft_fullstringRequiredRegistration or 6-char ICAO24 hex address.
callsignsintegerOptionalSet to 1 to include known_routes.
limitintegerOptionalMax callsign records when callsigns=1. Default 20, max 100.
api_keystringRequiredYour active API key.

Example Request

cURL
Python
JavaScript
PHP
cURL
curl -X GET "https://aviationdb.uk/api/v1/aircraft.php?aircraft_full=G-EZUC&callsigns=1&limit=5&api_key=YOUR_KEY"
Python
r = requests.get("https://aviationdb.uk/api/v1/aircraft.php", params={
    "aircraft_full": "G-EZUC", "callsigns": 1, "limit": 5, "api_key": "YOUR_KEY"
})
JavaScript
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());
PHP
$url = "https://aviationdb.uk/api/v1/aircraft.php?" . http_build_query([
    "aircraft_full" => "G-EZUC", "callsigns" => 1, "limit" => 5, "api_key" => "YOUR_KEY"
]);
200 OKapplication/json — without callsigns
Response
{
  "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"
  }
}
200 OKapplication/json — with callsigns=1
Response
{
  "aircraft": { /* ...same as above... */ },
  "known_routes": [
    { "callsign": "EZY12AB", "route_from": "EGKK", "route_to": "LEMD" }
  ]
}
DocsCallsigns

Callsigns by Operator

GET/api/v1/callsigns.php?callsign_operator={operator}&api_key={key}

Returns all known callsigns for a given operator name, ordered by most recent activity.

Case-sensitive operator namesNames are matched exactly as stored (e.g. easyJet, not Easyjet). Use Operator Search to confirm the exact stored name.

Query Parameters

ParameterRequiredDescription
callsign_operatorstringRequiredExact operator name (e.g. Ryanair, easyJet). Min 2 characters.
limitintegerOptionalMax records. Default 10, max 100.
api_keystringRequiredYour active API key.

Example Request

cURL
Python
JavaScript
PHP
cURL
curl -X GET "https://aviationdb.uk/api/v1/callsigns.php?callsign_operator=Ryanair&limit=2&api_key=YOUR_KEY"
Python
r = requests.get("https://aviationdb.uk/api/v1/callsigns.php", params={
    "callsign_operator": "Ryanair", "limit": 2, "api_key": "YOUR_KEY"
})
JavaScript
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());
PHP
$url = "https://aviationdb.uk/api/v1/callsigns.php?" . http_build_query([
    "callsign_operator" => "Ryanair", "limit" => 2, "api_key" => "YOUR_KEY"
]);
200 OKapplication/json
Response
{
  "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"
    }
  ]
}
DocsReference

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
}