Last updated

Attractions search - use cases 3.2 Beta

Explore common ways to search for attractions and experiences using the Demand API.


Use the /attractions/search endpoint to retrieve available experiences, activities, and tickets for a given location or set of filters.

The following examples show how to structure typical search requests for different traveller use cases.

Attractions by countries

A partner wants to show all attractions in the Netherlands and Belgium during a traveller’s trip across both countries.

  1. Obtain the country codes for the Netherlands and Belgium from /common/locations/countries endpoint.
  2. Use the returned codes as the destination in your request.
  3. Specify dates and currency.
{
  "currency": "EUR",
  "countries": ["nl", "be"],
  "dates": {
    "start_date": "2025-11-18",
    "end_date": "2025-11-20"
  },
  "rows": 20,
  "sort": { "by": "most_popular" }
}

Search by city

Use a city ID to return attractions in that area.

This is the most common use case for travellers exploring things to do in a specific destination.

A couple looking for attractions in Amsterdam in Spanish or French.

  1. Obtain the id for Amsterdam from /locations/cities endpoint.
  2. Use the returned city id (-2140479) as the destination in your search.
  3. Specify dates and languages.

Example request

{
  "currency": "EUR", //This is mandatory
  "cities": [
    2140479
  ],
  "dates": {
    "start_date": "2025-11-18",
    "end_date": "2025-11-20"
  },
    "supported_languages": [
      "es",
      "fr"
    ]
  },

Search by attraction IDs

A partner already stores attraction IDs and wants to fetch updated pricing and cancellation details.

Example:

{
  "currency": "EUR",
  "attractions": ["PR0dwCIbnsiU", "AFd2wcIjMauX"],
  "dates": {
    "start_date": "2025-11-18",
    "end_date": "2025-11-20"
  }
}

There is maximum of 100 attraction IDs per request.

Search by coordinates (geo-based)

A business traveller looking for an overnight stay in Amsterdam, who wants attractions close to the Amsterdam Central Station.

For this case, use latitude and longitude rather than city as the destination, to retrieve nearby attractions.

This is ideal for mobile apps or experiences where the traveller’s current location is known.

  1. Call /common/locations/landmarks with Amsterdam's id (-2140479) to obtain the list of key landmarks in Amsterdam and coordinates.
  2. Copy the latitude and longitude of Amsterdam Central Station.
  3. Set the returned coordinates and radius to 1 KM for the search.
  4. Sort the results by nearest_location, to prioritise attractions closest to the station.
{
  "currency": "EUR",
  "cities": [
    2140479
  ],
  "coordinates": {
    "latitude": 52.3676,
    "longitude": 4.9041,
    "radius": 1
  },
  "dates": {
    "start_date": "2025-11-18",
    "end_date": "2025-11-20"
  },
  "sort": {
    "by": "nearest_location"
  }
}
}

Search with filters

Apply filters such as supported languages and/or minimum review score/count to refine results.

Filtering helps partners surface relevant results and improve traveller experience.

Example:

{
  "currency": "EUR",
  "cities": [
    2140479,
    2800866
  ],
  "dates": {
    "start_date": "2025-09-18",
    "end_date": "2025-09-20"
  },
  "filters": {
    "rating": {
      "minimum_review_score": 4.2,
      "minimum_review_count": 100
    },
    "supported_languages": [
      "en",
      "es",
      "fr",
      "de"
    ]
  },
  "rows": 50,
  "sort": {
    "by": "most_popular"
  }
}

Best practices

  • Use pagination parameters to manage large result sets.
  • Combine geo and filter parameters for hyperlocal, personalised recommendations.
  • Sort options typically include highest_review_score, nearest_location, most_popular, and lowest_price_first.
  • Always pass the affiliate ID header to ensure correct attribution.

Curious to know more?