Search Hotels
Search the unified hotel catalogue by destination, stay dates, room occupancy, filters, and pricing mode.
iso_code returned by
Nationalities.
Request Example
Destination and Guest Inputs
Pricing Modes
instant, retain data.search_id and poll
Get Search Price Updates every two
seconds while results are visible.
Pagination and Rendering
- Use
data.next_cursorascursorin the next request. Keep the original search inputs when paging. - Use the requested
sortconsistently across cursor pages. - Merge live updates by
hotel_idand re-sort when price changes arrive. - Render
similar_hotelsas a separate nearby-properties section rather than mixing it into the main result list. - Use
fieldsonly when a smaller payload is intentional;hotel_idremains available for merging and selection.
Authorizations
Environment-specific API key created in the Unifystays portal
Headers
Body
Selected destination from the autocomplete widget. Supply the type and id exactly as returned by GET /destinations/autocomplete.
Check-in date in YYYY-MM-DD format. Must be today or a future date.
"2026-07-01"
Check-out date in YYYY-MM-DD format. Must be after check_in.
"2026-07-04"
Room configurations. Minimum 1 room, maximum 5 rooms. Each room supports up to 5 total occupants (adults + children).
1 - 5 elementsFilter results by star ratings. Pass one or more values from 1–5.
Minimum TOTAL price filter in USD cents (across all nights/rooms). Server converts to nightly unit range using computed stay multiplier.
x >= 05000
Maximum TOTAL price filter in USD cents.
x >= 1500000
Filter by property type. Values come from GET /hotels/filters → property_types.
Filter by hotel chain IDs. Values come from GET /hotels/filters → chains.
Filter by facility IDs (matches hotels.facilities[].facility_id). Multiple ids are ANDed — hotel must have all selected facilities. Values come from GET /hotels/filters → facilities.
Free-text hotel name filter. Server runs ILIKE "%name%".
"marriott"
Filter by specific hotel IDs. Useful when user wants to narrow the result set to one or more particular hotels (e.g. after picking from autocomplete). Matches hotels.hotel_id.
Nationality of the guest in ISO alpha-2 format (e.g. IN for Indian, US for United States).
"IN"
Requested hotels per page. If omitted, default page size is used.
1 <= x <= 10020
Cursor token for next-page fetch in format "sortKey_hotelId". Pass the next_cursor returned in previous response.
"1037.5_1892345"
Price sort direction for listing page. Uses precomputed sort_price_usd_cents for stable cursor pagination. If omitted, API uses recommended ranking (tier/cache/reliability first).
low_to_high, high_to_low "low_to_high"
'instant' (default): returns cached/estimated prices immediately; poll GET /hotels/search/:searchId/prices for live supplier prices. 'live': the request waits (up to ~15s) for the live supplier refresh and returns fresh prices in this single call — one-call integration for machine-to-machine rate shopping.
instant, live "instant"
Sort order. Supersedes price_sort when both are sent. recommended (default) = neutral relevance ranking; price_low_to_high / price_high_to_low = by total price; stars = star rating high→low; distance_from_center = closest to the city centre first; value = best value_pct deals first.
recommended, price_low_to_high, price_high_to_low, stars, distance_from_center, value "distance_from_center"
Sparse fieldset: return only these hotel-item fields (hotel_id is always included). Unknown names are ignored. Trims payloads for mobile / high-volume callers. Example: ["hotel_name","price","stars"].