Hotel Products
Modified on: 2025-07-29 14:40
TABLE OF CONTENTS
Hotel Products
The Retrieve Hotel Products API enables distributors to fetch detailed product offerings for a specific hotel, such as room and rate combinations, along with product status (Active/Inactive). This step is essential for managing the availability of products within a distributor’s system.
Distributors can use this API to:
- Retrieve the list of products available for a particular hotel.
- Sync product data regularly (daily is preferred) to ensure accurate and up-to-date information.
GET /hotel/{supplierId}/{hotelId}?distributorId={distributorId} HTTP/1.1 URL: {BookingUSB-Endpoint}/hotel/{supplierId}/{hotelId}?distributorId={distributorId} Authorization: 53ac07777cdffac2d53000002d698728ce964432d7167596bc005c5fc Accept-Encoding: gzip Content-Encoding: gzip Content-Type: application/json;charset=utf-8
Hotel Products Request Schema
Request(METHOD: GET) | |||||
---|---|---|---|---|---|
Level | Field Name | Data Type | Required | Description | Example |
1 | supplierId | string | Y | The code that uniquely identifies a supplier in DerbySoft's system | HILTON |
1 | hotelId | string | Y | Hotel IDs provided by hotel suppliers. Accepted characters only: 1. Digits (0-9) 2. Uppercase letters (A-Z) 3. Hyphen ('-') | 100001 GATHI 00016 PEP-B3T2 B8W7 |
1 | distributorId | string | Y | The code that uniquely identifies a distributor in DerbySoft's system. | TUI |
Hotel Products Request Example
Sample URL: https://solo.derbysoft-test.com/bookingusbv4/hotel/GOHOTEL/GOH103?distributorId=ABCDE
Hotel Products Response Schema
Response | |||||
---|---|---|---|---|---|
Level | Field Name | Data Type | Required | Description | Example |
1 | hotelId | string | Y | The code that uniquely identifies a Hotel in the hotel suppliers system. Accepted characters only: 1. Digits (0-9) 2. Uppercase letters (A-Z) 3. Hyphen ('-') | GATHI |
1 | hotelName | string | N | Hotel name in supplier's system | This is a test hotel |
1 | supplierId | string | Y | The code that uniquely identifies a supplier in DerbySoft's system | HILTON |
1 | status | enum | Y | Enum: [ Actived, Deactived ] Hotel Status provided by hotel suppliers [ Actived, Deactived]: Actived means the hotel is active for the distribution. Deactived means the hotel is NOT active for the distribution. ARI will not flow for deactivated hotels | Actived |
1 | chainCode | string | N | Unique identifier for the hotel chain or group, assigned by the chain’s central system. This code is used to consistently identify the parent brand or hotel group that a property belongs to across systems and distribution channels. e.g., Hyatt, Hilton. Independent hotels don't have Chain codes | Marriott |
1 | brandCode | string | N | Unique identifier for the hotel brand, assigned by the hotel group’s central system. This code represents the specific brand under which a property operates (e.g., Courtyard, DoubleTree) and is used to categorize and differentiate properties within the same hotel chain. Independent hotels don't have Chain codes | Waldorf |
1 | longitude | string | N | Geographic coordinate that specifies the east–west position of the hotel on the Earth's surface. The longitude value is part of the geolocation data provided by the hotel system and is used for mapping, proximity searches, and location-based services in distribution platforms. | 41.40338 |
1 | latitude | string | N | Geographic coordinate that specifies the north–south position of the hotel on the Earth's surface. The latitude is provided by the hotel system and is used for mapping the property's location, enabling geolocation-based searches and distance calculations in distribution platforms. | 2.17403 |
1 | city | string | N | Name of the city or locality where the hotel is physically located. | / |
1 | country | string | N | Name of the country where the hotel is physically located. | / |
1 | state | string | N | Name of the state where the hotel is physically located. | / |
1 | currency | string | N | The currency code of the hotel. | USD |
1 | address | array | N | Street address of the hotel, provided as an ordered array of address lines. This array captures the full physical address of the property and supports formatting flexibility across global address structures. Each element in the array represents a single address line. Support up to five enumeration values. | [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ] |
1 | phone | object | N | Primary phone number for the hotel, provided by the hotel system. | / |
2 | @countryAccessCode | string | C | International dialing code is used to place calls to the country where the hotel is located. | / |
2 | @areaCityCode | string | N | Telephone area or city dialing code used within the country to reach the hotel's geographic region. This code is part of the complete phone number and is typically placed after the countryAccessCode and before the local subscriber number. | / |
2 | @phoneNumber | string | C | Local subscriber phone number of the hotel, excluding the country access code and area/city code. This is the core numeric portion used for direct dialing once the full international prefix has been resolved. | / |
1 | settings | object | N | An additional field is used for transmitting extra settings, accounts, etc, that are required by Distributors. | { "key": "value" } |
1 | extensions | object | N | This additional field will consist of a cluster code and its corresponding rate plan IDs. Only use for certain providers. | { "key1": "value1", "key2": "value2" } |
1 | ariType | enum | Y | Emun: [ Daily, LOS ] Defines the pricing model applied to a rate amount or value over time. The AryType indicates whether the rate is calculated on a daily or as a length-of-stay (LOS). | Daily |
1 | timezone | string | Y | Time zone in which the hotel is physically located. | America/Los_Angeles |
1 | rateType | enum | Y | Emun: [ AmountBeforeTax, AmountAfterTax, Both ] "Specifies the tax-inclusion status of the rate amount provided by the hotel system in ARI and Reservation. This field indicates whether the rate is expressed before taxes (ABT), after taxes (AAT), or Both. AmountBeforeTax: only AmountBeforeTax is pushed out to distributors, and only AmountBeforeTax is sent back to the supplier. AmountAfterTax: only AmountAfterTax is pushed out to distributors, and only AmountAfterTax is sent back to the supplier. Both: AmountBeforeTax & AmountAfterTax will be pushed to Distributors. | AmountBeforeTax |
1 | maxChildAge | integer | N | Maximum age, in years, that a guest can be classified as a child according to the hotel's policy. Only provided if childRateType is ByAge. | / |
1 | childRateType | enum | N | Enum: [ Normal, ByAge, Free, AsAdult ] "Indicates which child rate type will be used in ARI OccupancyRate. [Normal, ByAge, Free, AsAdult] Normal: This is the default option, hotels provide rates for a combination of adults and children. ByAge: Hotels provide extra child pricing based on age bands, maxChildAge field will be provided as well as extraChildRates nodes will be provided in ARI. Free: Hotels indicate children as free of charge to stay, maxChildAge may be provided. AsAdult: Hotels indicate children will be charged the same rate as adults for their stay." | ByAge |
1 | products | array | Y | Collection of product elements offered by the hotel | / |
2 | @roomId | string | Y | Unique identifier for a room type, assigned by the hotel's system (PMS or CRS). | King |
2 | @rateId | string | Y | Unique identifier for a rate plan, assigned by the hotel system (CRS, PMS, or channel manager). | BAR |
2 | @rateModel | enum | N | Enum: [Retail, Net ] Rate model of the product | Retail |
2 | @connectionType | enum | N | Enum: [Exchange, Standard ] Indicates the connection type of products. Notes: If the connection type is not specified or labeled as "Standard", neither the "rateModel" nor the "commissions" field/node will appear. | Standard |
2 | @stayType | enum | N | Enum: [ OverNightRoom, DayUseRoom ] This tag indicates if the product is specifically for day-use or regular overnight use [OverNightRoom, DayUseRoom]. The default is OverNightRoom. | OverNightRoom |
2 | @status | enum | Y | Enum: [ Actived, Deactived ] Indicates the current operational or distribution state of an entity [Actived, Deactived], such as a hotel, room type, rate plan, or product. | Actived |
2 | @roomName | string | N | Display name of the room type, as provided by the hotel system. Max length: 256 | King Room |
2 | @roomDescription | string | N | Detailed textual description of the room type, provided by the hotel system for display across distribution channels. | Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings. |
2 | @rateName | string | N | Display name of the rate type, as provided by the hotel system. Max length: 256 | Best Available Rate |
2 | @rateDescription | string | N | Detailed textual description of the rate type, provided by the hotel system for display across distribution channels. | Begin your day with a hearty meal |
2 | occupancy | / | Y | Defines the maximum allowed occupancy for a room type, rate plan, or product. This includes the number of adults, children, and total guests that can be accommodated according to hotel policy and system configuration. | / |
3 | @maxAdult | integer | Y | Maximum number of adult guests allowed in the room type or product, as defined by the hotel’s policy. | 3 |
3 | @maxChild | integer | Y | Maximum number of child guests allowed in the room type or product, as defined by the hotel’s policy. | 2 |
3 | @maxOccupancy | integer | Y | Defines the maximum allowed occupancy for a room type, rate plan, or product. | 3 |
2 | @paymentType | enum | N | Enum: [ PayLater, PayNow ] Specifies the payment model associated with the booking or rate plan [PayLater, PayNow]. The paymentType indicates whether the guest pays at the time of booking (PayNow) or at the hotel (PayLater). | PayNow |
2 | guarantee | / | N | Defines the guarantee requirements for holding a reservation. | / |
3 | @guaranteeType | string | C | Guarantee information for this room rate. | CCG |
2 | cancelPolicies | / | N | A collection of cancellation policies, each defining a specific set of rules based on timeframes, booking/stay dates, or penalty conditions. The cancelPolicies object enables hotels to apply different policies depending on the situation, such as seasonality, advance notice, or rate plan types. | / |
3 | dateRange | object | N | Specifies the date range during which the cancellation policy is applicable. | / |
4 | @startDate | string | C | The starting date of a validity period during which a specific policy is applicable. YYYY-MM-DD | 2028-01-01 |
4 | @endDate | string | C | The ending date of a validity period during which a specific policy is applicable. YYYY-MM-DD | 2028-01-04 |
3 | cancelPolicy | object | N | Defines the rules and penalties applied when a guest cancels a reservation. The cancelPolicy object specifies conditions such as how far in advance cancellation is allowed, whether penalties apply, and how those penalties are calculated. | / |
4 | @code | string | C | Unique identifier assigned to a specific cancellation policy. Max Length: 128 | AD100P_100P |
4 | @description | string | N | Explanation of the cancellation policy terms. Max Length: 1024 | Non Refundable |
4 | cancelPenalties | / | Y | Details about the cancellation Penalty | / |
5 | @noShow | boolean | Y | When true, it means the penalty charge is applied for No-Show, and the cancellable and cancelDeadline nodes won't appear. | true |
5 | @cancellable | boolean | N | Indicates if cancellation is allowed or not. If false, it cannot be canceled. If true, the cancelDeadline node will appear. | true |
5 | cancelDeadline | / | N | Specifies the time-based condition by which a guest must cancel to avoid the cancellation penalty. | / |
6 | @offsetTimeDropType | enum | N | Enum: [ BeforeArrival ] An enumerated type indicates when the deadline drop time goes into effect. Being the only current value available is BeforeArrival. | BeforeArrival |
6 | @offsetTimeUnit | enum | N | Enum: [ D, H ] D is used to express days. H is used to express hours. | / |
6 | @offsetTimeValue | number | N | The number of hours or days for the offset. | 1 |
6 | @deadline | string | N | The cutoff date and time by which a guest must cancel their reservation to avoid the cancellation penalty, expressed in the hotel's local time zone. like 4 PM, 6 PM | / |
5 | penaltyCharge | / | Y | Defines the charge rule applied as a penalty when a guest cancels after the allowed deadline. | / |
6 | @chargeBase | enum | N | Enum: [ FullStay, NightBase ] If FullStay, it will be a percentage or an amount. If NightBased, the nights are required. | / |
6 | @nights | number | N | Exists if the penalty charge is based on the night, like the first night | / |
6 | @amount | number | N | Exists if the penalty charge is a flat charge, like USD 30.00 | / |
6 | @percent | number | N | Exists if the penalty charge is a percent, like 15.5 means 15.5% | / |
2 | fees | / | N | Represents a list of additional charges applied to the reservation, including both taxes and fees. | / |
3 | dateRange | / | N | Specifies the date range during which the fees are applicable. | / |
4 | @startDate | string | C | The starting date of a validity period during which a specific policy is applicable. YYYY-MM-DD | 2028-01-01 |
4 | @endDate | string | C | The ending date of a validity period during which a specific policy is applicable. YYYY-MM-DD | 2028-01-04 |
3 | fee | object | N | Represents a single fee or tax item applied to the product. | / |
4 | @name | string | C | The name of the fee or tax | Service Charge |
4 | @type | enum | C | Enum: [ Inclusive, Exclusive ] Indicates whether fees or tax are included in the amount before tax or not. | Exclusive |
4 | @amount | number | C | Amount value of fee or tax | 10 |
4 | @amountType | enum | C | Enum: [ Fix, Percent ] Indicates how to charge the tax, 10% per room per night in this example. | Percent |
4 | @chargeType | enum | C | Enum: [ PerRoomPerNight, PerPersonPerNight, PerRoomPerStay, PerPersonPerStay ] Indicates how the fee is charge[PerRoomPerNight, PerPersonPerNight, PerRoomPerStay, PerPersonPerStay] | PerRoomPerNight |
4 | @paymentType | enum | N | Enum: [ PayLater, PayNow ] Indicates if the fee is prepaid to hotels(PayNow) or paid at the hotel(PayLater). [PayLater, PayNow] Note: The 'paymentType' field will be replaced by 'collectBy' and removed from the API in the future. | PayNow |
4 | @collectBy | enum | N | Enum: [Distributor, Property ] Indicates that the fee (e.g., City Tax, Tourist Tax) should be collected by the hotel(Property) at check-in or by distributors when guests make a reservation(Distributor). | Distributor |
4 | @effectivePerson | number | N | It indicates the fee will be charged starting from which occupancy, such as the "Extra Person Charge" fee. The EffectivePerson is 3, meaning an extra fee will be applied from the third person onward. | 3 |
2 | bookingChannels | array[string ] | N | Field use with certain suppliers | ["channel1", "channel2" ] |
2 | sourceMarkets | array[string ] | N | Sold to specific markets | ["region1", "region2" ] |
2 | productAddons | array[object ] | N | / | |
3 | @type | string | C | product addon type | DisneyTicket |
3 | @required | boolean | C | Indicate whether the addon must be chosen with the room | true |
3 | candidateCodes | array[string ] | Y | / | ["code1", "code2" ] |
2 | commissions | array[object ] | N | / | / |
3 | @startDate | string | N | Start date of date range, expressed YYYY-MM-DD | 2028-01-01 |
3 | @endDate | string | N | End date of commission, expressed YYYY-MM-DD | 2028-01-04 |
3 | @value | number | C | Commission value | 10 |
3 | @type | enum | C | Enum: [ Percent, Amount ] Commission type | Percent |
1 | error | string | N | error response | Key not authorized |
1 | errorCode | string | C | error response | InvalidField |
1 | errorMessage | string | C | error response | Invalid Message |
Hotel Products Response Example
{ "hotelId": "GATHI", "hotelName": "This is a test hotel", "supplierId": "HILTON", "status": "Actived", "chainCode": "Hilton", "brandCode": "Hampton", "longitude": "41.40338", "latitude": "2.17403", "city": "string", "country": "string", "state": "string", "currency": "USD", "address": [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ], "phone": { "countryAccessCode": "string", "areaCityCode": "string", "phoneNumber": "string" }, "settings": { "key1": "value1", "key2": "value2" }, "extensions": { "key1": "value1", "key2": "value2" }, "ariType": "Daily", "timezone": "America/Los_Angeles", "rateType": "AmountBeforeTax", "maxChildAge": 17, "childRateType": "ByAge", "products": [ { "roomId": "10000101", "rateId": "123456", "stayType": "OverNightRoom", "status": "Actived", "roomName": "Double Room", "roomDescription": "Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings.", "rateName": "Bar Rate", "rateDescription": "Begin your day with a hearty meal.", "occupancy": { "maxAdult": 3, "maxChild": 2, "maxOccupancy": 3 }, "paymentType": "PayNow", "guarantee": { "guaranteeType": "CCG" }, "cancelPolicies": [ { "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "cancelPolicy": { "code": "1D1N_1N", "description": "Cancellations or changes to bookings for this room will be charged the first night of the booking in 1 day before arrival date, if no show, will be charged the first night of the booking.", "cancelPenalties": [ { "noShow": false, "cancellable": true, "cancelDeadline": { "offsetTimeDropType": "BeforeArrival", "offsetTimeUnit": "D", "offsetTimeValue": 1 }, "penaltyCharge": { "chargeBase": "NightBase", "nights": 1 } }, { "noShow": true, "penaltyCharge": { "chargeBase": "NightBase", "nights": 1 } } ] } } ], "fees": [ { "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "fee": { "name": "Service Charge", "type": "Exclusive", "amount": 10, "amountType": "Percent", "chargeType": "PerRoomPerNight", "paymentType": "PayNow", "collectBy": "Distributor", "effectivePerson": 0 } }, { "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "fee": { "name": "City Tax", "type": "Exclusive", "amount": 5, "amountType": "Fix", "chargeType": "PerPersonPerNight", "paymentType": "PayLater", "collectBy": "Property", "effectivePerson": 0 } } ], "bookingChannels": [ "channel", "channel" ], "sourceMarkets": [ "region", "region" ], "productAddons": [ { "type": "DisneyTicket", "required": true, "candidateCodes": [ "code", "code" ] } ] } ] }
{ "hotelId": "GATHI", "hotelName": "This is a test hotel", "supplierId": "HILTON", "status": "Actived", "chainCode": "Hilton", "brandCode": "Hampton", "longitude": "41.40338", "latitude": "2.17403", "city": "string", "country": "string", "state": "string", "currency": "USD", "address": [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ], "phone": { "countryAccessCode": "string", "areaCityCode": "string", "phoneNumber": "string" }, "settings": { "key1": "value1", "key2": "value2" }, "extensions": { "key1": "value1", "key2": "value2" }, "ariType": "Daily", "timezone": "America/Los_Angeles", "rateType": "AmountBeforeTax", "maxChildAge": 17, "childRateType": "ByAge", "products": [ { "roomId": "10000101", "rateId": "123456", "rateModel": "Retail", "connectionType": "Exchange", "stayType": "OverNightRoom", "status": "Actived", "roomName": "Double Room", "roomDescription": "Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings.", "rateName": "Bar Rate", "rateDescription": "Begin your day with a hearty meal.", "occupancy": { "maxAdult": 3, "maxChild": 2, "maxOccupancy": 3 }, "paymentType": "PayNow", "guarantee": { "guaranteeType": "CCG" }, "cancelPolicies": [ { "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "cancelPolicy": { "code": "1D1N_1N", "description": "Cancellations or changes to bookings for this room will be charged the first night of the booking in 1 day before arrival date, if no show, will be charged the first night of the booking.", "cancelPenalties": [ { "noShow": false, "cancellable": true, "cancelDeadline": { "offsetTimeDropType": "BeforeArrival", "offsetTimeUnit": "D", "offsetTimeValue": 1 }, "penaltyCharge": { "chargeBase": "NightBase", "nights": 1 } }, { "noShow": true, "penaltyCharge": { "chargeBase": "NightBase", "nights": 1 } } ] } } ], "fees": [ { "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "fee": { "name": "Service Charge", "type": "Exclusive", "amount": 10, "amountType": "Percent", "chargeType": "PerRoomPerNight", "collectBy": "Distributor", "effectivePerson": 0 } }, { "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "fee": { "name": "City Tax", "type": "Exclusive", "amount": 5, "amountType": "Fix", "chargeType": "PerPersonPerNight", "collectBy": "Property", "effectivePerson": 0 } } ], "bookingChannels": [ "channel", "channel" ], "sourceMarkets": [ "region", "region" ], "productAddons": [ { "type": "DisneyTicket", "required": true, "candidateCodes": [ "code", "code" ] } ], "commissions": [ { "startDate": "2018-01-01", "endDate": "2018-01-04", "value": 10, "type": "Percent" } ] } ] }
{ "hotelId": "GATHI", "hotelName": "This is a test hotel", "supplierId": "HILTON", "status": "Actived", "chainCode": "Hilton", "brandCode": "Hampton", "longitude": "41.40338", "latitude": "2.17403", "city": "string", "country": "string", "state": "string", "currency": "USD", "address": [ "AddressLine1", "AddressLine2", "AddressLine3", "AddressLine4", "AddressLine5" ], "phone": { "countryAccessCode": "string", "areaCityCode": "string", "phoneNumber": "string" }, "settings": { "key1": "value1", "key2": "value2" }, "extensions": { "key1": "value1", "key2": "value2" }, "ariType": "Daily", "timezone": "America/Los_Angeles", "rateType": "AmountBeforeTax", "maxChildAge": 17, "childRateType": "ByAge", "products": [ { "roomId": "10000101", "rateId": "123456", "rateModel": "Net", "connectionType": "Exchange", "stayType": "OverNightRoom", "status": "Actived", "roomName": "Double Room", "roomDescription": "Soak in city views in our Deluxe room, which features a well-appointed ensuite bathroom and up-to-date entertainment offerings.", "rateName": "Bar Rate", "rateDescription": "Begin your day with a hearty meal.", "occupancy": { "maxAdult": 3, "maxChild": 2, "maxOccupancy": 3 }, "paymentType": "PayNow", "guarantee": { "guaranteeType": "CCG" }, "cancelPolicies": [ { "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "cancelPolicy": { "code": "1D1N_1N", "description": "Cancellations or changes to bookings for this room will be charged the first night of the booking in 1 day before arrival date, if no show, will be charged the first night of the booking.", "cancelPenalties": [ { "noShow": false, "cancellable": true, "cancelDeadline": { "offsetTimeDropType": "BeforeArrival", "offsetTimeUnit": "D", "offsetTimeValue": 1 }, "penaltyCharge": { "chargeBase": "NightBase", "nights": 1 } }, { "noShow": true, "penaltyCharge": { "chargeBase": "NightBase", "nights": 1 } } ] } } ], "fees": [ { "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "fee": { "name": "Service Charge", "type": "Exclusive", "amount": 10, "amountType": "Percent", "chargeType": "PerRoomPerNight", "collectBy": "Distributor", "effectivePerson": 0 } }, { "dateRange": { "startDate": "2018-01-01", "endDate": "2018-01-04" }, "fee": { "name": "City Tax", "type": "Exclusive", "amount": 5, "amountType": "Fix", "chargeType": "PerPersonPerNight", "collectBy": "Property", "effectivePerson": 0 } } ], "bookingChannels": [ "channel", "channel" ], "sourceMarkets": [ "region", "region" ], "productAddons": [ { "type": "DisneyTicket", "required": true, "candidateCodes": [ "code", "code" ] } ] } ] }
{ "error": "Key not authorized" }
{ "errorCode": "InvalidField", "errorMessage": "Invalid Message" }
Did you find it helpful? Yes No
Send feedback