Cruise Offers API
The Cruise Offers API provides real-time pricing and availability for TUI cruise packages to third-party agents. Consumers can search for a destination through the TUI API gateway and receive current cruise offers.
NOTE: TUI Marella & River Cruises are both currently supported by the cruiseOffers API.
API Endpoints
| Environment | URL |
|---|---|
| LIVE | https://prod.api.tui/cruiseOffers/cruiseOffers_v1 |
API Methods
Method: GET
{
"cruiseOffersRequest": {
"xmlns": "http://tuiuk.com/xsd/cruise/cruiseoffers/v1",
"cruiseType": "Fly Cruise",
"maxResultCount": "2",
"departureAirportCode": "LGW",
"destination": [{
"countryCode": "BRB"
}, {
"countryName": "Barbados"
}, {
"regionCode": "L04304"
}, {
"regionName": "Caribbean"
}, {
"itineraryCode": "440505"
}, {
"itineraryName": "A Taste of Paradise"
}, {
"shipCode": "055414"
}, {
"shipName": "Marella Celebration"
}, {
"portOfCall": "St John's"
}],
"isFlexible": "true",
"departureMonth": 01,
"departureYear": 2021,
"duration": {
"numOfDays": 7
},
"numOfAdults": 1,
"numOfChildren": 2,
"childAgeOnReturn": ["11", "13"],
"sellingMarketCode": "UK"
}
}
HTTP Headers
| Header Name | Value |
|---|---|
| x-api-key | <your-api-key> |
| Accept | application/json;cruiseOffers;version=1.0 / |
Search Input Parameters
Search parameters should be submitted in the same order and are case sensitive.
| Field | Data Type | Description | Sample/Values |
|---|---|---|---|
| cruiseType | String(Enumerated) | Type of cruise. We have 3 types of cruise supported by Api like 1. Fly Cruise 2. Ex-UK Cruise 3. Cruise - Cabin Only | Fly Cruise |
| maxResultCount | Number | Maximum number of offers to be returned. This is facilitated so that the consumer can select the limit of offers returned from API. | 100 |
| departureAirportIATACode | String(3 Chars) | Standard IATA Airport code. | LGW |
| departurePortCode | String | Standard Municipal region code. | GRCFU |
| destination | Complex element | A complex node to specify the desired destination either a country, region, itinerary, ship or portOfCall | |
| destination/countryCode | String | Country code | IND |
| destination/countryName | String | Country Name | India |
| destination/regionCode | String | TUI Specific 6 digit region code | L34381 |
| destination/regionName | String | region name | Western Mediterranian |
| destination/itineraryCode | String | TUI Specific itinerary code | 440505 |
| destination/itineraryName | String | itinerary name | A Taste of Paradise |
| destination/shipCode | String | TUI Specific 6 digit ship code | 055414 |
| destination/shipName | String | ship name | Marella Celebration |
| destination/portOfCall | String | ports of call with in the itineraries | Sorrento |
| abtaCode | String | Agent number | Not all agents will have Abta code and hence if this field is not populated then it will be defaulted to web Abta code. |
| cabinType | String | TUI Specific cabin types | Currently this feature is not supported. |
| IsFlexible | Boolean | Indicator to denote whether the search to be flexible or exact. If this parameter si set to true then +/- 1 month flexiblity is considered. | FALSE |
| departureMonth | Number | 2 digit number | 01 |
| departure Year | Number | 4 digit ISO standard year yyyy. | 2019 |
| duration/numOfDays | Number | cruise duration | 7 |
| numOfAdults | Number | Number of travelling passengers whose age is greater than or equal to 18 | 4 |
| numOfChildren | Number | Number of travelling passengers whose age is less than 18 at the time of travelling | 2 |
| childAgeOnReturn | Number Array | Array of numbers to capture the age of every child travelling. | 10,11 |
| sellingMarketCode | String enumerated | Search by correct market code and possible values are Values possible : IRL - Ireland UK - United Kingdom. | UK |
Response Parameters
Every response includes a standard HTTP status code. A successful request returns 200 OK; failed requests return an appropriate 4xx or 5xx code together with the error structure described below.
| Field | Data Type | Description | Sample |
|---|---|---|---|
| cruiseOffersResponse/offersAvailable | Number | Number of offers available for the selected date range and destination | 100 |
| cruiseOffersResponse/maxResultCount | Number | Maximum number of offers to be returned as specified in the request by API consumer. This is facilitated so that the consumer can select the limit of offers returned from TUI API. If a valid integer is populated in the request then the value of offersAvailable will be same as maxResultCount. If not populated in the request the value is defaulted to 0. | 100 |
| cruiseOffersResponse/party/numOfAdults | Number | Number of travelling passengers whose age is equal to or greater than 18 years | 6 |
| cruiseOffersResponse/party/numOfChildren | Number | Number of travelling passengers whose age is less than 18 years and greater than 2 Years. If no children are travelling then this field is defaulted to 0. | 2 |
| cruiseOffersResponse/party/numOfInfants | Number | Number of travelling passengers whose age is less than 2 years. If no infants are travelling then this field is defaulted to 0. | 1 |
| cruiseOffersResponse/cruiseOffers/cruiseType | String(Enumerated) | Cruise type as selected in the request. 1. Fly Cruise 2. Ex-UK Cruise 3. Cruise - Cabin Only | Fly Cruise |
| cruiseOffersResponse/cruiseOffers/cruisePackageID | String | This is an internal ID created for every unique package. | 15369072000001536925500000TOM451615375342000001537538400000TOM4517883054863/3/1352/7ZI01 |
| cruiseOffersResponse/cruiseOffers/cruisePackageStartDate | Date | Start date of the cruise offer. ISO Date format i.e., yyyy-mm-dd | 2018-09-14 |
| cruiseOffersResponse/cruiseOffers/departurePortCode | String | Standard Municipal region code | GRCFU |
| cruiseOffersResponse/cruiseOffers/arrivalPortCode | String | Standard Municipal region code | GBNCL |
| cruiseOffersResponse/cruiseOffers/duration/numOfDays | Number | Duration of the cruise package. | 7 |
| cruiseOffersResponse/cruiseOffers/prices/currencyCode | String | Currency code returned in the offer | GBP |
| cruiseOffersResponse/cruiseOffers/prices/currencyName | String | Name of the currency returned for every offer | Sterling Pounds |
| cruiseOffersResponse/cruiseOffers/prices/totalPrice | String | Total price of the offer | 768.3 |
| cruiseOffersResponse/cruiseOffers/prices/totalPricePerPerson | String | Price of the offer displayed per travelling passenger | 100. |
| cruiseOffersResponse/cruiseOffers/prices/deposit | String | Deposit for the offer | 100. |
| cruiseOffersResponse/cruiseOffers/prices/discount | String | Discount offerred by TUI for the offer. | 75 |
| cruiseOffersResponse/cruiseOffers/prices/discountPerPerson | String | Discount offerred by TUI for the offer per travelling passenger | 20 |
| cruiseOffersResponse/cruiseOffers/itinerary/countryCode | String | Country code to which the offer returned belongs to | BRB |
| cruiseOffersResponse/cruiseOffers/itinerary/countryName | String | Country Name | Barbados |
| cruiseOffersResponse/cruiseOffers/itinerary/regionCode | String | TUI Specific 6 digit region code to which the cruise offer belongs to | L04304 |
| cruiseOffersResponse/cruiseOffers/itinerary/regionName | String | Region Name | Caribbean |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryCode | String | Unique code maintained in TUI for every itinerary. | 440505 |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryName | String | Itinerary Name | A Taste of Paradise |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryType | String | Itinerary type like back-back-cruise, one way fly cruise etc. | Back Back Cruise |
| cruiseOffersResponse/cruiseOffers/itinerary/sailingDate | Date | cruise sailing date | 2018-09-14 |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDuration | Number | Duration of the itinerary | 7 |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDays | Complex Node(Repeating) | This describes the details of the itinerary like each days details. | |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDays/day | Number | each day's details of the itinerary | 1 |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDays/timeInPortFrom | Time | Time starting from the port. ISO Time. | 07:00:00 |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDays/timeInPortTo | Time | Time reaching to the port. ISO Time. | 23:00:00 |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDays/portOfCallName | String | Port Of Call | Koper |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDays/portOfCallDescription | String | A short description of the Port of call | Set along a wide horseshoe-shaped bay, Koper's a Medieval town where old and new go hand-in-hand. Lose yourself in the maze of streets, passing historical sights and browsing chic shops along the way. |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDays/contentItem | ComplexNode | This node captures the image URL of the port of call | |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDays/contentItem/name | String | Port Of Call Image | "Port Of Call Image" |
| cruiseOffersResponse/cruiseOffers/itinerary/itineraryDays/contentItem/url | String | url of the image | https://cdn.content.tuigroup.com/adamtui/2016_9/28_17/79544ba3-1995-4f87-9aa0-a68f0124c54b/LIB_SHU_13_F1412WebOriginalCompressed.jpg?i10c=img.resize(width:1080);img.crop(width:1080%2Cheight:608) |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/shipCode | String | TUI's specific 6 digit ship code | 055816 |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/shipName | String | Ship Name | Marella Discovery 2 |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/shipDescription | String | A brief description about the ship | Marella Discovery 2 is the sister ship to Marella Discovery – and this is why their names are so similar. Having two ships means you’re able to pair a wider choice of itineraries with the exciting features offered by this larger, more contemporary style of vessel. These include an outdoor cinema, a rock climbing wall, a minigolf course, an indoor pool and a glossy atrium. Not to mention the range of bars, excellent dining scene and night-time shows enhanced by up-to-the-minute technology. Just like Marella Discovery, Marella Discovery 2 is All Inclusive as standard. So, drinks, including prosecco and cider, meals in a selection of restaurants and most onboard activities are included in the cruise price. Flights and tips are both part of the package, too. |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/shipFacilities | String | A brief description about the facilities available in the ship | • 6 restaurants • 7 bars • 2 lounges • Casino • 4 whirlpools • 2 swimming pools • Minigolf • Rock climbing wall |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/shipUSPS | String | Unique selling points of the ship | Everyone goes All Inclusive. |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/numOfCabins | Number | Number of cabins in the ship | 918 |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/cabinType/code | String | Cabin code | ZI01 |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/cabinType/name | String | Cabin name | Inside Cabin |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/deckNumber | String | Deck number | Decks 2/3 Inside Cabin |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/boardType/code | String | Board basis code | HB |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/boardType/name | String | Board basis name | Half Board |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/contentItem | Complex Node | This node captures the Ship image url | |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/contentItem/name | String | Name of the image url | "Ship Image URL" |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/contentItem/url | String | Ship image url | https://cdn.content.tuigroup.com/adamtui/2017_10/12_9/5992c13a-6592-4880-a239-a80a00977876/CRU_DIS2_17_F040_NEWWebOriginalCompressed.jpg?i10c=img.resize(width:1080)%3Bimg.resize(height:608)%3Bimg.crop(width:1080%2Cheight:608) |
| cruiseOffersResponse/cruiseOffers/itinerary/contentItem/name | String | Name of the image url | "Itinerary Image URL" |
| cruiseOffersResponse/cruiseOffers/itinerary/contentItem/url | String | Itinerary image url | https://cdn.content.tuigroup.com/adamtui/2016_9/29_12/f868e43a-1ef2-4320-9ceb-a69000d62175/LIB_SHU_14_F220WebOriginalCompressed.jpg?i10c=img.resize(width:1080);img.resize(height:608);img.crop(width:1080%2Cheight:608) |
| cruiseOffersResponse//cruiseOffers/contentItem/name | String | Deeplink to Itinerary Page | Itinerary Page |
| cruiseOffersResponse//cruiseOffers/contentItem/url | String | https://www.tui.co.uk/cruise/bookitineraries/Adriatic-Explorer-055816?itineraryCodeOne=055816&itineraryCodeTwo=&shipCode=150013&mc=false&isMCTracs=false&isStayBefore=false&stayDuration=0&cruiseDuration=7&duration=7&noOfAdults=2&noOfChildren=0&childrenAge=&from[]=LGW:Airport&flexibility=true&noOfSeniors=0&when=14-09-2018&sailingDate=14Sep18&to[]=L34373:CruiseArea&packageId=15369072000001536925500000TOM451615375342000001537538400000TOM4517883054863/3/1352/7ZI01&index=1&brandType=null&addAStay=0&cabin[]=1,2&dp=LGW&bb=AI&cabinOnly=false&room=&mcId=055816\|T&searchVariant=FLY_CRUISE_ATCOM | |
| cruiseOffersResponse/cruiseOffers/flightOffers/originAirportCode | String | IATA airport code for the Departure Airport | LGW |
| cruiseOffersResponse/cruiseOffers/flightOffers/destinationAirportCode | String | IATA airport code for the Arrival Airport | CFU |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment | Complex( Occurs twice) | Captures details of the flights for each flight route i.e., Outbound and Inbound | - |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/routeCode | String | Route code captured with in TUI Systems for every flight route. | CFULGW5BLGWCFU |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/flightNum | String | Flight number | TOM4516 |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/direction | String | Direction of the flight. For ex: Outbound/Inbound | Outbound |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/numOfStops | String | Number of Transits. 0 if its direct flight else the number of transits for each segment. | 0 |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/flightDuration/hours | Number | Number of hours in the flight duration | 4 |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/flightDuration/minutes | Number | Minutes | 30 |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/contentItem | Complex Node | This node captures the Ship image url | |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/carrierCode | String | Flight carrier code | TOM |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/departure | Complex(Repeating) | Captures the flight departure details for every leg | |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/departure/airportCode | String | IATA Airport code | LGW |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/departure/date | Date | Flight departure date in ISO Format i.e., yyyy-mm-dd | 2018-04-14 |
| cruiseOffersResponse/cruiseOffers/itinerary/ship/contentItem | Complex Node | This node captures the Ship image url | |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/departure/time | Time | Flight departure Time in ISO Format i.e., hh:mm:ss | 08:30:00 |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/arrival | Complex(Repeating) | Captures the flight arrival details for every leg | |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/arrival/airportCode | String | IATA Airport code | CFU |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/arrival/date | Date | Flight arrival date in ISO Format i.e., yyyy-mm-dd | 2018-04-14 |
| cruiseOffersResponse/cruiseOffers/flightOffers/flightSegment/arrival/time | Time | Flight arrival Time in ISO Format i.e., hh:mm:ss | 10:30:00 |
| cruiseOffersResponse/cruiseOffers/flightOffers/contentItem/ | Complex (Repeating) | Repeating node to capture Inbound and Outbound flight logo's | - |
| cruiseOffersResponse/cruiseOffers/flightOffers/contentItem/name | String | Inbound Flight Logo or Outbound Flight Logo | - |
| cruiseOffersResponse/cruiseOffers/flightOffers/contentItem/URL | String | Image URL | https://www.tui-brandnet.com/static/system/modules/com.tui.brandnet.bootstrap/1.3.0/resources/img/logo.svg |
Error Message Structure
In addition to the standard HTTP response code, failed API calls contain error information in the message body. Gateway errors generally relate to access control or an invalid API key, while API-generated errors describe invalid request content or downstream processing failures. Cruise Offers API error codes range from E001 to E999.
Below is the list of errors currently available in API. Kindly note this is not a definitive list as we may add the additional conditions based on the requirement. Hence, please use them for reference.
| ErrorCode | ErrorMessage |
|---|---|
| E001 | Please enter all the required mandatory fields <cruiseType>,<departureMonth>, <departureYear>,<duration>, <numOfAdults>, <sellingMarketCode>, <destination> in the request |
| E002 | Please specify departuire point(airportCode or portCode) |
| E003 | Exceeding number of allowed departure points |
| E004 | Atleast one adult must be travelling |
| E005 | Age of all children must be specified |
| E006 | Child age must be less than 18 years |
| E007 | Only 9 passengers are currently supported for our web bookings. |
| E008 | For legal reasons, the number of infants needs to be same or less than number of adults |
| E009 | Please specify valid duration for your package |
| E010 | Market and Geography does not match. Kindly refine your search criteria. |
| E011 | For Cruise - Cabin Only booking, overseas port codes alone are accepted for departure. Kindly refine your search criteria. |
| E012 | For Fly Cruise type of booking, Only departure airport codes are allowed. Kindly refine your search criteria. |
| E013 | For Ex-UK Cruise booking , Only UK Departure points (airportcodes or portcodes) are accepted. |
| E014 | Currently TUI Ireland cruise bookings are not supported. |
| E015 | Unable to Connect to Search Service |
| E016 | No matching accoms(shipID) |
| E017 | Request not supported |
| E018 | Invalid parameter |
| E019 | Request timed out before search results returned |
Warning Message Structure
In addition to errors, the API may return warnings. These provide supplementary information and may indicate that the search criteria should be refined or that the returned result has a minor data gap. Cruise Offers API warning codes range from W001 to W999.
Below is the list of warnings currently available in API. Kindly note this is not a definitive list as we may add the additional conditions based on the requirement. Hence, please use them for reference.
| WarningCode | Warning Message |
|---|---|
| W001 | Unable to route to Itinerary page for the package Id<packageID> |
| W002 | No offers available for the given destination and the selected month and year |
| W003 | Itinerary Image URL for the Itinerary <itinerary> not available |
| W004 | Ship image url for the ship name<shipname> not available |
| W005 | Outbound flight logo URL for the carrierCode<carrierCode> not available |
| W006 | Inbound flight logo URL for the carrierCode:<carrierCode> not available |
| W007 | Not all accommodation Images are available for <accomName> |
| W008 | Room Image not available for the room <roomName> in the hotel <accomName> |
| W009 | Inbound flight logo URL for the carrierCode:<carrierCode> not available |
| W010 | There are no cruise packages for the given destination<destination> |
Support
For support, contact TIBCO Operations Support.
