Adding a new Quote - Hybrid (GraphQL) end-point that allows Push Clients to perform a price check before sending in a reservation request. This model eliminates the need for repeated search requests while ensuring price accuracy before booking.
How it works
- Receive real-time availability and rates through XML Push APIs
- Verify prices using our GraphQL based Quote- Hybrid endpoint
- Complete bookings, and modifications, and retrieve reservations through dedicated GraphQL endpoints or existing XML based integration.
Get Started
Explore the latest Hotel Trader Hybrid API specifications with our updated Postman collection for seamless integration.
Postman Collection: Hotel Trader Hybrid API Postman Collection
See below for queries and samples for both single and multi-room quote requests.
All fields in the Quote request are mandatory fields. If any fields are missing, an error and an error code will be returned in the response. For more information on the list of error codes, see the Error Codes page.
Schema
query quote($Quote: [QuoteRequestInput]) {
quote(quoteRequest: $Quote) {
aggregateGrossPrice
aggregateNetPrice
aggregateTax
aggregatePayAtProperty
consolidatedComments
rooms {
htIdentifier
grossPriceChanged
message
cancellationPolicies {
startWindowTime
endWindowTime
currency
cancellationCharge
timeZone
}
mealplanOptions {
mealplanDescription
mealplanCode
mealplanName
}
rates {
bar
binding
commissionable
commissionAmount
currency
netPrice
tax
grossPrice
payAtProperty
dailyPrice
dailyTax
aggregateTaxInfo {
payAtBooking {
description
name
value
currency
}
payAtProperty {
description
name
value
currency
}
}
}
}
}
}
Sample Requests
Single Room Request Sample
{
"Quote": [
{
"propertyCode": "DG00001",
"ratePlanCode": "HTFIT-FB",
"roomTypeCode": "R1",
"checkInDate": "2024-08-20",
"checkOutDate": "2024-08-21",
"occupancy": {
"guestAges": "30,30"
},
"rates": {
"netPrice": 108.00,
"tax": 88.00,
"grossPrice": 196.00,
"payAtProperty": 10.00,
"dailyPrice": [
108.00
],
"dailyTax": [
88.00
]
}
}
]
}
Multi Room Request Sample
{
"Quote": [
{
"propertyCode": "29847",
"ratePlanCode": "RP1",
"roomTypeCode": "TPL",
"checkInDate": "2025-07-30",
"checkOutDate": "2025-07-31",
"occupancy": {
"guestAges": "30,30"
},
"rates": {
"netPrice": 150.70,
"tax": 10.00,
"grossPrice": 160.70,
"payAtProperty": 10.00,
"dailyPrice": [
150.7
],
"dailyTax": [
10
]
}
},
{
"propertyCode": "29847",
"ratePlanCode": "RP1",
"roomTypeCode": "TPL",
"checkInDate": "2025-07-30",
"checkOutDate": "2025-07-31",
"occupancy": {
"guestAges": "30,30"
},
"rates": {
"netPrice": 150.70,
"tax": 10.00,
"grossPrice": 160.70,
"payAtProperty": 10.00,
"dailyPrice": [
150.7
],
"dailyTax": [
10
]
}
}
]
}
Sample Response
Single Room Success Response
{
"quote": {
"aggregateGrossPrice": 330.18,
"aggregateNetPrice": 300.17,
"aggregateTax": 30.01,
"aggregatePayAtProperty": 50,
"consolidatedComments": "Free Breakfast. A Resort Fee totaling EUR50.00 will be charged for the stay. Mandatory Charge. Plus applicable taxes.. Hotel Check In Policy: Major credit card required at check-in for deposit and incidentals. Any additional fees such as parking, pet fees, etc. are solely at the discretion of the hotel, are subject to change at any point and should be paid directly by the guest.. Minimum adult age at check in is 21 years.",
"rooms": [
{
"htIdentifier": "6131514161|1312101315121|1419131812141|121012131-112-11101|121012131-112-112|1816101c121e16131-1e1816131-141d1f131-191a16191-131416191715191d1b13201|1116192315111814131113191|1O1D1C22131|1K111",
"grossPriceChanged": false,
"message": "Confirm Price Success. Please proceed to Book stage.",
"cancellationPolicies": [
{
"startWindowTime": "2023-11-09 23:59:00",
"endWindowTime": "2023-11-10 16:00:00",
"currency": "EUR",
"cancellationCharge": 330.18,
"timeZone": "Europe/Istanbul"
}
],
"mealplanOptions" : {
"mealplanDescription": "Free Breakfast",
"mealplanCode": "BBF",
"mealplanName": "Free Breakfast"
},
"rates": {
"bar": null,
"binding": null,
"commissionable": false,
"commissionAmount": null,
"currency": "EUR",
"netPrice": 300.17,
"tax": 30.01,
"grossPrice": 330.18,
"payAtProperty": 50,
"dailyPrice": [
300.17
],
"dailyTax": [
30.01
],
"aggregateTaxInfo": {
"payAtBooking": [
{
"description": null,
"name": "percent",
"currency": "EUR",
"value": 30.01
}
],
"payAtProperty": [
{
"description": "Mandatory Charge. Plus applicable taxes.",
"name": "Mandatory Charge",
"currency": "EUR",
"value": 50
}
]
}
}
}
]
}
}
Multi-Room Success Response
{
"data": {
"quote": {
"aggregateGrossPrice": 321.4,
"aggregateNetPrice": 301.4,
"aggregateTax": 20,
"aggregatePayAtProperty": 46.6,
"consolidatedComments": " Room#1: A Resort Fee totaling USD23.30 will be charged at the hotel, for the stay. . Room#2: A Resort Fee totaling USD23.30 will be charged at the hotel, for the stay. . Hotel Check In Policy: Major credit card required at check-in for deposit and incidentals. Any additional fees such as parking, pet fees, etc. are solely at the discretion of the hotel, are subject to change at any point and should be paid directly by the guest.. Minimum adult age at check in is 18 years.",
"rooms": [
{
"htIdentifier": "6151112151|13241118121|1510131917161|121012151-10171-13101|121012151-10171-13111|1c1e191b1c101b161-131814171-14131d191-1a1c1f151-1b1715111c27141516111a1|111715131816121413151218101|111|XR8s8zYSJlhOBtb6KQsjvw==|RvyNmvpK5kegJHZaK2TYkw==",
"grossPriceChanged": false,
"message": "Confirm Price Success. Please proceed to Book stage.",
"cancellationPolicies": [
{
"currency": "USD",
"startWindowTime": "2025-07-29 10:00:00",
"endWindowTime": "2025-07-30 10:00:00",
"cancellationCharge": 160.7,
"timeZone": "Europe/Berlin"
}
],
"mealplanOptions": {
"mealplanDescription": "Room Only",
"mealplanCode": "RO",
"mealplanName": "Room Only"
},
"rates": {
"currency": "USD",
"dailyPrice": [
150.7
],
"dailyTax": [
10
],
"currencyCode": "USD",
"grossPrice": 160.7,
"netPrice": 150.7,
"tax": 10,
"aggregateTaxInfo": {
"payAtBooking": [
{
"name": "CITY TAX",
"value": 10,
"currency": "USD",
"description": ""
}
],
"payAtProperty": [
{
"name": "Tax2",
"currency": "USD",
"value": 13.3,
"description": ""
},
{
"name": "Resort Fee",
"currency": "USD",
"value": 10,
"description": " "
}
]
},
"payAtProperty": 23.3,
"taxInfo": {
"payAtBooking": [
{
"date": "2025-07-30",
"currency": "USD",
"name": "CITY TAX",
"description": "",
"value": 10
}
],
"payAtProperty": [
{
"date": "2025-07-30",
"currency": "USD",
"name": "Resort Fee",
"description": " ",
"value": 10
},
{
"date": "2025-07-30",
"currency": "USD",
"name": "Tax2",
"description": "",
"value": 13.3
}
]
}
}
},
{
"htIdentifier": "6151112151|13241118121|1510131917161|121012151-10171-13101|121012151-10171-13111|1c1e191b1c101b161-131814171-14131d191-1a1c1f151-1b1715111c27141516111a1|1117151318161214131512192|121|XR8s8zYSJlhOBtb6KQsjvw==|RvyNmvpK5kegJHZaK2TYkw==",
"grossPriceChanged": false,
"message": "Confirm Price Success. Please proceed to Book stage.",
"cancellationPolicies": [
{
"currency": "USD",
"startWindowTime": "2025-07-29 10:00:00",
"endWindowTime": "2025-07-30 10:00:00",
"cancellationCharge": 160.7,
"timeZone": "Europe/Berlin"
}
],
"mealplanOptions": {
"mealplanDescription": "Room Only",
"mealplanCode": "RO",
"mealplanName": "Room Only"
},
"rates": {
"currency": "USD",
"dailyPrice": [
150.7
],
"dailyTax": [
10
],
"currencyCode": "USD",
"grossPrice": 160.7,
"netPrice": 150.7,
"tax": 10,
"aggregateTaxInfo": {
"payAtBooking": [
{
"name": "CITY TAX",
"value": 10,
"currency": "USD",
"description": ""
}
],
"payAtProperty": [
{
"name": "Tax2",
"currency": "USD",
"value": 13.3,
"description": ""
},
{
"name": "Resort Fee",
"currency": "USD",
"value": 10,
"description": " "
}
]
},
"payAtProperty": 23.3,
"taxInfo": {
"payAtBooking": [
{
"date": "2025-07-30",
"currency": "USD",
"name": "CITY TAX",
"description": "",
"value": 10
}
],
"payAtProperty": [
{
"date": "2025-07-30",
"currency": "USD",
"name": "Resort Fee",
"description": " ",
"value": 10
},
{
"date": "2025-07-30",
"currency": "USD",
"name": "Tax2",
"description": "",
"value": 13.3
}
]
}
}
}
]
}
}
}
Sample Error Response
{
"errors": [
{
"message": "Property not found",
"extensions": {
"errorCode": 1117
}
}
],
"data": {
"quote": null
}
}