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.
Norba normalizes fares, seats, bags, and ancillaries into a single standard — so you search once, compare everything, and book directly with airlines. No intermediaries, no extra integrations.
# this offer, one API call $ curl -X POST api.norba.io/v1/shopping/offers
Offers, orders and ancillaries arrive in one Slice-based shape — whether they came from NDC 17.2, 18.1, 19.2 or 21.3.
Every offer is scored 0.0–1.0 for completeness. Missing baggage allowance? Terminal? You'll know before you render.
Fan-out to every connector in parallel. One airline's outage never cascades — degraded carriers are skipped automatically.
The same API key that books flights also unlocks a rich set of reference and operational data: airlines, airports and aircraft types — all normalised, all with source provenance.
/v1/aviation/airlines/{iata}{
"iata_code": "BA",
"name": "British Airways",
"country": "GB",
"alliance": "Oneworld",
"status": "active",
"hubs": ["LHR", "LGW"]
}Look up any airline by IATA or ICAO code. Get full name, country, alliance membership, operational status and a fleet summary derived from the aircraft registry.
/v1/aviation/airports/{id}/arrivals{
"iata_code": "LHR",
"name": "Heathrow Airport",
"timezone": "Europe/London",
"runways_count": 2,
"scheduled_service": true
}Rich airport records with coordinates, timezone, runway data and OurAirports provenance.
/v1/aviation/aircraft-types/{icao_type}{
"icao_type_code": "AC50",
"faa_designator": "AC50",
"manufacturer": "AERO",
"model": "Aero Commander 500",
"description": "Aero Commander 500 · Piston",
"engine_count": 2,
"engine_type": "piston",
"aircraft_class": "regional",
"wake_turbulence_category": "Light",
"mtow_lb": 6000,
"registration_count": 169
}ICAO Doc 8643 type designators for 700+ aircraft. Engine type, wake turbulence category and class (narrowbody, widebody, regional) — all queryable by manufacturer or class.
Norba sits between your application and every airline's NDC API — normalizing, caching, and routing in real time so you never touch XML.
norba.io
Search Engine
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.
Indicative industry figures. Actual GDS fees vary by carrier, region and contract — but the structural difference doesn't.
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.
<AirShoppingRS xmlns="http://www.iata.org/IATA/EDIST/2018.1">
<OffersGroup>
<AirlineOffers>
<AirlineOffer>
<OfferID>AA_017742</OfferID>
<TotalPrice Currency="USD" Amount="687.50" />
<BaseFare Currency="USD" Amount="510.00" />
<PaxJourneyRefID>JNY-1</PaxJourneyRefID>
<PenaltyRefIDs>P-NR P-CHG150</PenaltyRefIDs>
<FareComponent>
<RBD>K</RBD>
<FareBasisCode>KLA7N1B1</FareBasisCode>
</FareComponent>
</AirlineOffer>
</AirlineOffers>
</OffersGroup>
</AirShoppingRS>{
"offer_id": "aa_offer-017742",
"airline": "AA",
"source": "ndc_direct",
"source_version": "NDC-18.1",
"total_price": { "amount": 687.50, "currency": "USD" },
"base_fare": 510.00,
"taxes_fees": 177.50,
"cabin_class": "economy",
"fare_rules": {
"refundable": false,
"changeable": true,
"change_penalty": { "amount": 150, "currency": "USD" }
},
"slices": [ /* normalised, enriched, stop-counted */ ],
"quality_score": 0.79
}Norba is an NDC aggregator for online travel agencies. We maintain the airline integrations — you call one clean REST API and get live fares, ancillaries and booking in a single, consistent response.
Prices come straight from the airline's NDC API — no GDS markup, no segment fees, no per-booking surcharges.
A single canonical REST endpoint for every carrier we support. No per-airline XML schemas to learn — we handle the translation.
Redis cache-aside with a 90-second TTL. Repeat searches return instantly without burning airline API quotas.
Health checks, connector probing and delivery visibility for reliability.
Every airline connector is probed every 60 s. Degraded or down connectors are flagged automatically so you never serve stale availability.
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.
The API costs nothing to integrate. You only pay when you complete a booking, add a seat, or sell an ancillary. We earn when you earn — no monthly subscription.
APIs to components — everything you need to start selling flights. Zero up-front costs, pay only for completed transactions.
Start now →Key features
Built for agencies who want to scale quickly with confidence. Volume discounts, dedicated infrastructure, and custom SLAs.
Contact sales →Key features
| Transaction type | What triggers the fee | Price |
|---|---|---|
| Completed booking | OrderCreate — when an order is confirmed and ticketed. | €3.00per booking |
| Seat selection | Seat assignment during booking or post-booking servicing. | €0.80per seat |
| Ancillary added | Baggage, meals, lounge access, or any extra service sold through the API. | €0.50per ancillary |
| L2B overage | Shopping calls exceeding a 1000:1 look-to-book ratio in a billing period. | €0.02per excess call |
| Search without booking | Shopping calls beyond 500 without any completed booking in a 30-day window. | €0.05per excess call |
| Data API | ||
| Information lookup | Airlines, fleet, airports, routes, schedules, and reference data. | €0.01per request |
That's no problem! Enterprise customers can use their own IATA or ARC accreditation. Contact our sales team to discuss pricing and next steps. Alternatively, you can use our accreditation — no additional forms or up-front capital required.
The look-to-book (L2B) overage ensures you maintain a healthy search-to-book ratio. This fee covers the costs of processing excessive searches and protects airline relationships. For example: if you make 10 bookings in a month, you're allowed 10,000 searches free of charge (1000:1). If you made 15,000 searches, you'd pay (15,000 − 10,000) × €0.02 = €100.
If you're an existing travel seller processing high volumes and wish to discuss volume discounts, dedicated infrastructure, or custom SLAs, please contact our sales team at hello@norba.io.
Questions? hello@norba.io
Free sandbox, no credit card required. Live connectors in minutes.