How to Search for Activities with Filters
The search endpoint returns available activities for a destination. You can apply a wide range of filters to narrow results by category, price, duration, time of day, and more.
Endpoint
POST {{api_host}}/api/ext/activity/search
Headers
| Header | Required | Description |
|---|
x-api-key | Yes | Your Xeni API key |
Content-Type | Yes | application/json |
Request Body
| Parameter | Type | Required | Description |
|---|
destinationId | string | Yes | The destination ID from the autocomplete endpoint. |
filterItem | object | No | Filter and sort options. See below. |
offSet | integer | No | Pagination offset. Defaults to 0. |
limit | integer | No | Number of results to return. Defaults to 50. |
currency | string | No | Currency code for pricing (e.g., "USD"). |
includePriceRange | boolean | No | When true, includes the overall price range in the response. Defaults to false. |
Filter Item Object
| Parameter | Type | Description |
|---|
sortOrder | string | Sort results. Options: "asc", "desc", "isFeatured", "durationAsc", "durationDesc". |
tagIds | array of integers | Filter by tag IDs obtained from the tags endpoint. |
title | string | Free-text search within activity titles (e.g., "private transfer"). |
popularity | array of strings | Filter by popularity attributes. |
specials | array of strings | Filter by special offers. |
priceRange | array | Price range filter as [min, max]. |
priceRangeLow | array | Low price range filter as [min, max]. |
durations | array of strings | Filter by activity duration. |
timeOfDays | array of strings | Filter by time of day. |
startDate | string | Filter activities starting on or after this date. |
endDate | string | Filter activities ending on or before this date. |
Popularity Options
| Value | Description |
|---|
"Kid friendly" | Activities suitable for children. |
"Taking safety measures" | Activities with enhanced safety protocols. |
"Virtual Experience" | Virtual or online activities. |
"Good to avoid crowd" | Activities in less crowded settings. |
Specials Options
| Value | Description |
|---|
"FREECANCELLATION" | Activities offering free cancellation. |
"DEALSANDDISCOUNT" | Activities with active deals or discounts. |
"LIKELYTOSELLOUT" | Popular activities likely to sell out. |
Duration Options
| Value | Description |
|---|
"Up to 1 hour" | Activities lasting less than 1 hour. |
"1 hour to 4 hours" | Activities lasting 1 to 4 hours. |
"4 hours to 1 day" | Half-day to full-day activities. |
"1 day to 3 days" | Multi-day activities. |
"3 days +" | Extended multi-day activities. |
Time of Day Options
| Value | Description |
|---|
"6 am to 12 pm" | Morning activities. |
"12 pm to 5 pm" | Afternoon activities. |
"5 pm to 12 am" | Evening and night activities. |
Example Request
JSON
{
"destinationId": "737",
"filterItem": {
"sortOrder": "isFeatured",
"tagIds": [
12026
],
"title": "",
"popularity": [
"Kid friendly"
],
"specials": [
"FREE_CANCELLATION"
],
"priceRange": [
0,
500
],
"durations": [
"1 hour to 4 hours"
],
"timeOfDays": [
"6 am to 12 pm"
],
"startDate": "2026-04-01",
"endDate": "2026-04-07"
},
"offSet": 0,
"limit": 50,
"currency": "USD",
"includePriceRange": false
}
Pagination
Use the offSet and limit parameters to paginate through results. For example, to fetch the second page of 50 results:
JSON
{
"destinationId": "737",
"offSet": 50,
"limit": 50,
"currency": "USD"
}
Usage Notes
- All filter parameters within
filterItem are optional. Omit any filter you do not need. - You can combine multiple filters in a single request. All filters are applied together (AND logic).
- The
title field performs a free-text search across activity names, which is useful for finding specific experiences like transfers or specific tours. - Set
includePriceRange to true on the first request if you need to build a price slider in your UI.
Next Steps
Once you have search results, retrieve full details for an activity. See How to Get Activity Details.