Use the /attractions/details endpoint to retrieve static information for one or more attractions.
- You can look up attractions by their IDs, city IDs or country codes.
- Use the response to build an attraction detail page or enrich attraction search results. It includes information such as names, descriptions, locations, categories, photos, ratings, supported languages and point-of-interest IDs.
The /attractions/details endpoint does not return pricing or live availability. Use /attractions/search when you need current prices and availability.
Send a POST request with one of the following lookup fields:
Lookup field | Use it to | Limits |
|---|---|---|
attractions | Retrieve details for specific attractions. Use IDs from /attractions/search or a curated list. | 1–100 attraction IDs |
cities | Retrieve details for attractions located in specified cities. Get city IDs from /common/location/cities. | 1–5 city IDs |
countries | Retrieve details for attractions located in specified countries. Use ISO 3166-1 alpha-2 country codes from /common/locations/countries. | 1–3 country codes |
Choose only one lookup field in a request. Do not combine attractions, cities and countries.
Use attraction IDs returned by /attractions/search to retrieve details for matching search results. You can also provide a curated list of attraction IDs.
{
"attractions": [
"PRTcWzDlwXjP",
"PRahAzWtTraa"
],
"languages": ["en-gb"]
}Use city IDs to retrieve details for attractions located in a city. Get supported IDs from /common/location/cities.
{
"cities": [-2156821, -2140479],
"languages": ["en-gb"]
}Use country codes to retrieve details for attractions located in those countries. Country codes must use the ISO 3166-1 alpha-2 format.
{
"countries": ["nl", "be"],
"languages": ["en-gb"]
}Field | Description |
|---|---|
languages | Language for localised attraction details. Supply one IETF BCP 47 language code, such as en-gb. Defaults to en-gb. |
rows | Maximum number of results to return. Defaults to 20; the supported range is 10–500. |
page | Pagination token from metadata.next_page in the previous response. |
If the response includes metadata.next_page, pass its value as page in the next request to retrieve the next page. Continue until the response no longer includes a next-page token.
The response contains a data array with an object for each attraction returned. Each object has an id and can include the following fields:
Field | Description |
|---|---|
id | Unique identifier for the attraction. |
name, long_description | Localised name and detailed description. |
categories | Category IDs. Use /attractions/constants to map them to localised category names. These IDs can also be used as filters.categories values in /attractions/search. |
locations | Location details, including location type and, where available, address, city, country, post code and coordinates. |
photos | Image URLs. |
duration | Estimated time spent at the attraction, in ISO 8601 duration format. For example, PT2H means two hours. |
ratings | Average score and number of reviews. The score is on a 0–5 scale. |
badges | Badges that indicate notable features of the attractio such as best_seller or guest_pickup. |
supported_languages | Languages in which the attraction or experience is available. |
urls | Web and app links for the attraction detail page and search results. |
points_of_interest | IDs of associated points of interest, such as venues or landmarks. An attraction can take place at, visit or pass a point of interest. The array can contain multiple IDs and is empty when no point of interest is associated. Note: These IDs are not the landmark IDs returned by /common/locations/landmarks. |
{
"request_id": "01fr9ez700exycb98w90w5r9sh",
"data": [
{
"id": "PRTcWzDlwXjP",
"badges": ["best_seller"],
"categories": ["PTCMCuXtHgrC", "PTCMCY1Fkppn"],
"duration": "PT2H",
"photos": [
{
"url": "https://cf.bstatic.com/xdata/images/xphoto/500x375/170335205.jpg"
}
],
"points_of_interest": [109912],
"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", "en-us", "nl"],
"urls": {
"app": {
"detail": "booking://attractions/product?slug=pr0dwcibnsiu-rijksmuseum-admission&aid=956509",
"search_results": "booking://attractions/searchresults?ufi=-2140479&pinned_product_id=PR0dwCIbnsiU&aid=956509"
},
"web": {
"detail": "https://www.booking.com/attractions/nl/pr0dwcibnsiu-rijksmuseum-admission.html?aid=956509",
"search_results": "https://www.booking.com/attractions/searchresults/nl/amsterdam.en-gb.html?pinned_product=PR0dwCIbnsiU&aid=956509"
}
}
}
],
"metadata": {
"next_page": "<next-page-token>"
}
}The points_of_interest field contains IDs only; it does not contain the point of interest’s name or other details, to get this information, you need to use the /attractions/points-of-interest endpoint.
- Use /attractions/points-of-interest to look up these IDs and retrieve localised names, coordinates, city and country IDs, and Booking.com web search-results links.
- The IDs returned by that endpoint match the IDs in
points_of_interestfrom /attractions/details.
An attraction can have several associated IDs, for example when a tour visits multiple venues. The field is empty when the attraction has no associated point of interest, which is the case for most smaller attractions.
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).
- 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.
- 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, look and redirect flow.
- See the Attractions API reference.