Every aircraft carries three identities: a registration painted on the tail (G-STBC), a hex code broadcast by its transponder (40621D), and a type designator describing what kind of machine it is (B77W). Any real aviation product has to move between them — a tracker receives hex codes, a booking row has a type, a spotter app has a tail number. The usual sources are FAA registry ZIP downloads (US-only, monthly) or enterprise datasets. Here's the API version: three endpoints that cover the whole query family.

The three identities

IdentityExampleWhere you get itWhat it's for
RegistrationG-STBCPainted on the airframeHuman-facing identity, ownership
ICAO24 hex40621DBroadcast over ADS-BMachine identity in live feeds
Type designatorB77WResolved from the abovePerformance, capacity, wake category

Registration prefixes encode the country of registry — N for the US, G- for the UK — which we break down in aircraft registration prefixes by country. The hex code is a different animal entirely: a 24-bit address assigned to the transponder, explained in Mode S hex codes.

A regional turboprop inside a maintenance hangar — every airframe has a registration, hex code, and type

Lookup by registration

The tail-number path — for flight cards, fleet pages, and spotter apps. SkyLink API's aircraft lookup resolves a registration against a registry of 615,000+ records refreshed daily:

curl "https://skylink-api.p.rapidapi.com/aircraft/registration/G-STBC" \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: skylink-api.p.rapidapi.com"
{
  "query": "G-STBC",
  "found": true,
  "aircraft": {
    "registration": "G-STBC",
    "icao24": "40621D",
    "icao_type": "B77W",
    "type_name": "BOEING 777-36NER",
    "manufacturer": "Boeing Company",
    "manufacturer_and_model": "Boeing Company BOEING 777-36NER",
    "owner_operator": "British Airways",
    "serial_number": "38287",
    "is_private_operator": false
  }
}

One integration detail that catches people out: a miss returns HTTP 200 with found: false and aircraft: null — never a 404. Check the found flag in the body rather than treating it as an HTTP error. Also pass photos=false on list views and batch jobs; photos default to true and add latency you don't want on a map overlay.

Lookup by hex code

Same record, different key. This is the one you need when you're consuming a live feed, because ADS-B gives you icao24 and nothing else human-readable:

curl "https://skylink-api.p.rapidapi.com/aircraft/icao24/40621D" \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: skylink-api.p.rapidapi.com"

This is the enrichment step that turns a raw position into a labelled flight — though if you're pulling positions from SkyLink's ADS-B endpoint, registration, type, and airline already arrive joined to each aircraft, so you only need this endpoint for standalone lookups.

An aerial view of many different airliner types parked together

From type code to performance

Once you've resolved icao_type, chain to aircraft performance for the reference specs of that type — drawn from ICAO Doc 8643:

curl "https://skylink-api.p.rapidapi.com/aircraft/performance/B738" \
  -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: skylink-api.p.rapidapi.com"
{
  "icao_type": "B738",
  "name": "BOEING 737-800",
  "engine_type": "Jet",
  "wake_category": "M",
  "cruise_speed_ktas": 460.0,
  "service_ceiling_ft": 35000.0,
  "max_range_nm": 2900.0,
  "mtow_t": 78.2,
  "max_passengers": 189
}

That gives you range rings on a map, wake-separation hints in a dispatch tool, and capacity for a schedule view. Note the distinction: performance is static reference data for a type, not values for a specific airframe — the correct workflow is registration or hex → icao_type → performance.

How it compares

SkyLink APIFAA registry downloadEnterprise datasets
Coverage615,000+ airframes, globalUS registrations onlyGlobal
Lookup by hex (ICAO24)YesNoVaries
Type performance specsYes (Doc 8643)NoUsually
FreshnessRefreshed dailyPeriodic bulk fileVendor schedule
AccessREST, instantZIP you parse & hostSales process
Free tier1,000 req/moFreeNo

Competitor details reflect public positioning as of mid-2026 — verify before committing.

The FAA registry is authoritative and free, but it's US-only and it's a file you have to download, parse, host, and refresh — and it has no concept of a hex-code lookup. For deeper dives on each identity, see tail number lookup and Mode S hex codes.

SkyLink API gives you a free tier of 1,000 requests/month across aircraft lookup, performance, and the rest of the stack, with paid plans starting at $18.59/mo for production. It's available through the free trial — sign up, grab a key, and resolve any aircraft from any of its three identities.