Perform an availability request for a single property
/availability/{propertycode}
NAME | TYPE | RANGE / SET | REQUIRED | DEFAULT | EXAMPLE | NOTES |
---|---|---|---|---|---|---|
checkin | date (ISO 8601) | from today to (today + 3 years) |
YES | – | &checkin=2024-11-05 | |
checkout | date (ISO 8601) |
from (checkin + 1) to (checkin + 30) |
NO* | checkin + 1 day | &checkout=2024-11-12 | When used, number of nights is automatically calculated. Limitations apply (see nights). |
nights | integer | 1 – 30 | NO* | 1 | &nights=2 | |
adults | integer | 1 – max capacity | NO | 2 | &adults=2 | The value is PER ROOM. Maximum value is automatically calculated based on the property's maximum possible room capacity. |
children | integer | 0 – (max capacity-1) | NO | 0 | &children=1 | The value is PER ROOM. Maximum value equals (maximum capacity - 1). |
infants | integer | 0 – (max capacity-1) | NO | 0 | &infants=1 | The value is PER ROOM. Maximum value equals (maximum capacity - 1). |
rooms | integer | 1 – 5 | NO | 1 | &rooms=2 | |
party | JSON string | NO** | - |
One room: &party=[{"adults": 2}] Two rooms with mixed occupancies: &party=[{"adults":2, "children":[2,6]},{"adults":3}] |
Array of JSON objects representing number of adults and children. "adults": (REQUIRED - integer) The number of adults staying in the room. "children": (OPTIONAL - array of integers) The ages of any children staying in the room. |
* Use either checkout or nights, never both. checkout parameter takes precedence if both present.
** Use either party or rooms + adults + children + infants, never both. party parameter takes precedence if both present.
NAME | TYPE | RANGE / SET | REQUIRED | DEFAULT | EXAMPLE | NOTES |
---|---|---|---|---|---|---|
room | string | varchar(4000) | NO | – | &room=DBL &room=DBL,TRP,SUITE |
Room code or comma delimited list of room codes. Only returns availability for specified room type(s) |
rate | integer | NO | – | &rate=448033 | Only returns availability for specified rate | |
board | integer | 1 – 23 | NO | – | &board=19 &board=3,19,21 |
Returns rates with specified board |
NAME | TYPE | RANGE / SET | REQUIRED | DEFAULT | EXAMPLE | NOTES |
---|---|---|---|---|---|---|
remote_country | string | ISO 3166-1-alpha-2 | NO† | – | &remote_country=US |
Specifies remote user's country. Use ip address geolocation. Required for working with markets. |
remote_ip | string | Dot-decimal notation | NO† | – | &remote_ip=94.71.170.105 |
Specifies remote user's ip address. Alternative to country. Required for working with markets. Only IPv4 supported. |
device | string | MOBILE DESKTOP |
NO* | – | &device=MOBILE |
Specified user device. Used to unlock special pricing policies. |
bk_code | string | varchar(255) | NO | – | &bk_code=SPECIALRATES | Returns private rates that are enabled by specified booking code |
voucher | string | varchar(255) | NO | – | &voucher=VCH123 | Unlocks special offers |
offer_id | integer | 1+ | NO | – | &offer_id=214365 |
Returns only rates participating in this offer. Offer IDs can be retrieved with the Offer Search API |
breakdown | boolean | NO | false | &breakdown=1 | Returns rate's price daily breakdown. | |
offline | boolean | NO | false | &offline=1 | Returns all rates, even those not available. | |
payments | boolean | NO | true for Travel Agents, false for all the others | &payments=1 | Returns payments & cancellation_fees fields. | |
taxes | boolean | NO | false | &taxes=1 | Returns tax breakdown. |
† You can use remote_country or remote_ip. If you use both, remote_country takes precedence and remote_ip is ignored.
{ "method": "http://rest.reserve-online.net/availability/DEMO", "http_method": "GET", "http_code": 200, "error_code": "OK", "error_msg": "", "params": [ { "type": "URL", "name": "checkin", "value": "2024-11-05" }, { "type": "URL", "name": "checkout", "value": "2024-11-12" } ], "data": { "code":STRING, // Property code "name":STRING, // Property name "currency":ISO 4217, // Rate currency ISO code "url": { "website":URL, // Property website url (empty if not defined) "info":URL, // API URL for property info request "engine":URL, // Property booking engine url (empty if not defined) "photo":URL, // Property photo url - Small size (empty if not defined) "photoM":URL, // Property photo url - Medium size (empty if not defined) "photoL":URL // Property photo url - Large size (empty if not defined) }, "location": { "lat":DECIMAL, // Property latitude (empty if not defined) "lon":DECIMAL // Property longitude (empty if not defined) }, "rates": [ // List of rates { "id":INTEGER, // Rate ID "type":STRING, // Room type code "room":STRING, // Room type name "rate":STRING, // Rate name "rate_desc":STRING, // Rate description "payment_policy":STRING, // Rate payment policy description "payment_policy_id":INTEGER, // Rate payment policy id (for internal use) "cancellation_policy":STRING, // Rate cancellation policy description "cancellation_policy_id":INTEGER, // Rate cancellation policy id (for internal use) "cancellation_penalty":STRING, // Rate cancellation penalty description "remaining":INTEGER, // Remaining available rooms "cancellation_expiry":ISO 8601, // Free cancellation expiry date timestamp (empty if no free cancellation is set) "board":INTEGER // Board ID (empty if not defined). See Board Types "url": { "engine":URL, // Booking engine availability url with the specified parameters "rate":URL, // API URL for rate info request "room":URL, // API URL for room info request "photo":URL, // Photo url - Small size (empty if not defined) "photoM":URL, // Photo url - Medium size (empty if not defined) "photoL":URL // Photo url - Large size (empty if not defined) }, "pricing": { "stay":MONEY, // Room price (exclusive of extras and taxes) "extras":MONEY, // Extras amount "taxes":MONEY, // Taxes amount "excluded_charges":MONEY, // Excluded charges amount "price":MONEY, // Total rate price. This is the final price in case of booking. "discount":MONEY, // Discount amount. Indicates if the rate is an offer. Appears only for Hotelier API accounts "margin":MONEY, // Difference between retail and NET price. Appears only for Travel Agent/Corporate accounts }, (Appears only for Travel Agent/Corporate accounts. Can be used as a threshold to determine your markup. A NET rate may not always be derived from a retail rate. In this case, the retail price is the same as the NET price.) "retail": { "stay":MONEY, // Retail room price (exclusive of extras and taxes) "extras":MONEY, // Retail extras amount "taxes":MONEY, // Retail taxes amount "excluded_charges":MONEY, // Retail excluded charges amount "price":MONEY, // Retail total rate price "discount":MONEY, // Retail discount amount. Indicates if the rate is an offer. }, "payments": [ { "due":ISO 8601, // Payment due date "amount":MONEY // Amount to be paid until the above date } ], "cancellation_fees": [ { "after":ISO 8601, // Cancellation fee is applied if the reservation is cancelled after this date "fee":MONEY // Cancellation fee amount that applies after the above date } ], "days": [ // Pricing per day breakdown (exists only when breakdown=1 parameter is used) { "date":ISO 8601, // Date in ISO 8601 format "min_stay":INTEGER, // Minimum stay in days. Optional, exists only when > 1. "max_stay":INTEGER // Maximum stay in days. Optional, exists only when defined. "checkin":BOOLEAN, // 1=Check-in is allowed, 0=Check-in not allowed (optional, default=1) "status":STRING, // Availability status other than "AVL", appears only if for offline=1. See Availability Status Codes "remaining":INTEGER, // Remaining available rooms "price":MONEY, // Room final price "initial":MONEY, // Room initial price "discount":MONEY, // Price discount } ], "taxes": [ // Tax breakdown (exists only when taxes=1 parameter is used) { "tax_id":INTEGER, // Tax ID. Use the data.taxes array to get details about each tax. "value":MONEY // Total amount for this tax } ], (status & status_descr appear only when offline=1 parameter is used) "status":STRING, // Availability status code. See Availability Status Codes "status_descr": STRING, // Availability status title. See Availability Status Codes "labels": [ // Optional. Exists only if labels are defined for the rate. { "code":STRING, // Enumerated value. See Rate Labels. More new values may be added at any time. "title":STRING // Simple label description } ] } ], "taxes": [ // Tax information lookup table (exists only when taxes=1 parameter is used) { "tax_id":INTEGER, "order":INTEGER, "description":STRING, "included":INTEGER, // 1=Included in price, 0=Applied on top of the final price, -1=Collected separately/payable at property "per_room":BOOLEAN, // 1=True, 0=False "per_day":BOOLEAN, // 1=True, 0=False "per_adult":BOOLEAN, // 1=True, 0=False "per_child":BOOLEAN, // 1=True, 0=False "per_infant":BOOLEAN, // 1=True, 0=False "fromd":ISO 8601, "tod":ISO 8601, "type":STRING, // ABS=Flat Amount, MU_PER=Percentage "value":MONEY // Unit value, may reflect percentage or flat amount } ] } }
In the example below the request was submitted with offline=1. This is why rates with statuses other than AVL were returned (e.g. SS = Stop Sales and RATE = Pricing Missing). See more in the Availability Status table