New airline integrations added continuously

All airline tickets.
One clean API.

Norba is one API to search and book flights direct with the airline — fares, seats, bags and ancillaries normalised into a single standard, so you integrate once instead of per carrier.

Orders

Sample data

Every booking you have made at an airline — record locator, itinerary, ticketing deadline and price.

Search by PNR or order id…
CreatedPNR
15 Jun, 09:12X7K9M2
14 Jun, 18:40QR4T81
14 Jun, 11:03LH72PB
12 Jun, 16:55AF3KD9
11 Jun, 08:21KL8W2C
10 Jun, 20:14TK5MN7
09 Jun, 13:02UA1QX4

Airlines we are integrating

Available in the sandbox today. Production availability is announced per airline.

  • In integration
  • In integration
  • In integration
  • In integration
  • In integration
  • In integration
  • In integration
  • In integration

[ 01 of 09 ] · METRICS

By the numbers

What one integration replaces.

11

NDC operations

Shopping, pricing, seats, services, ordering and servicing — the same eleven per airline.

4

NDC versions

17.2, 18.1, 19.2 and 21.3 collapse into one models.Offer.

1

Canonical shape

Offers, orders and ancillaries arrive identical whichever carrier answered.

0

Intermediaries

Prices come straight from the airline. No GDS markup, no segment fees.

[ 02 of 09 ] · FEATURES

Core features

Normalise once. Ship everywhere.

models.Offer
offer_id"aa_offer-0X9PTK"
source_version"21.3"
validating_carrier"AA"
slices[ 2 ]
quality_score0.92
price.total542.10

Canonical schema

Offers, orders and ancillaries arrive in one Slice-based shape — whether they came from NDC 17.2, 18.1, 19.2 or 21.3.

quality_score · 0.92
Slices100%
Segments100%
Fare basis90%
Baggage80%
Terminal55%
Fare family40%

Quality scoring

Every offer is scored 0.0–1.0 for completeness. Missing baggage allowance? Terminal? You'll know before you render.

circuit breakers
American Airlinesclosed
Iberiaclosed
Deltahalf-open
Lufthansaopen

Circuit breakers built-in

Fan-out to every connector in parallel. One airline's outage never cascades — degraded carriers are skipped automatically.

[ 03 of 09 ] · BENEFITS

Benefits

We keep the connectors. You keep shipping.

Norba is an NDC aggregator for online travel agencies. We maintain the airline integrations — you call one REST API and get live fares, ancillaries and booking in a single, consistent response.

same itinerary · two paths
via GDS€842.00
via Norba€719.50
GDS segment fee+ €12.00 / pax
Norba fee1.99% of the base fare, capped

Direct airline pricing

Prices come straight from the airline's NDC API — no GDS markup, no segment fees, no per-booking surcharges.

POST /v1/shopping/offers
origin"LHR"
destination"JFK"
adults1
AAIBDLLHAFKLTKUA

One endpoint, every carrier

A single REST endpoint for every airline we support. No per-airline XML schemas to learn — we handle the translation.

cache-aside · ttl 90 s
MISS → carrier fanout380 ms
HIT ← Redis L24 ms
HIT ← Redis L23 ms
HIT ← Redis L22 ms

Repeat searches come from cache

The same search twice returns instantly, without spending an airline's API quota on it.

probe · every 60 s
American Airlinesup
Iberiaup
Deltadegraded
Lufthansadown

Delivery monitoring

Every webhook attempt, retry and failure is on the record — so a broken integration is a lookup, not an investigation.

slice model
trip_type"return"
slice 0
origin "LHR" → destination "JFK"
slice 1
origin "JFK" → destination "LHR"

Real-time health monitoring

Every airline connector is probed every 60 s. Degraded or down connectors are flagged automatically so you never serve stale availability.

itinerary shapes
ReturnLHR → JFK → LHR
Open-jawLHR → JFK | EWR → LHR
Multi-cityLHR → JFK → LAX → LHR

Slice-based offer model

Multi-city, open-jaw and return trips modelled as slices from day one. No flat-segment workarounds or post-processing glue code.

We add and maintain airline integrations on our end. Your team ships features, not connector code.

[ 04 of 09 ] · USE CASES

Use cases

Search, book, service. One integration.

Search

One canonical payload fans out to every healthy connector in parallel.

  • Offers sorted by price
  • Quality score per offer
  • Degraded carriers skipped
fan-out · 1 request
AAAmerican Airlines312 ms18 offers
IBIberia266 ms11 offers
LHLufthansa404 ms9 offers
DLDeltaskipped

Book

Price the offer, then order it. The airline holds the seat under its own deadline.

  • Bookable offer IDs
  • Seats and bags at checkout
  • Payment time limit surfaced
order · created
order_idord_8HK2LQ
airline_pnrX7K9M2
ticket001-2340117742
seats14A · 14B
payment_deadline23:59Z

Service

Changes, cancellations and refunds against the order you already hold.

  • Refund eligibility
  • Cancel and change quotes
  • Full order history
servicing · ord_8HK2LQ
OrderRetrieve200
OrderChange · quote€150.00
OrderCancel · refundeligible
OrderReShop3 options

[ 05 of 09 ] · ENGINE

Norba Engine

One engine. Every airline in, one JSON out.

Norba sits between your application and every airline's NDC API — normalizing, caching, and routing in real time so you never touch XML.

Input

  • OTA

    Online travel agencies

  • Corporate

    Business travel platforms

  • Metasearch

    Fare comparison engines

Search Engine

Processing live
  • 01ValidateOne canonical request shape
  • 02Fan outEvery healthy connector, in parallel
  • 03NormaliseDialects collapse into models.Offer
  • 04ScoreCompleteness 0.0 – 1.0 per offer
  • 05MergeSorted, deduplicated, cached 90 s

Airlines · NDC

  • AAAmerican Airlines
  • IBIberia
  • LHLufthansa
  • AFAir France
  • KLKLM
  • TKTurkish Airlines
  • UAUnited

In integration

How the engine processes every request

Search Request

POST /v1/shopping/offers

Norba Engine

validate · fan-out · normalise · score

Canonical JSON Response

200 OK · models.Offer[]

No XML. No per-airline schemas. Just one REST endpoint — consistent across every carrier we support.

[ 06 of 09 ] · NORMALIZATION

Normalization in action

Every airline, a different format. One canonical schema.

Every airline ships a different NDC dialect — different schema versions, custom extensions, free-text fare rules, inconsistent price elements. Pick a carrier and watch it collapse into one canonical offer.

LH · raw AirShoppingRS

<AirShoppingRS xmlns=".../EDIST/2021.3">
  <PricedOffer>
    <OfferID Owner="LH">LH-OFFER-1234</OfferID>
    <TotalPrice>
      <DetailCurrencyPrice>
        <Total Code="EUR">542.10</Total>
        <Taxes><Total Code="EUR">132.10</Total></Taxes>
      </DetailCurrencyPrice>
    </TotalPrice>
    <Penalties>
      <Penalty type="Cancel">
        <Description>CHANGE FEE EUR 150</Description>
      </Penalty>
    </Penalties>
  </PricedOffer>
</AirShoppingRS>

models.Offer · canonical

{
  "offer_id": "lh_offer-1234",
  "airline": "LH",
  "source": "ndc_direct",
  "source_version": "21.3",
  "total_price": { "amount": 542.10, "currency": "EUR" },
  "base_fare": 410.00,
  "taxes_fees": 132.10,
  "cabin_class": "economy",
  "fare_rules": {
    "refundable": false,
    "changeable": true,
    "change_penalty": { "amount": 150.00, "currency": "EUR" }
  },
  "quality_score": 0.92
}

One schema, four NDC versions

17.2, 18.1, 19.2 and 21.3 all collapse into the same models.Offer.

Free-text fare rules parsed

"NONREFUNDABLE / CHANGE FEE EUR 150" becomes structured FareRules with extracted money amounts.

Reference data joined

Airport timezones, airline alliance and aircraft body type are injected before you see the offer.

[ 07 of 09 ] · COMPARISON

How a booking actually flows

Cut the middlemen. Keep the margin.

A traditional GDS booking passes through four intermediaries — each one adding a fee, a markup, or a layer of legacy XML. Norba connects you straight to the airline's NDC API.

Traditional GDS path

4 hops · stacking fees · filed fares only

  • 01OTA / Agency
  • 02GDS terminal+ subscription
  • 03Aggregator+ per-segment fee
  • 04Consolidator+ margin
  • 05Airline CRSfiled fares only

Cost per booking

€8.08 – €15.45 per booking

Norba · direct NDC

1 hop · airline price · live content

  • 01OTA / Agency
  • 02Norba1.99% of the base fare, capped
  • 03Airline NDClive fares & ancillaries

Cost per booking

1.99% of the base fare · capped at €25.00 · no markup

Indicative industry figures. Actual GDS fees vary by carrier, region and contract — but the structural difference doesn't.

[ 08 of 09 ] · PRICING

Pricing

A share of what you sell.

Nothing to integrate, no subscription, no minimum. You pay 1.99% of the base fare when a booking is confirmed — never less than €2.00, never more than 2.5% of the fare, and never more than €25.00 — and the rate falls to 1.29% as your monthly volume grows. Extras are priced the same way. Every API call counts as a request, and the first 500 requests of the account are free — once, not every month.

Pay as you go

Most popular

Everything you need to start selling flights. No up-front cost and no monthly fee — you pay a share of each booking, and nothing at all until you make one.

1.99%/ of the base fare, per confirmed booking

Min €2.00 — never above 2.5% of the fare · Max €25.00 · No subscription

Key features

  • Start selling instantly
  • No up-front fee, no monthly fee, no minimum
  • Full API access — all endpoints
  • 500 free API requests, once for the life of the account — every endpoint counts
  • Cancel within 24h and the fee is credited back
  • Volume discount from your 251st booking — down to 1.29%

Enterprise

For agencies at scale. A negotiated rate from your first booking, with dedicated infrastructure and custom SLAs.

1.29%/ negotiated, from the first booking

Volume terms · dedicated SLA · your own IATA accreditation

Key features

  • 1.29% from your first order — the ladder's bottom rung
  • Self-hosted deployment option
  • Dedicated connector engineering
  • SSO / SAML
  • Dedicated SLA & priority support
  • Use your own IATA accreditation

The full fee schedule, the volume ladder and the pricing questions.

Questions? hello@norba.io

[ 09 of 09 ] · FAQ

FAQ

Questions? Answers, in plain terms.

  • NDC (New Distribution Capability) is IATA's XML messaging standard for selling airline products. Every airline implements it differently — different schema versions, custom extensions, proprietary codes. An aggregator gives you one integration that handles all those quirks.

  • Norba handles 17.2, 18.1, 19.2 and 21.3. The VersionDetector reads the XML namespace before any parsing, so version-specific handling is applied automatically.

  • Contact our team to request a new airline integration. We continuously expand our connector network based on customer demand.

  • Searches and data lookups share one allowance of 500 free requests — granted once, for the life of the account, not each month. Past that, a search is €0.005 per call and a data lookup €0.0025, from then on. Bookings themselves are charged as a share of what they sold: 1.99% of the base fare, minimum €2.00 but never more than 2.5% of the fare, capped at €25.00, falling to 1.29% with monthly volume.

  • Every airline caps how many searches it serves per booking in its own contract — its look-to-book ratio. We never refuse or throttle your searches for being over it. Instead, while your ratio with that airline is above what it allows, each request to that airline costs €0.01 on top of the call. It applies only to the airline you are over with, never below 1,000 searches with it, and it stops the moment a booking brings the ratio back inside. Your ratio, the limit and anything charged are all on the Airlines page of your dashboard.

  • Yes. Postgres row-level security is enabled on all multi-tenant tables. Each agency has its own API keys, and a query only ever returns that agency's own rows.

  • All traffic uses HTTPS and API keys. Verify TLS on both sides and keep your API keys confidential.

Get API key

Your first booking is 4 API calls away.

Free sandbox, no credit card required. Your first call in minutes.

Norba — One Flight Booking API for Every Airline