image

Hotel search and hotel details stop at the property. Room details are the list of rooms inside that property: name, size, how many guests fit, bed layouts, and photos. You already have a hotel_id. This call does not search by city.

The party you send changes the request context. The room records still describe the rooms, including occupancy and beds.

👉 To access this endpoint, you must obtain an API key: https://steadyapi.com/register


Authentication

Every call uses a Bearer token from your SteadyAPI dashboard.

Documentation:
https://docs.steadyapi.com/#authenticating-requests

headers = {
  'Authorization': 'Bearer YOUR_API_KEY'
}

Where this fits

Autocomplete is GET /v1/booking/hotels/autocomplete. Search is GET /v1/booking/hotels/search-by-coordinates. Details are GET /v1/booking/hotels/details. Take hotel_id from either search or details and call rooms. Nightly availability for a date window is GET /v1/booking/hotels/availability, which uses travel_purpose as the integer 1 or 2. This rooms call uses travel_reason instead, and the allowed words are LEISURE and BUSINESS.


Rooms for one hotel

Endpoint: GET /v1/booking/hotels/rooms

Documentation:
https://docs.steadyapi.com/#bookingcom-GETapi-v1-booking-hotels-rooms

Parameters

  • hotel_id — required integer
  • language — optional, default en-us
  • rooms — optional integer, default 1, max 5
  • adults — optional integer, default 2
  • children — optional integer, default 0
  • children_ages — optional comma-separated ages, such as 5,8
  • travel_reason — optional LEISURE or BUSINESS, default LEISURE
  • customer_type — optional ALL, FAMILY, COUPLE, SOLO, BUSINESS, or FRIENDS, default ALL
  • include_review_scores — optional boolean, default true

hotel_id picks the property. adults, rooms, children, and travel_reason are the stay context stored on meta.search_config. customer_type changes which review-score group you emphasize. include_review_scores defaults to true. Set it false when you only want room records. rooms here is a count of rooms in the stay, capped at 5. It is not a room id.

Python

import requests

url = "https://api.steadyapi.com/v1/booking/hotels/rooms"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

response = requests.get(url, headers=headers, params={
    "hotel_id": hotel["hotel_id"],
    "adults": 2,
    "rooms": 1,
})
response.raise_for_status()
payload = response.json()

for room in payload.get("body", {}).get("rooms", [])[:8]:
    print(room.get("name"), room.get("occupancy", {}).get("max_guests"))

Annotated sample

{
  "id": 257269102,
  "hotel_id": 2572691,
  "name": "King Room",
  "size": { "square_meters": null },
  "occupancy": { "max_guests": null, "max_persons": null, "max_children": null },
  "bed_configurations": [
    { "beds": [{ "type": null, "count": null, "translation": null }] }
  ]
}

Store id and name. On hotel 2572691, reviews refer to a room named King Room with id 257269102. The rooms payload fills size.square_meters, occupancy.max_guests, and the bed type, count, and translation when the property published them. Those values are null in this sketch so the keys are visible. Read the live object rather than the nulls. photos has url and thumbnail_url. meta.total_rooms is the count of rooms in body.rooms.


Practical use

body.review_scores is grouped by customer_type. Each group has scores and average_score. That block is room-page review categories, not the guest comments from GET /v1/booking/hotels/reviews. Turn it off with include_review_scores=false when you do not need it.

Do not send travel_purpose=2 to this route. That integer belongs on availability. Here the parameter is travel_reason, and the default is LEISURE.

An empty rooms list comes back with meta saying there are no rooms, rather than a hard failure, when the property has no room details. Check meta.total_rooms before you render cards.

👉 Get your API key and open the room list: https://steadyapi.com/register

How to List MLB Teams Using SteadyAPI Oct 13, 2026

How to List MLB Teams Using SteadyAPI

List MLB clubs and store the numeric id. The roster call takes that id as teamIds.

How to Get an AliExpress Description Using SteadyAPI Oct 12, 2026

How to Get an AliExpress Description Using SteadyAPI

Turn a product-detail description token into ordered text modules. The product id alone is not enough.

How to Find Vehicles for Sale Using SteadyAPI Oct 11, 2026

How to Find Vehicles for Sale Using SteadyAPI

Search vehicle listings by make, model, and ZIP. Price and mileage on each row are numbers.

How to Track Amazon New Releases Using SteadyAPI Oct 10, 2026

How to Track Amazon New Releases Using SteadyAPI

Pull one category’s new-release ranking. Store each row’s ASIN, rank, and price string.