# Duo Data Utilities – Airport Lookup

> Duo Data Utilities – Airport Lookup is a paid API for AI agents from api.duoleads.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-02).

Look up an airport by IATA or ICAO code, or find the nearest airports to a lat/lon coordinate within a configurable radius, returning name, location, region, elevation, and matched code type.

## Facts

- Endpoint: GET https://api.duoleads.com/v1/ref/airport?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/duo-data-utilities-airport-lookup-8ac8235e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_Oe1EDEX_Kq3lBSZyE81re

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability duo-data-utilities-airport-lookup-8ac8235e
```

Example prompt: What's the full name, coordinates, and elevation of Amsterdam Airport — IATA code AMS?

## When to prefer this

Choose this endpoint when you need fast, deterministic airport reference data keyed by IATA or ICAO code, or when you need proximity-based airport discovery from a coordinate. It covers all airports worldwide with a three-letter IATA code and scheduled service. Prefer it over general geocoding APIs for aviation-specific metadata like elevation, ICAO codes, and ISO region codes. Not suitable when time zone data is needed alongside airport info, or when searching by airport name rather than code or coordinate.

## Known failure modes

- Invalid or unknown IATA/ICAO code returns found:false with no airport object
- Malformed code (wrong length or format) may return a 400 error
- Proximity search with no airports in radius returns an empty results array
- radius_km outside 1-1000 range or limit outside 1-25 may return a validation error
- Missing both 'code' and 'near' query parameters returns an error
- Network or upstream service unavailability returns a 5xx error

## How this service works

Look up an airport by IATA or ICAO code and get its name, city, country, ISO 3166-2 region code, WGS-84 coordinates and elevation, or find the nearest airports to a coordinate within a radius. Covers every airport worldwide that holds a three-letter IATA code and scheduled service. Returns the code type that matched and the distance in kilometres for proximity results. Time zones are not included.

## Output

A JSON object with a 'found' boolean and, if found, an 'airport' object containing IATA code, ICAO code, airport name, type, municipality, country (ISO 3166-1 alpha-2), region (ISO 3166-2), WGS-84 lat/lon, and elevation in feet. Also returns 'matched_on' indicating whether the match was on 'iata' or 'icao'. For proximity searches, results include distance in kilometres. Meta includes source attribution (OurAirports, public domain), request ID, timestamp, and price.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [],
     "properties": {
      "code": {
       "type": "string",
       "maxLength": 16,
       "description": "3-letter IATA or 4-letter ICAO code, case-insensitive."
      },
      "near": {
       "type": "string",
       "maxLength": 64,
       "description": "lat,lon to search around."
      },
      "limit": {
       "type": "string",
       "default": "5",
       "pattern": "^[+-]?\\d+$",
       "maxLength": 64,
       "description": "Maximum results 1-25, default 5. Only with near."
      },
      "country": {
       "type": "string",
       "maxLength": 16,
       "description": "ISO 3166-1 alpha-2 filter."
      },
      "radius_km": {
       "type": "string",
       "default": "100",
       "pattern": "^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?$",
       "maxLength": 64,
       "description": "Search radius in km, 1-1000, default 100. Only with near."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "ok",
      "route",
      "version",
      "data",
      "meta"
     ],
     "properties": {
      "ok": {
       "const": true
      },
      "data": {
       "type": "object",
       "required": [
        "found"
       ],
       "properties": {
        "found": {
         "type": "boolean"
        },
        "nearby": {
         "type": "array",
         "items": {
          "type": "object",
          "required": [
           "iata",
           "icao",
           "name",
           "municipality",
           "country",
           "region",
           "lat",
           "lon",
           "elevation_ft",
           "type",
           "timezone",
           "distance_km",
           "bearing_deg"
          ],
          "properties": {
           "lat": {
            "type": "number"
           },
           "lon": {
            "type": "number"
           },
           "iata": {
            "type": "string"
   
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "data": {
   "found": true,
   "airport": {
    "lat": 52.3086,
    "lon": 4.76389,
    "iata": "AMS",
    "icao": "EHAM",
    "name": "Amsterdam Airport Schiphol",
    "type": "large_airport",
    "region": "NL-NH",
    "country": "NL",
    "timezone": "Europe/Amsterdam",
    "elevation_ft": -11,
    "municipality": "Amsterdam"
   },
   "matched_on": "iata"
  },
  "meta": {
   "sources": [
    {
     "id": "ourairports",
     "licence": "Public Domain",
     "version": "2026-09-28 extract",
     "published": "2026-09-28",
     "attribution": "OurAirports (public domain)"
    },
    {
     "id": "timezone-boundary-builder",
     "licence": "ODbL-1.0",
     "version": "2026d",
     "published": "2026-09-29",
     "attribution": "Time zones derived from timezone-boundary-builder data (https://github.com/evansiroky/timezone-boundary-builder), (c) contributors, ODbL 1.0, via timezonefinder 9.0.0"
    }
   ],
   "price_usd": "0.05",
   "disclaimer": "Factual output of a deterministic computation over public data. Provided as is, with no warranty of accuracy, completeness or availability. Not investment, financial, legal, tax, medical or any other professional advice, and not a recommendation. Verify before relying on it. Terms: https://api.duoleads.com/terms",
   "request_id": "01K6B7Q4ZC8H3F2M9WXR5TYN0D",
   "computed_at": "2026-09-28T12:00:00.000Z",
   "deterministic": true
  },
  "route": "/v1/ref/airport",
  "version": "1.0.0"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/duo-data-utilities-airport-lookup-8ac8235e/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.duoleads.com](https://www.zero.xyz/host/api.duoleads.com/llms.txt)
