---
title: "List supported airports"
---

> Documentation Index
> Fetch the complete documentation index at: https://flightqueue.com/developers/reference/llms.txt
> Use this file to discover all available pages before exploring further.

# List supported airports

Path: FlightQueue API › Airports

`GET /airports`

Paginated airport directory. Each row shows whether live wait times and FAA delays exist for the airport.

Access: Free with agent or developer key.

## Authentication

Requires one of the following:

- `BearerAuth`, http, header `Authorization`
- `ApiKeyAuth`, apiKey, in header, header `X-API-Key`

## Query parameters

- `country` (`listAirports.query.country`; string, optional) — Filter by ISO 3166-1 alpha-2 country code.
- `limit` (`listAirports.query.limit`; integer, optional) — Items per page, 1 to 200.
  - min 1; max 200; default `50`
- `page` (`listAirports.query.page`; integer, optional) — Page number, starting at 1.
  - min 1; max 9007199254740991; default `1`

## Code samples

### cURL

```bash
curl --request GET \
  --url https://flightqueue.com/api/v1/airports \
  --header 'Authorization: Bearer <token>'
```

### TypeScript

```typescript
const url = 'https://flightqueue.com/api/v1/airports';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch(url, options)
  .then(res => res.json())
  .then(json => console.log(json))
  .catch(err => console.error(err));
```

### Python

```python
import requests

url = "https://flightqueue.com/api/v1/airports"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
```

## Responses

### 200

Success

#### Example

```json
{
  "success": true,
  "data": {
    "airports": [
      {
        "iata": "JFK",
        "icao": "KJFK",
        "name": "John F. Kennedy International Airport",
        "city": "New York",
        "country": "US",
        "countryName": "United States",
        "hasWaitTimes": true,
        "hasDelays": true
      }
    ],
    "total": 1,
    "page": 1,
    "limit": 50,
    "totalPages": 1
  },
  "meta": {
    "requestId": "3f8c2b1e-6d4a-4f7b-9a1e-2c5d8e7f0a12",
    "timestamp": "2026-11-07T12:00:00.000Z"
  }
}
```

- `success` (`listAirports.response.200.success`; boolean, required)
- `data` (`listAirports.response.200.data`; object, required)
  - `airports` (`listAirports.response.200.data.airports`; array<object>, required)
    - `iata` (`listAirports.response.200.data.airports.iata`; string, required) — Three-letter IATA airport code, upper case.
      - pattern `^[A-Z]{3}$`
    - `icao` (`listAirports.response.200.data.airports.icao`; string | null, required) — ICAO code, or null when unknown.
    - `name` (`listAirports.response.200.data.airports.name`; string, required)
    - `city` (`listAirports.response.200.data.airports.city`; string, required)
    - `country` (`listAirports.response.200.data.airports.country`; string, required) — ISO 3166-1 alpha-2 country code.
    - `countryName` (`listAirports.response.200.data.airports.countryName`; string, required)
    - `hasWaitTimes` (`listAirports.response.200.data.airports.hasWaitTimes`; boolean, required) — True when a live wait-time feed exists for the airport.
    - `hasDelays` (`listAirports.response.200.data.airports.hasDelays`; boolean, required) — True when FAA delay data covers the airport.
  - `total` (`listAirports.response.200.data.total`; integer, required)
    - min -9007199254740991; max 9007199254740991
  - `page` (`listAirports.response.200.data.page`; integer, required)
    - min -9007199254740991; max 9007199254740991
  - `limit` (`listAirports.response.200.data.limit`; integer, required)
    - min -9007199254740991; max 9007199254740991
  - `totalPages` (`listAirports.response.200.data.totalPages`; integer, required)
    - min -9007199254740991; max 9007199254740991
- `meta` (`listAirports.response.200.meta`; object, required)
  - `requestId` (`listAirports.response.200.meta.requestId`; string, required) — Unique ID for this request. Quote it when you contact support.
    - format `uuid`; pattern `^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$`
  - `timestamp` (`listAirports.response.200.meta.timestamp`; string, required) — ISO 8601 timestamp in UTC.
    - format `date-time`; pattern `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$`

### 401

Unauthorized

#### Example

```json
{
  "success": false,
  "error": {
    "code": "MISSING_API_KEY",
    "message": "No API key was sent in X-API-Key or Authorization."
  }
}
```

- `success` (`listAirports.response.401.success`; boolean, required)
- `error` (`listAirports.response.401.error`; object, required)
  - `code` (`listAirports.response.401.error.code`; string, required) — Machine-readable error code.
    - one of `"MISSING_API_KEY"`, `"INVALID_API_KEY"`, `"RATE_LIMIT_EXCEEDED"`, `"PREMIUM_REQUIRED"`, `"ENTERPRISE_REQUIRED"`, `"INVALID_AIRPORT"`, `"INVALID_DATE"`, `"INVALID_BODY"`, `"TOO_MANY_AIRPORTS"`, `"NOT_FOUND"`, `"INTERNAL_ERROR"`
  - `message` (`listAirports.response.401.error.message`; string, required) — Human-readable explanation.

### 429

Too many requests

#### Example

```json
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "The key sent more requests per minute than its tier allows."
  }
}
```

- `success` (`listAirports.response.429.success`; boolean, required)
- `error` (`listAirports.response.429.error`; object, required)
  - `code` (`listAirports.response.429.error.code`; string, required) — Machine-readable error code.
    - one of `"MISSING_API_KEY"`, `"INVALID_API_KEY"`, `"RATE_LIMIT_EXCEEDED"`, `"PREMIUM_REQUIRED"`, `"ENTERPRISE_REQUIRED"`, `"INVALID_AIRPORT"`, `"INVALID_DATE"`, `"INVALID_BODY"`, `"TOO_MANY_AIRPORTS"`, `"NOT_FOUND"`, `"INTERNAL_ERROR"`
  - `message` (`listAirports.response.429.error.message`; string, required) — Human-readable explanation.


Source: https://flightqueue.com/developers/reference/api/airports/list/index.md
