Last updated

Retrieve attraction details 3.2 Beta

Understand the accommodations/details endpoint, the required fields for each request, best practices and use cases.


→ Use the /attractions/details endpoint to retrieve information about a specific attraction or a list of attractions.

This data is typically displayed on the attraction page after a search, allowing travellers to learn more about the attraction before booking tickets or experiences.

Create the request body

To obtain details for a specific attraction:

  1. Access the response from the attractions/search.

  2. Copy the unique identifier (id) of the attraction you wish to retrieve details for.

  3. Use the attraction id in your request to the /attractions/details endpoint.

  • You can use a single id to retrieve details for a specific attraction.

    Example:

{
  "attractions": [
    "PRTcWzDlwXjP"
  ],
  "languages": [
    "en-gb"
  ]
}
  • Alternatively, request details for multiple attractions by providing a list of ids. This list could be:
    • Derived from the response to a previous search request.
    • A specific list curated for a particular purpose, such as promoting a selection of attractions. Example: A promotion on your search page for a specific set of attractions near a particular beach.

Example:

{
 "attractions": [
   "PRTcWzDlwXjP",
   "PRahAzWtTraa",
   "PRAmdacCwQLH"
 ],
 "languages": [
   "en-gb"
 ]
}

Optional filters

You can also retrieve attraction details based on:

  • City IDs – for attractions in specific cities. Maximum of 5 cities.
  • Country codes – for attractions in specific countries. Maximum of 3 countries.
  • Pagination – retrieve additional results using the page token from metadata.next_page.
  • Rows – maximum number of results to return (default: 20, max: 500).

Example: Retrieve attractions in multiple cities:

{
  "cities": [
    2140479,
    2800866
  ],
  "languages": [
    "en-gb"
  ],
  "rows": 50
}

Example response

The returned response includes static information about the attraction, such as name, description, location, photos, categories, duration, supported languages, ratings, and URLs.

{
  "request_id": "01fr9ez700exycb98w90w5r9sh",
  "data": [
    {
      "id": "PRTcWzDlwXjP",
      "badges": [
        "best_seller"
      ],
      "categories": [
        "museums_arts_culture"
      ],
      "duration": "PT2H",
      "photos": [
        {
          "url": "https://cf.bstatic.com/xdata/images/xphoto/500x375/170335205.jpg"
        }
      ],
      "locations": [
        {
          "address": "Museumstraat 1",
          "city": -2140479,
          "coordinates": {
            "latitude": 52.360043,
            "longitude": 4.885177
          },
          "country": "nl",
          "post_code": "1071XX",
          "type": "attraction"
        }
      ],
      "long_description": {
        "en-gb": "Discover Dutch art and history at the Rijksmuseum, home to masterpieces by Rembrandt and Vermeer."
      },
      "name": {
        "en-gb": "Rijksmuseum Admission"
      },
      "ratings": {
        "number_of_reviews": 3250,
        "score": 4.8
      },
      "supported_languages": [
        "en-gb",
        "nl"
      ],
      "url": {
        "web": "https://www.booking.com/attractions/nl/pr0dwcibnsiu-rijksmuseum-admission.html"
      }
    }
  ],
  "metadata": {
    "next_page": "eyJhbGciOiJIUzI1NiJ9.eyJwIjp7ImN1cnJlbmN5IjoiRVVSIiwicXVlcnkiOnsiY291bnRyaWVzIjpbIm5sIiwiZnIiXSwiY29vcmRpbmF0ZXMiOnsibGF0aXR1ZGUiOjUyLjM3LCJsb25naXR1ZGUiOjQuOTAsIm1heF9kaXN0YW5jZV9rbSI6MTAwLjAwfSwic3RhcnRfZGF0ZSI6IjIwMjUtMDktMjEiLCJlbmRfZGF0ZSI6IjIwMjUtMDktMjIiLCJzdXBwb3J0ZWRfbGFuZ3VhZ2VzIjpbIm5sIl0sIm1pbl9yYXRpbmciOjQuMDAsIm1pbl9yZXZpZXdfY291bnQiOjV9LCJvcmRlcl9ieSI6Im1hdGNoX3Njb3JlIiwicGFnZV9udW1iZXIiOjJ9LCJhdWQiOiIvYXR0cmFjdGlvbnMvc2VhcmNoIiwiZXhwIjoxNzU3Mzc0MzI0fQ.JUU7kbuwiCaS4n_SZANA577BvZWdqDDQizU8q6fTrg0",
    "total_results": 128
  }
}

Details information

FieldDescriptionNotes / Examples
badgesHighlights notable selling points of the attraction.Examples:
best_seller – most popular attractions.
guest_pickup – offers guest pickup service.
categoriesIdentifies the type of attraction.Possible values:
tours
travel_services_rental
workshop_classes
museums_arts_culture
nature_outdoor
entertainment_tickets
food_drinks
durationEstimated time spent at the tour, in ISO 8601 format.Example: PT2H = 2 hours.

Only applicable to tours.
See Duration conventions for more details.
photosRetrieves images of the attraction.The url field points to the image resource.
locationsLists the attraction’s related locations (e.g., entrance, meeting point).Each location includes: address, city ID, coordinates, country code, post code, and type.
Possible types: arrival, attraction, departure, entrance, guest_pickup, meeting, pickup.
long_descriptionProvides a detailed description of the attraction experience.
ratingsUser rating information.Fields:
score – average rating (0–5)
number_of_reviews – total review count.

Ratings are based on all traveller traffic across Booking.com and may not reflect your users’ experiences.
You are responsible for informing travellers about what these scores represent.
supported_languagesLists available languages for the attraction experience.Example: a city tour may be offered in multiple languages.
urlsProvides web and app URLs to access the attraction page.Includes your Affiliate ID (AID) for attribution. Use these URLs to redirect travellers to complete the booking.

Best practice - Store attraction details

Attraction data — such as descriptions, names, images and other metadata — changes infrequently and can be efficiently stored to improve performance.

To ensure fast response times and a seamless traveller experience, we recommend storing static attraction data locally and refreshing it periodically (for example, every 24 hours).

Why store static data?

  • Reduces API calls and server load.
  • Ensures faster response and rendering times for travellers.
  • Enables smooth browsing and filtering experiences in your user interface.
  • Supports localised or offline-ready attraction content.

✓ Store the response from the /attractions/details endpoint in your local system.

✓ Serve stored data in subsequent user requests (for example, when displaying attraction pages or search results).

✓ Refresh your data periodically (for example, every 24 hours) to ensure data accuracy and include any new or updated attractions.

✓ Use timestamps or logs to manage update cycles consistently across systems.

Important
  • The /attractions/details endpoint does not include incremental updates.
  • You must retrieve the full dataset each time you refresh your data. We recommend scheduling full refreshes (for example, once every 24 hours) rather than calling the endpoint per user request.

Curious to know more?