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:
Access the response from the attractions/search.
Copy the unique identifier (
id) of the attraction you wish to retrieve details for.Use the attraction id in your request to the /attractions/details endpoint.
You can use a single
idto 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
| Field | Description | Notes / Examples |
|---|---|---|
| badges | Highlights notable selling points of the attraction. | Examples: • best_seller – most popular attractions.• guest_pickup – offers guest pickup service. |
| categories | Identifies the type of attraction. | Possible values: • tours• travel_services_rental• workshop_classes• museums_arts_culture• nature_outdoor• entertainment_tickets• food_drinks |
| duration | Estimated time spent at the tour, in ISO 8601 format. | Example: PT2H = 2 hours. Only applicable to tours. See Duration conventions for more details. |
| photos | Retrieves images of the attraction. | The url field points to the image resource. |
| locations | Lists 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_description | Provides a detailed description of the attraction experience. | — |
| ratings | User 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_languages | Lists available languages for the attraction experience. | Example: a city tour may be offered in multiple languages. |
| urls | Provides 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.
Recommended storage practices
✓ 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.
- 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.
- Explore the Search for attractions guide to learn how to make search requests.
- Learn how to display the attraction details in your platform.
- Check the Quick guide for instructions on implementing the Search and Look flow.