AirShopping
IATA_AirShoppingRQ searches for flight offers and returns an IATA_AirShoppingRS. It is the XML counterpart of the JSON create offers flow.
POST /ndc/{version}/AirShopping with version one of v21.3, v24.1, v25.4, or v26.2.
AirShopping requires a bearer token from Authentication. Full transaction (book) permissions are not required.
Request
Section titled “Request”Request > FlightRequest > FlightRequestOriginDestinationsCriteria must include at least one OriginDestCriteria with origin, destination, and departure date. Request > PaxList must include at least one passenger.
Supported request options include:
-
one or more origin-destination criteria, in travel-date order. A city-only code (one where no airport shares the code) in origin or destination automatically searches that metro’s airports; offers carry their real airports.
-
passenger types
ADT,CHD, andINF -
CabinType(one or more) on eachOriginDestCriteriato filter by cabin.CabinTypeCodeis a PADIS codeset-9873 numeric code:1First,2Business,4Premium Economy,5Economy. EachCabinTypeentry may carry aPrefLevel/PrefLevelCode:Required(default whenPrefLevelis absent) — only offers whose cabin matches one of the required codes are returned.Preferred— prefers offers in those cabins; falls back to all offers when nothing matches.Exclude— drops any offer whose cabin matches one of the excluded codes.
To search for No Flex or Nice, use Economy (
5); for Nicer, use Premium Economy (4); for Nicest, use Business (2). -
ResponseParameters > CurParameter > CurCodefor currency — USD only for now (see payments)
Round-trip family example
Section titled “Round-trip family example”<?xml version="1.0" encoding="utf-8"?><IATA_AirShoppingRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage"><DistributionChain> <DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes"> <Ordinal>1</Ordinal> <OrgRole>Seller</OrgRole> <ParticipatingOrg> <Name>NDC Travel Agency</Name> <OrgID>10123456</OrgID> </ParticipatingOrg> </DistributionChainLink></DistributionChain><PayloadAttributes> <VersionNumber xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">21.3</VersionNumber></PayloadAttributes><Request> <FlightRequest xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes"> <FlightRequestOriginDestinationsCriteria> <OriginDestCriteria> <DestArrivalCriteria> <IATA_LocationCode>CHS</IATA_LocationCode> </DestArrivalCriteria> <OriginDepCriteria> <Date>2026-05-12</Date> <IATA_LocationCode>TPA</IATA_LocationCode> </OriginDepCriteria> </OriginDestCriteria> <OriginDestCriteria> <DestArrivalCriteria> <IATA_LocationCode>TPA</IATA_LocationCode> </DestArrivalCriteria> <OriginDepCriteria> <Date>2026-05-19</Date> <IATA_LocationCode>CHS</IATA_LocationCode> </OriginDepCriteria> </OriginDestCriteria> </FlightRequestOriginDestinationsCriteria> </FlightRequest> <PaxList xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes"> <Pax> <PaxID>ADT0</PaxID> <PTC>ADT</PTC> </Pax> <Pax> <PaxID>ADT1</PaxID> <PTC>ADT</PTC> </Pax> <Pax> <PaxID>CHD2</PaxID> <PTC>CHD</PTC> </Pax> <Pax> <PaxID>CHD3</PaxID> <PTC>CHD</PTC> </Pax> </PaxList> <ResponseParameters xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes"> <CurParameter> <CurCode>USD</CurCode> </CurParameter> </ResponseParameters></Request></IATA_AirShoppingRQ>Round-trip adults-only example
Section titled “Round-trip adults-only example”<?xml version="1.0" encoding="utf-8"?><IATA_AirShoppingRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersMessage"><DistributionChain> <DistributionChainLink xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes"> <Ordinal>1</Ordinal> <OrgRole>Seller</OrgRole> <ParticipatingOrg> <Name>NDC Travel Agency</Name> <OrgID>10123456</OrgID> </ParticipatingOrg> </DistributionChainLink></DistributionChain><PayloadAttributes> <VersionNumber xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes">21.3</VersionNumber></PayloadAttributes><Request> <FlightRequest xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes"> <FlightRequestOriginDestinationsCriteria> <OriginDestCriteria> <DestArrivalCriteria> <IATA_LocationCode>CHS</IATA_LocationCode> </DestArrivalCriteria> <OriginDepCriteria> <Date>2026-05-12</Date> <IATA_LocationCode>TPA</IATA_LocationCode> </OriginDepCriteria> </OriginDestCriteria> <OriginDestCriteria> <DestArrivalCriteria> <IATA_LocationCode>TPA</IATA_LocationCode> </DestArrivalCriteria> <OriginDepCriteria> <Date>2026-05-19</Date> <IATA_LocationCode>CHS</IATA_LocationCode> </OriginDepCriteria> </OriginDestCriteria> </FlightRequestOriginDestinationsCriteria> </FlightRequest> <PaxList xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes"> <Pax> <PaxID>ADT0</PaxID> <PTC>ADT</PTC> </Pax> <Pax> <PaxID>ADT1</PaxID> <PTC>ADT</PTC> </Pax> </PaxList> <ResponseParameters xmlns="http://www.iata.org/IATA/2015/EASD/00/IATA_OffersAndOrdersCommonTypes"> <CurParameter> <CurCode>USD</CurCode> </CurParameter> </ResponseParameters></Request></IATA_AirShoppingRQ>Response
Section titled “Response”An Offer is either a plain fare or a branded bundle. Bundles add PriceClassRefID and Fee to the price, and each included ancillary shows up as its own Service block referencing ServiceDefinitionList. Ancillary ServiceIDs are prefixed SVC-BD (bundle-defined); a plain fare’s single Service references the PaxJourney directly and is prefixed SVC-FL (flight-level).
Base fare offer
Section titled “Base fare offer”No PriceClassRefID, no Fee, one SVC-FL service tied to the journey.
<Offer> <OfferID>OF-base-fare</OfferID> <OfferItem> <FareDetail> <FareComponent> <PaxSegmentRefID>SEG-outbound</PaxSegmentRefID> </FareComponent> <PaxRefID>PX1</PaxRefID> </FareDetail> <OfferItemID>OFI-OF-base-fare-0</OfferItemID> <Price> <BaseAmount CurCode="USD">18.23</BaseAmount> <TaxSummary> <TotalTaxAmount CurCode="USD">30.77</TotalTaxAmount> </TaxSummary> <TotalAmount CurCode="USD">49</TotalAmount> </Price> <Service> <OfferServiceAssociation> <PaxJourneyRef> <PaxJourneyRefID>JOU-outbound</PaxJourneyRefID> </PaxJourneyRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-FL-OF-base-fare-0</ServiceID> </Service> </OfferItem> <TotalPrice> <BaseAmount CurCode="USD">18.23</BaseAmount> <TaxSummary> <TotalTaxAmount CurCode="USD">30.77</TotalTaxAmount> </TaxSummary> <TotalAmount CurCode="USD">49</TotalAmount> </TotalPrice></Offer>Branded fare bundle
Section titled “Branded fare bundle”PriceClassRefID + Fee added to the price, one SVC-BD service per bundled ancillary.
<Offer> <OfferID>OF-branded-fare</OfferID> <OfferItem> <FareDetail> <FareComponent> <PaxSegmentRefID>SEG-outbound</PaxSegmentRefID> <PriceClassRefID>BZU</PriceClassRefID> </FareComponent> <PaxRefID>PX1</PaxRefID> </FareDetail> <OfferItemID>OFI-OF-branded-fare-0</OfferItemID> <Price> <BaseAmount CurCode="USD">18.23</BaseAmount> <Fee> <Amount CurCode="USD">65</Amount> <DesigText>BUNDLE:BZU</DesigText> </Fee> <TaxSummary> <TotalTaxAmount CurCode="USD">30.77</TotalTaxAmount> </TaxSummary> <TotalAmount CurCode="USD">114</TotalAmount> </Price> <Service> <OfferServiceAssociation> <ServiceDefinitionRef> <ServiceDefinitionRefID>SD-BD-BZU-COB</ServiceDefinitionRefID> </ServiceDefinitionRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-BD-OF-branded-fare-COB</ServiceID> </Service> <Service> <OfferServiceAssociation> <ServiceDefinitionRef> <ServiceDefinitionRefID>SD-BD-BZU-PRTY</ServiceDefinitionRefID> </ServiceDefinitionRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-BD-OF-branded-fare-PRTY</ServiceID> </Service> <Service> <OfferServiceAssociation> <ServiceDefinitionRef> <ServiceDefinitionRefID>SD-BD-BZU-CB1</ServiceDefinitionRefID> </ServiceDefinitionRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-BD-OF-branded-fare-CB1</ServiceID> </Service> <Service> <OfferServiceAssociation> <ServiceDefinitionRef> <ServiceDefinitionRefID>SD-BD-BZU-WIFI</ServiceDefinitionRefID> </ServiceDefinitionRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-BD-OF-branded-fare-WIFI</ServiceID> </Service> </OfferItem> <TotalPrice> <BaseAmount CurCode="USD">18.23</BaseAmount> <Fee> <Amount CurCode="USD">65</Amount> <DesigText>BUNDLE:BZU</DesigText> </Fee> <TaxSummary> <TotalTaxAmount CurCode="USD">30.77</TotalTaxAmount> </TaxSummary> <TotalAmount CurCode="USD">114</TotalAmount> </TotalPrice></Offer>Premium fare bundle
Section titled “Premium fare bundle”Same shape as the branded bundle, higher tier: more ancillaries, higher fee.
<Offer> <OfferID>OF-premium-fare</OfferID> <OfferItem> <FareDetail> <FareComponent> <PaxSegmentRefID>SEG-outbound</PaxSegmentRefID> <PriceClassRefID>AZU</PriceClassRefID> </FareComponent> <PaxRefID>PX1</PaxRefID> </FareDetail> <OfferItemID>OFI-OF-premium-fare-0</OfferItemID> <Price> <BaseAmount CurCode="USD">18.23</BaseAmount> <Fee> <Amount CurCode="USD">109</Amount> <DesigText>BUNDLE:AZU</DesigText> </Fee> <TaxSummary> <TotalTaxAmount CurCode="USD">30.77</TotalTaxAmount> </TaxSummary> <TotalAmount CurCode="USD">158</TotalAmount> </Price> <Service> <OfferServiceAssociation> <ServiceDefinitionRef> <ServiceDefinitionRefID>SD-BD-AZU-COB</ServiceDefinitionRefID> </ServiceDefinitionRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-BD-OF-premium-fare-COB</ServiceID> </Service> <Service> <OfferServiceAssociation> <ServiceDefinitionRef> <ServiceDefinitionRefID>SD-BD-AZU-CB1</ServiceDefinitionRefID> </ServiceDefinitionRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-BD-OF-premium-fare-CB1</ServiceID> </Service> <Service> <OfferServiceAssociation> <ServiceDefinitionRef> <ServiceDefinitionRefID>SD-BD-AZU-CB2</ServiceDefinitionRefID> </ServiceDefinitionRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-BD-OF-premium-fare-CB2</ServiceID> </Service> <Service> <OfferServiceAssociation> <ServiceDefinitionRef> <ServiceDefinitionRefID>SD-BD-AZU-WIFI</ServiceDefinitionRefID> </ServiceDefinitionRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-BD-OF-premium-fare-WIFI</ServiceID> </Service> <Service> <OfferServiceAssociation> <ServiceDefinitionRef> <ServiceDefinitionRefID>SD-BD-AZU-BZBY</ServiceDefinitionRefID> </ServiceDefinitionRef> </OfferServiceAssociation> <PaxRefID>PX1</PaxRefID> <ServiceID>SVC-BD-OF-premium-fare-BZBY</ServiceID> </Service> </OfferItem> <TotalPrice> <BaseAmount CurCode="USD">18.23</BaseAmount> <Fee> <Amount CurCode="USD">109</Amount> <DesigText>BUNDLE:AZU</DesigText> </Fee> <TaxSummary> <TotalTaxAmount CurCode="USD">30.77</TotalTaxAmount> </TaxSummary> <TotalAmount CurCode="USD">158</TotalAmount> </TotalPrice></Offer>AirShopping errors
Section titled “AirShopping errors”| Code | HTTP status | Cause |
|---|---|---|
ERR-1000 | 400 | Malformed XML. |
ERR-1002 | 404 | Unsupported version segment in the path. |
ERR-1003 | 400 | Missing required element. |
ERR-1004 | 400 | Invalid field value, unsupported passenger type, invalid cabin code, duplicate passenger ID, unsupported currency, or two criteria that search the same airports on the same date. |
ERR-1006 | 422 | Invalid origin or destination. |
ERR-3008 | 409 | The seller’s contracted fare for this market has not completed pricing verification. |
ERR-7003 | 422 | Infants exceed adults. |
ERR-8000 | 401 | Missing or invalid API key or bearer token. |
ERR-8001 | 403 | API key not authorized for this request. |
ERR-8002 | 503 | Authentication store unavailable. |
ERR-9002 | 503 | Offer cache unavailable. |
ERR-2002 | 500 | Availability processing failed. |