Search And Availability Response
Response
| Attribute | Type | Description |
|---|---|---|
| search_id | string | Unique ID for the search request (valid for 15 minutes). |
| no_of_hotels | integer | The number of hotels in the response |
| no_of_rooms | integer | The number of rooms requested for |
| no_of_nights | integer | The number of nights the rooms are requested for |
| no_of_children | integer | Number of children |
| no_of_infants | integer | Number of Infants |
| no_of_adults | integer | Number of adults |
| checkin | date | Check-in date |
| checkout | date | Check-out date |
| hotels | array | An array of hotels with availability information. Hotel is described below. |
| more_results | boolean | true if there are more results in cache(i.e hotels or rates still getting processed due to the response delays from our upstreams). You should collect more results by calling Re-Fetch Availability with search ID endpoint at regular intervals till you get more_results as false. |
Hotel
| Attribute | Type | Description |
|---|---|---|
| hotel_code | string | Unique GRN hotel code |
| name | string | Name of the hotel |
| recommended | boolean | true if the hotel is recommended by at least one top supplier |
| min_rate | object | Contains the lowest price within a given hotel for the given search criteria. Returned only if ‘concise’ rates are requested in the search request. See “rate” for more info. To get all the rates you should call Re-fetch Availability for a Single Hotel endpoint. |
| geolocation | object | Geolocation of the hotel |
| category | float | The star category of the hotel |
| address | string | Address of the hotel |
| rates | array | An array of all available rates for a hotel. Returned only if ‘comprehensive’ rates are requested. The Rate element is described below. |
Rate
| Attribute | Type | Description |
|---|---|---|
| rate_key | string | Unique code representing the rate. REQUIRED, to be included when making a booking request. |
| rate_type | string | Possible values are ‘bookable’, ‘refetch’ and ‘recheck’. If rate_type = ‘recheck’, you must use re-check endpoint before booking. If rate_type = ‘refetch’, you must use re-fetch availability for hotel-code before booking. |
| rate_comments | object | Object of dynamic key value pairs. Eg: { “comments”: “Rate comments come here”, “price_comments”: “Extra beds on demand YES (without additional debit notes). Wi-fi YES (without additional debit notes) . Minimum check-in age 21. . The person whose name is on the reservation must be at least 21 years of age to check in.\nThe hotel offers cribs and parking (self/valet) at an addtional fee paid locally at the hotel check in by guest\n” } |
| non_refundable | boolean | true if the rate is Non-refundable. Ignore the cancellation_policies if non_refundable is true. Otherwise, cancellation policies apply. |
| room_code | string | Room code representing the rooms in the rate. REQUIRED, to be included when making a booking request. |
| no_of_rooms | integer | Number of rooms included in this rate |
| group_code | string | Represents a group of related rates. When booking multiple rates, you must use rates from the same group. REQUIRED, to be included when making a booking request. |
| price | float | Price for the rooms included in this rate. |
| price_details | object | Price details. Refer below for more info. |
| currency | string | Three-letter ISO currency code of the price |
| payment_type | array | Allowed payment types: AT_WEB |
| cancellation_policy | object | Cancellation policy for the rate. See Cancellation Policy for details. |
| cancellation_policy_code | string | Code representing the cancellation policy for the rate. This is returned when cancellation policies are not available for the rate at Search Level. This shall be used for fetching cancellation policies for the rate using cancellation policy end point. |
| has_promotions | boolean | true if any promotions are included in this rate |
| promotions_details | array | Array of promotions (strings), if any |
| includes_boarding | boolean | true if boarding is included in this rate |
| boarding_details | array | Array of boarding details (strings), if available |
| other_inclusions | array | Array of other inclusions (strings), if available |
| includes_wifi | boolean | true if wi-fi is included in this rate |
| supports_amendment | boolean | true if this booking can be amended through api. Its for future use. Currently it will always false. |
| supports_cancellation | boolean | true if this booking can be cancelled through api. |
| rooms | array | Array of rooms included for this rate. See Room for details. |
| pan_required | boolean | Requirement of PAN card at booking, applies only for Indian Agents |
Price Details:
Dynamic key-value pairs, where each value is an array of charge details. These details are for display purpose only. A compliant implementation is not required to process or interpret these details.
Refer sample price_details below.
| Attribute | Type | Description |
|---|---|---|
| name | string | Name of the charge. |
| included | boolean | true if the charge is already included in the price. |
| amount_type | string | Defines the type of amount. Possible values: 1. value represents flat_fee 2. percent represents percentage |
| amount | float | flat fee or percentage value. |
| mandatory | boolean | true if this must be paid either at booking or at hotel. Otherwise, this has to be paid(at hotel) only if you need the supplement/facility. |
| currency | string | Three-letter ISO currency code |
| comments | string | Description or any notes for the charge if available. |
Sample price_details:
{
"price_details": {
"net": [
{
"name": "SupplierPrice",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": value
},
{
"name": "ServiceFee",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": value
},
{
"name": "Total",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": value
}
],
"GST": [
{
"name": "Total",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": value
}
]
}
Room
| Attribute | Type | Description |
|---|---|---|
| room_type | string | This is the room category/standardized Room Name (Must be shown on UI) |
| room_reference | string | Unique room reference for the room |
| no_of_rooms | integer | Number of rooms(included) of the same type. |
| no_of_adults | integer | Number of adults in the room |
| no_of_children | integer | Number of children in the room |
| children_ages | array | Ages of the children |
| no_of_infants | integer | Number of infants in the room |
| description | string | Room description/details ( much be shown on UI) |
| bed_types | array | Array of bed type Objects. If returned, you can choose and include bed type in the booking request. See Bed Type for details |
| max_room_occupancy | object | An object representing maximum room occupancy. This will be returned when no_of_adults is not available. See Max Room Occupancy for details. |
We recommend to show both Room_type & description on UI to the customer as both fields together gives customer full information about room
Max Room Occupancy
| Attribute | Type | Description |
|---|---|---|
| max_pax | integer | Maximum number of total guests allowed in the room |
| max_adults | integer | Maximum number of adults allowed in the room |
| max_children | integer | Maximum number of children allowed in the room |
Bed Type Object
| Attribute | Type | Description |
|---|---|---|
| id | integer | Bed type id |
| type | string | Bed type name/description |
Geolocation
| Attribute | Type | Description |
|---|---|---|
| latitude | float | Latitude of the hotel |
| longitude | float | Longitude of the hotel |
Cancellation Policy
| Attribute | Type | Description |
|---|---|---|
| under_cancellation | boolean | true if the booking is under cancellation, i.e. cancellation charges will apply should a cancellation be made later. |
| cancel_by_date | datetime | Last date for cancellation without charges. Mutually-exclusive with “under_cancellation” being true. The time zone will be IST (Indian Standard Time). |
| no_show_fee | object | Charges for no show. An Object with the following fields: amount_type: represents the type of value. As mentioned below. currency: Three-letter ISO currency code |
| amount_type | string | Defines the type of value in details: value: represents amount percentage: represents percentage nights: represents charges in number of nights. For nights, in some cases, percentage is also returned. In those cases charges have to be calculated by taking (percentage x nights) value. |
| details | array | List of cancellation windows and applicable charges. Refer policy details below. |
| policy_text | string | Description of applicable cancellation-policies in string format if available. |
Policy Details:
| Attribute | Type | Description |
|---|---|---|
| from | datetime | Date from which the charge in this window applies |
| allowed_cancellation | boolean | false represents the booking cannot be cancelled from the date given |
| nights | integer | Charges in number of nights. |
| percent | float | Charges in percentage |
| flat_fee | float | Amount of money charged |
| currency | string | Three-letter ISO currency code |
Error Codes
| HTTP Status Code | Error Code | Description |
|---|---|---|
| 401 | 1102 | Invalid API key |
| 200 | 1501 | No availability for the requested search criteria |
| 200 | 1502 | No hotels found for the query |
| 200 | 5101 | Field[name] is required. Ex: checkin is required |
| 200 | 5102 | Field[name] value/type is invalid Ex: rooms value/type is invalid |
| 200 | 5103 | Invalid hotel category |
| 200 | 5106 | Children ages should be between 0 and 11 (Less than 12) |
| 200 | 5108 | Check-In and check-out dates must be valid, and in ISO8601 format (YYYY-MM-DD) |
| 200 | 5109 | Check-In date cannot be older than today |
| 200 | 5110 | Stay cannot exceed 30 days |
| 200 | 5111 | Check-out date must be greater than check-in date |
Sample Search Response
{
"search_id": "d3kmmkyqvuhyi7pnrkcm5szkvu",
"no_of_rooms": 2,
"no_of_nights": 1,
"no_of_hotels": 2,
"no_of_children": 1,
"no_of_adults": 3,
"hotels": [
{
"recommended": true,
"rates": [
{
"supports_cancellation": true,
"supports_amendment": false,
"rooms": [
{
"room_type": "200432",
"no_of_rooms": 1,
"no_of_children": 1,
"no_of_adults": 2,
"description": "Executive Double or Twin Room - Non Refundable BB",
"children_ages": [
3
],
"bed_types": [
{
"type": "2 twin beds",
"id": 25
},
{
"type": "1 queen bed",
"id": 15
}
]
},
{
"room_type": "200432",
"no_of_rooms": 1,
"no_of_children": 0,
"no_of_adults": 1,
"description": "Executive Double or Twin Room - Non Refundable BB",
"bed_types": [
{
"type": "2 twin beds",
"id": 25
},
{
"type": "1 queen bed",
"id": 15
}
]
}
],
"room_code": "4ddfznbt7quczuc3",
"rate_type": "bookable",
"rate_key": "wknvbnjq4n6sjr2qusmwaags4hn2zxhz6czoztzjr",
"rate_comments": {
"tax_information": "SalesTax and HotelOccupancyTax(if charged) are included in TaxAndServiceFee",
"price_comments": "Extra beds on demand YES (without additional debit notes). Wi-fi YES (without additional debit notes) . Minimum check-in age 21. . The person whose name is on the reservation must be at least 21 years of age to check in.\nThe hotel offers cribs and parking (self/valet) at an addtional fee paid locally at the hotel check in by guest\n"
},
"price_details": {
"surcharge_or_tax": [
{
"name": "TaxAndServiceFee",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": 1064.42
}
],
"hotel_charges": [
{
"name": "MandatoryTax",
"included": false,
"currency": "INR",
"amount_type": "value",
"amount": 290.03
}
],
"net": [
{
"name": "Net",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": 18805.01
}
]
},
"price": 18805.01,
"payment_type": [
"AT_HOTEL"
],
"other_inclusions": [
"Free Wireless Internet"
],
"non_refundable": true,
"no_of_rooms": 2,
"includes_wifi": true,
"includes_boarding": true,
"has_promotions": false,
"group_code": "wsdbjylcxn4uf",
"currency": "INR",
"cancellation_policy": {
"under_cancellation": true,
"details": [
{
"percent": 100,
"from": "2016-11-22T07:59:56.491271",
"currency": "INR"
}
],
"amount_type": "percent"
},
"boarding_details": [
"Breakfast Buffet"
]
},
{
"supports_cancellation": true,
"supports_amendment": false,
"rooms": [
{
"room_type": "28076",
"no_of_rooms": 1,
"no_of_children": 1,
"no_of_adults": 2,
"description": "City Room",
"children_ages": [
3
]
}
],
"room_code": "43fevnb45bouroa",
"rate_type": "bookable",
"rate_key": "nhzihyw3fvlaj5xq5ua2dcgfb6oxye4wktlutu3vs",
"price_details": {
"net": [
{
"name": "Net",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": 8773.25
}
]
},
"price": 8773.25,
"payment_type": [
"AT_WEB"
],
"non_refundable": false,
"no_of_rooms": 1,
"includes_wifi": null,
"includes_boarding": true,
"has_promotions": false,
"group_code": "wcobnyltrv3xhbq",
"currency": "INR",
"cancellation_policy_code": "wcobnyltrv3xhbqi7lhg2f6q4hj2ns5c6g663vl6",
"boarding_details": [
"Bed & Breakfast"
],
"pan_required" : true,
},
{
"supports_cancellation": true,
"supports_amendment": false,
"rooms": [
{
"room_type": "28076",
"no_of_rooms": 1,
"no_of_children": 0,
"no_of_adults": 1,
"description": "City Room"
}
],
"room_code": "47eevnb45bouroa",
"rate_type": "bookable",
"rate_key": "cmg5hph74uaq6qghgwbthpxr5cmtuxec5liojekowzhzspwdpa2v4",
"price_details": {
"net": [
{
"name": "Net",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": 8193.34
}
]
},
"price": 8193.34,
"payment_type": [
"AT_WEB"
],
"non_refundable": false,
"no_of_rooms": 1,
"includes_wifi": null,
"includes_boarding": true,
"has_promotions": false,
"group_code": "wcobnyltrv3xhbq",
"currency": "INR",
"cancellation_policy_code": "wcobnyltrv3xhbqi7lhg2f6q4hj2ns5c6g663vl6",
"boarding_details": [
"Bed & Breakfast"
],
"pan_required" : true,
}
],
"name": "Lutecia Smart Design Hotel",
"hotel_code": "H!0049396",
"geolocation": {
"longitude": -9.138914,
"latitude": 38.746067
},
"country": "PT",
"city_code": "C!000555",
"category": 4,
"address": "Av. Frei Miguel Contreiras 52 1749-086 Lisboa"
},
{
"rates": [
{
"supports_cancellation": true,
"supports_amendment": false,
"rooms": [
{
"room_type": "DBL.PI",
"no_of_rooms": 1,
"no_of_children": 1,
"no_of_adults": 2,
"description": "DOUBLE PREMIUM",
"children_ages": [
3
]
}
],
"room_code": "4pgvlzuyy",
"rate_type": "BOOKABLE",
"rate_key": "4phflmrx4avcjfstusngchgu4pjop6hdlqrp55lh4ium4ph6tdrrn6nciw",
"promotions_details": [
"Child discount -90.66",
"Exclusive discount 25.90"
],
"price_details": {
"net": [
{
"name": "Net",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": 20309.01
}
]
},
"price": 20309.01,
"payment_type": [
"AT_WEB"
],
"non_refundable": false,
"no_of_rooms": 1,
"includes_wifi": false,
"includes_boarding": true,
"has_promotions": true,
"group_code": "xgirbylkwb6xtg",
"currency": "INR",
"cancellation_policy": {
"under_cancellation": false,
"details": [
{
"from": "2016-12-25T00:00:00",
"flat_fee": 20309.01,
"currency": "INR"
}
],
"cancel_by_date": "2016-12-24T00:00:00",
"amount_type": "value"
},
"boarding_details": [
"BED AND BREAKFAST"
],
"allotment": 2
},
{
"supports_cancellation": true,
"supports_amendment": false,
"rooms": [
{
"room_type": "DBL.PI",
"no_of_rooms": 1,
"no_of_children": 0,
"no_of_adults": 1,
"description": "DOUBLE PREMIUM"
}
],
"room_code": "4phf3kr64ercplzuyy",
"rate_type": "BOOKABLE",
"rate_key": "4far7zqeuaoqtl436otsfyhfgjuk6cbhakoooro2mwn7x5k34sumyop7d7t2s6nhq",
"promotions_details": [
"Exclusive discount 23.31"
],
"price_details": {
"net": [
{
"name": "Net",
"included": true,
"currency": "INR",
"amount_type": "value",
"amount": 18619.31
}
]
},
"price": 18619.31,
"payment_type": [
"AT_WEB"
],
"non_refundable": false,
"no_of_rooms": 1,
"includes_wifi": false,
"includes_boarding": true,
"has_promotions": true,
"group_code": "xgirbylkwb6xtg",
"currency": "INR",
"cancellation_policy": {
"under_cancellation": false,
"details": [
{
"from": "2016-12-25T00:00:00",
"flat_fee": 18619.31,
"currency": "INR"
}
],
"cancel_by_date": "2016-12-24T00:00:00",
"amount_type": "value"
},
"boarding_details": [
"BED AND BREAKFAST"
],
"allotment": 2
}
],
"name": "behotelisboa",
"hotel_code": "H!0432594",
"geolocation": {
"longitude": -9.14528,
"latitude": 38.7234
},
"country": "PT",
"city_code": "C!000555",
"category": 4,
"address": ""
}
],
"checkout": "2016-12-30",
"checkin": "2016-12-29"
}