image

Hotel search returns a list of properties near a point. Details is the next call for one of those properties. You send the hotel_id from search, plus the stay if you care about price. The response is the address, the review score, the cancellation flags, and the displayed price for the dates you sent.

hotel_id comes from GET /v1/booking/hotels/search-by-coordinates. Check-in defaults to tomorrow. Check-out defaults to four days from today, which is a three-night stay starting tomorrow.

👉 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

Start with GET /v1/booking/hotels/autocomplete when the user typed a city, then GET /v1/booking/hotels/search-by-coordinates with those coordinates. Take hotel_id from a search row and call details. Rooms are GET /v1/booking/hotels/rooms. Guest comments are GET /v1/booking/hotels/reviews. A date window of nightly prices is GET /v1/booking/hotels/availability. Nearby places are GET /v1/booking/hotels/nearby-attractions. Each of those takes the same hotel_id.


Property details

Endpoint: GET /v1/booking/hotels/details

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

Parameters

  • hotel_id — required property id
  • checkin — optional check-in date, YYYY-MM-DD
  • checkout — optional check-out date, YYYY-MM-DD, after check-in
  • adults — optional, default 2
  • children — optional count, default 0
  • rooms — optional, default 1, max 10
  • children_ages — optional comma-separated ages when children is greater than 0
  • language — optional, default en-us

Dates and party size change the price block. The address and the review score stay with the property. Send checkin and checkout together when the stay is not the default three nights. checkout has to be after checkin. adults defaults to 2 and rooms defaults to 1. language changes the text, not the hotel.

Python

import requests
from datetime import date, timedelta

url = "https://api.steadyapi.com/v1/booking/hotels/details"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {
    "hotel_id": hotel["hotel_id"],
    "checkin": (date.today() + timedelta(days=14)).isoformat(),
    "checkout": (date.today() + timedelta(days=17)).isoformat(),
    "adults": 2,
    "rooms": 1,
}

response = requests.get(url, headers=headers, params=params)
response.raise_for_status()
hotel = response.json().get("body", {})
price = hotel.get("price_info", {}).get("average_price_per_night", {}).get("amount")
score = hotel.get("ratings", {}).get("internal", {}).get("score")
print(hotel.get("name"), hotel.get("location", {}).get("formatted_address"), score, price)

Annotated sample

{
  "hotel_id": 2572691,
  "name": "La Quinta by Wyndham Oklahoma City Airport",
  "location": {
    "formatted_address": "808 S Meridian Ave, Oklahoma City, OK"
  },
  "ratings": {
    "internal": { "score": 8.2, "count": 753, "total_score_text": "Very Good" }
  },
  "policies": { "free_cancellation": false, "no_prepayment": true },
  "price_info": {
    "average_price_per_night": { "amount": "$65.60" },
    "display_price": { "amount_per_stay": { "amount": "$196.80" } }
  }
}

Store hotel_id, name, and location.formatted_address. ratings.internal.score is the guest score, and total_score_text is the label that goes with it. average_price_per_night.amount is the nightly display price. display_price.amount_per_stay.amount is the stay total for the dates in the request. policies.free_cancellation and policies.no_prepayment are flags for that offer. Photo URLs sit on photos.high_res when you need an image. Ignore ufi and page_name unless you are building a Booking.com link yourself.


Practical use

Call details for the hotels you intend to show, not for every row in a long search. The price in this response belongs to the dates and the party you sent. A different checkin is a different price.

If you omit the dates, you still get a price, but it is for tomorrow through four days from today. Send both dates when the guest picked a stay. checkout must fall after checkin.

The review score here is one number. The comments behind it are the reviews endpoint. Room names and bed types are the rooms endpoint. This response does not list either.

👉 Get your API key and open a property: https://steadyapi.com/register

How to Search Rental Listings Using SteadyAPI Oct 14, 2026

How to Search Rental Listings Using SteadyAPI

Search rental listings by location. Show price.display, and move to the next page with offset.

How to Get an NHL Roster Using SteadyAPI Oct 12, 2026

How to Get an NHL Roster Using SteadyAPI

Load forwards, defensemen, and goalies for one NHL abbreviation. Player names are objects with a default field.

How to Estimate Vehicle Depreciation Using SteadyAPI Oct 11, 2026

How to Estimate Vehicle Depreciation Using SteadyAPI

Project trade-in value across years from a vehicle id, mileage, and condition. Mileage here is an integer.

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.