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 idcheckin— optional check-in date,YYYY-MM-DDcheckout— optional check-out date,YYYY-MM-DD, after check-inadults— optional, default 2children— optional count, default 0rooms— optional, default 1, max 10children_ages— optional comma-separated ages whenchildrenis greater than 0language— optional, defaulten-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