Aviation Data

Airline route network

Every non-stop city pair one airline publishes, busiest first.

GET/v1/aviation/airlines/{id}/routesRequires X-API-Key

One carrier's published non-stop network, page by page, ordered by weekly frequency (busiest first; pairs published without a frequency last), then by origin and destination — so the first page answers "where does this airline actually fly".

The data comes from the schedules airlines publish, as compiled by OpenTravelData. It describes the airline's network, not what Norba can book: use POST /v1/shopping/offers to find out what is for sale.

**{id} is the two-character IATA airline code** (IB, ib), not an ICAO code — anything else is 400 invalid_airline.

Filters:
- origin, destination — exact three-letter airport code at that end of the pair
- q — an airport code prefix matched at either end: BC finds pairs to and from BCN

Each pair is one direction; the return leg is its own record. A route an airline sells only as a codeshare is filed under the airline that operates it.

404 vs. empty page. A carrier that publishes no network at all is 404 not_found; a filter that matches nothing on a carrier that does is 200 with an empty data.

Request example

curl --request GET \
  --url https://api.norba.io/v1/aviation/airlines/{id}/routes \
  --header "X-API-Key: $NORBA_KEY"

Response example

Response example
{
  "data": [
    {
      "airline_iata": "IB",
      "origin": "MAD",
      "destination": "BCN",
      "weekly_frequency": 98,
      "monthly_seats": 72400,
      "source": "opentraveldata"
    },
    {
      "airline_iata": "IB",
      "origin": "MAD",
      "destination": "LHR",
      "weekly_frequency": 63,
      "monthly_seats": 51800,
      "source": "opentraveldata"
    }
  ],
  "meta": {
    "request_id": "5f3a9c0e7b21d4a8",
    "page": 1,
    "limit": 50,
    "count": 2,
    "total": 141,
    "last_updated": "2026-10-12T03:10:44Z"
  },
  "errors": []
}

Authorization

X-API-KeystringRequired

Opaque API key issued from the Norba dashboard. Sent on every request as the X-API-Key HTTP header. Missing or invalid keys are rejected with 401 Unauthorized.

Path parameters

idstringRequired

Two-character IATA airline code, in either case.

Example: IB

Query parameters

originstring

Three-letter IATA code of the departure airport, exact match.

Example: MAD
destinationstring

Three-letter IATA code of the arrival airport, exact match.

qstring

Airport code prefix matched against either end of the pair.

Example: BC
pageinteger

1-based page number, at most 1000. Default: 1.

limitinteger

Page size. Default: 50; values above 500 are capped at 500.

Response fields

airline_iatastringRequired

The carrier the pair is filed under.

originstringRequired

Departure airport, IATA code.

destinationstringRequired

Arrival airport, IATA code.

weekly_frequencynumber

Flights a week averaged over the schedule season. Absent when the pair was published without one.

monthly_seatsinteger

Seats offered a month on the pair. Absent when not published.

sourcestring

The dataset the pair comes from: opentraveldata.

Error codes

400

invalid_airline — {id} is not two characters long; invalid_page — page is above 1000.

404

not_found — the airline publishes no network we hold (only when no filter is set).

GET /v1/aviation/airlines/{id}/routes | Norba API