image

Hotel details describe the building. Nearby attractions describe what sits around it: airports, landmarks, restaurants, beaches, transit, and natural sites, each with a distance. You already have a hotel_id from search or from details. This call does not take a city name.

👉 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

Search with GET /v1/booking/hotels/search-by-coordinates or open GET /v1/booking/hotels/details, then pass hotel_id here. Rooms, reviews, and availability are separate calls on that same id. They do not return this place list. There is no follow-up id on an airport or a landmark in these routes.


Places around one hotel

Endpoint: GET /v1/booking/hotels/nearby-attractions

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

Parameters

  • hotel_id — required integer
  • language — optional, default en-us
  • include_ski — optional boolean, default false
  • include_commute — optional boolean, default false
  • max_airports — optional, default 3, max 10
  • max_landmarks — optional, default 10, max 20
  • max_restaurants — optional, default 3, max 20
  • max_beaches — optional, default 5, max 10
  • max_transport — optional, default 2, max 10
  • max_natural — optional, default 1, max 10

Matching distance caps are max_airport_distance (default 100), max_landmark_distance (default 20), max_restaurant_distance (default 50), max_beach_distance (default 10), max_transport_distance (default 20), and max_natural_distance (default 15). Raising a max_* count returns more places in that group, up to the max on that parameter. include_ski adds ski places when you set it true. include_commute fills the commute field. It defaults to false, so commute is null unless you turn it on. Distance text is still on distance.localized either way.

Python

import requests

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

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

attractions = payload.get("body", {}).get("attractions", {})
for airport in attractions.get("airports", [])[:5]:
    print(airport.get("name"), airport.get("distance", {}).get("localized"))

Annotated sample

{
  "id": "67559",
  "name": "Will Rogers World Airport",
  "type": "airport",
  "location": { "latitude": 35.3953, "longitude": -97.5962 },
  "distance": { "raw": 5.238, "localized": "3.3 mi" },
  "commute": null
}

Store name, type, and distance.localized. distance.raw is the numeric distance. location is the place, not the hotel. commute stays null until include_commute is true. Groups live under body.attractions: airports, beaches, landmarks, public_transport, and natural_beauty are lists. dining is an object with restaurants and cafe_bars. meta.categories_found tells you which of those groups came back. body.summary.total_items counts places across them.


Practical use

A hotel with no beach still returns the call. That group is simply absent. Read meta.categories_found before you assume beaches or airports exists.

The default max_natural is 1 and max_transport is 2. If a category looks short, raise its max_* parameter. Do not raise it past the max in the list above.

This list is not the hotel’s own address. The address is on hotel details, location.formatted_address. Use that when you want the property, and this endpoint when you want what is around it.

👉 Get your API key and open nearby places: https://steadyapi.com/register

How to Get a Property Estimate Using SteadyAPI Oct 14, 2026

How to Get a Property Estimate Using SteadyAPI

Current and historical value for one property id. The optional bounds are calendar dates, not year counts.

How to Read a Tweet Using SteadyAPI Oct 13, 2026

How to Read a Tweet Using SteadyAPI

Read one tweet by id. The text and counts are on legacy. meta.reply_count is how many replies were included.

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.