# Filtering and sorting accommodation results v3.2

**Learn how to filter and sort accommodations when using the accommodations/search endpoint. This guide explains the supported search filters, their expected values, and how to control the sorting of your search results.**

## Overview

By default, [accommodations/search](/demand/docs/open-api/3.2/demand-api/accommodations/accommodations/search) returns the cheapest available product for each accommodation matching your search criteria.

**Important:** When you apply location filters (e.g., country, region, city), results are sorted by Booking.com popularity (top_picks) in descending order, meaning higher-ranked listings appear first.
You can customise your results using:

* **Filters** – narrow down accommodations based on facilities, amenities, payment options, price, rating, and more.
* **Sorting** – control the order in which results are returned.


## Filters

Filters are specified under the `filters` object in the request body. Below is a complete reference for all available filters in v3.2.

| Filter | Type | Description |
|  --- | --- | --- |
| `24_hour_reception` | boolean | Only include accommodations with 24/7 front desk reception. Set `true` to filter accordingly. |
| `accommodation_facilities` | array of integers | Filter by property facilities (e.g., Parking, Restaurant).* Use IDs from [accommodations/constants](/demand/docs/open-api/demand-api/accommodations/accommodations/constants).

 |
| `accommodation_types` | array of integers | Filter by property type (e.g., Apartment, Hotel, Hostel).* Use IDs from [accommodations/constants](/demand/docs/open-api/demand-api/accommodations/accommodations/constants).

 |
| `brands` | array of integers | Filter by brand (e.g., Radisson Blu, Westin).* Use IDs from [/accommodations/chains](/demand/docs/open-api/demand-api/accommodations/accommodations/chains).

 |
| `cancellation_type` | string | Filter by cancellation type. Options: `free_cancellation` (`non_refundable` is deprecated). |
| `dormitories` | string | Include or exclude dormitory rooms/beds. Options: `include` (default), `exclude`, `only`. |
| `meal_plan` | string | Filter by meal plan. Options: `all_inclusive`, `breakfast_included`, `full_board`, `half_board`. |
| `payment` | object | Payment filters:* `credit_card_required` (boolean) – only show accommodations requiring credit cards.
* `timing` (string) – filter by payment timing: `pay_at_the_property`, `pay_online`.

 |
| `price` | object | Filter by price per night. Requires `currency` parameter.* `minimum` (integer) – min price.
* `maximum` (integer) – max price.

 |
| `rating` | object | Filter by property rating:* `minimum_review_score` (1–10)
* `stars` (array of integers, 1–5)

 |
| `room_facilities` | array of integers | Filter by room facilities (e.g., TV, Air Conditioning).* Use IDs from [accommodations/constants](/demand/docs/open-api/demand-api/accommodations/accommodations/constants).

 |
| `sustainability_certification` | boolean | Filter for properties with sustainability certification.* Set `true` to include only certified accommodations.

 |
| `travel_proud` | boolean | Filter for LGBTQ+ friendly properties (Proud Certified).* Set `true` to include only Proud Certified accommodations.

 |


Filters can be combined. Only accommodations matching all criteria will be returned.

## Sorting

The `sort` object controls the order of results. You can specify the sorting field and direction.

| Parameter | Type | Description |
|  --- | --- | --- |
| `by` | string | Field to sort by. Options: `distance`, `price`, `review_score`, `stars`.Use `distance` only if `coordinates` are provided.
 |
| `direction` | string | Sort direction. Options: `ascending`, `descending`. |


Example sorting usage:


```json
"sort": {
  "by": "price",
  "direction": "ascending"
}
```

This will return the lowest-priced accommodations first.

## Practical filtering examples

### Search by facilities and rating

This filter is based on the availability of facilities in the accommodation.

Some `accommodation_facilities`are:

| 
| `Wi-Fi` | Search for properties that offer free or paid Wi-Fi. |
| `Parking` | Filter for accommodations with available parking facilities. |
| `Pool` | Allows users to search for properties that have swimming pools. |
| `Air conditioning` | Filter based on whether the rooms have air conditioning. |
| `Pet-Friendly` | Locate properties that allow pets. |
| `Kitchen facilities` | Helps to find accommodations with kitchen or kitchenette options. |
| `Fitness center` | Search for accommodations with on-site gym facilities. |
| `Accessibility` | Filters that allow searches for properties with amenities that cater to guests with disabilities. |


→ Get facility IDs from [accommodations/constants](/demand/docs/open-api/demand-api/accommodations/accommodations/constants).

Example of search request filtering by:

- Accommodation facilities: parking (2), and restaurant (3).
- Room facilities: air-conditioning (11)



```json
"filters": {
  "accommodation_facilities": [2, 3, 11],
  "rating": {
    "minimum_review_score": 8,
    "stars": [4,5]
  }
}
```

* This request returns properties with specified facilities, minimum review score of 8, and 4- or 5-star rating.


### Search with payment options

You can restrict results to include properties that support only pay at the property (`pay_at_the_property`) and/or online payments (`pay_online`).

You can apply the payment timing filter in [accommodations/search](/demand/docs/open-api/demand-api/accommodations/accommodations/search), [accommodations/availability](/demand/docs/open-api/demand-api/accommodations/accommodations/availability) and [accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details) requests.

Example of search request for pay at the property timing:


```json
"filters": {
  "payment": {
    "credit_card_required": true,
    "timing": "pay_at_the_property"
  }
}
```

This example returns accommodations that require a credit card and allow pay-at-property.

Example in accommodations/details request:


```json
{
  "accommodations": [
      10507360
  ],
  "extras": [
    "payment"
  ],
  "payment": {
    "timing": "pay_online"
  }
}
```

See the [Payment timings](/demand/docs/payments/payments-timings) section for more details about online and offline payments.

### Search by minimum or maximum price

Search properties based on their price range using:

| Filters: |  |
|  --- | --- |
| `minimum` | Lower limit price per night. Only accommodations costing more than this specified amount will be returned. |
| `maximum` | Sets an upper limit for the price per night, ensuring that results do not exceed a particular budget.* You can specify both minimum and maximum prices together to define a specific range, such as 100 Eur to 200 Eur per night.
* If specified, will return only results where the price per night falls in the specified range (inclusive).

 |


Example for accommodation in Amsterdam that cost between 100 Eur and 200 Eur per night, returning the prices in EUR.


```json
{
  "booker": {
    "country": "nl",
    "platform": "desktop"
  },
  "currency": "EUR",
  "filters": {
    "price": {
      "maximum": "200",
      "minimum": "100"
    }
  }
  },
  "checkin": "2025-11-10",
  "checkout": "2025-11-15",
  "city": -2140479,
  "guests": {
    "number_of_adults": 2,
    "number_of_rooms": 1
  }
}
```

Note
Always include `currency` when using price filters.

### Search by sustainability and LGBTQ+ friendly properties


```json
"filters": {
  "sustainability_certification": true,
  "travel_proud": true
}
```

* This request returns only accommodations that are both Proud Certified and sustainability-certified.


### Search by accommodation brand

You can search for well-known accommodation chains like "Marriott," "Hilton," "Radisson," or others.

→ Use the [accommodations/chains](/demand/docs/open-api/demand-api/accommodations/accommodations/chains) endpoint with empty body to get the full list of brand ids. Select the one you need for your search request.

* In this example, "19" represents the "Radisson Hotel Group" brand.
* You can customise this filter to include multiple brands if needed (e.g., "19", "22").



```json
{
  "booker": {
    "country": "nl",
    "platform": "desktop"
  },
  "checkin": "2026-05-09",
  "checkout": "2026-05-12",
  "city": -2140479,
  "extras": ["extra_charges", "products"],
  "guests": {
    "number_of_adults": 2,
    "number_of_rooms": 1
  },
  "filters": {
    "brands": [19]
  }
}
```

Note
Brand filters cannot be combined with specific accommodation IDs but can be used alongside city filters.

### Search for 24h reception accommodation

To retrieve accommodations offering 24h reception service in Amsterdam, you can use the following filter on your search request:


```json
{
  "booker": {
    "country": "nl",
    "platform": "desktop"
  },
  "checkin": "2026-05-09",
  "checkout": "2026-05-12",
  "city": -2140479,
  "extras": ["extra_charges", "products"],
  "guests": {
    "number_of_adults": 2,
    "number_of_rooms": 1
  },
  "filters": {
    "24_hour_reception": true
  }
}
```

### Search by distance

You can restrict your search based on distance.

#### Using coordinates

Coordinates parameter helps filtering based on a given latitude, longitude and radius, enabling searches for properties near a particular spot on the map.

You can get the coordinates by using:

* [locations/landmarks](/demand/docs/open-api/demand-api/commonlocations/common/locations/landmarks) for landmarks.
* [/accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details) for an accommodation.
* [/locations/country](/demand/docs/open-api/demand-api/commonlocations/common/locations/countries) for countries.


Example:

* This query filters properties within a 5 km radius of the provided latitude and longitude (Amsterdam in this case).



```json
{
  "coordinates": {
    "latitude": 52.3676,
    "longitude": 4.9041,
    "radius": 5
  },
  "booker": {
    "platform": "desktop",
    "country": "nl"
  },
  "currency": "EUR",
  "checkin": "2025-03-09",
  "checkout": "2025-03-10",
  "guests": {
    "number_of_rooms": 1,
    "number_of_adults": 2
  }
}
```

Adjust the latitude, longitude, and radius as needed to search for different areas or distances​.

#### Using landmarks

Users can filter accommodations by specifying a distance range from popular landmarks (e.g., airports, museums, etc.)

1. Use the [common/locations/landmarks endpoint](/demand/docs/open-api/demand-api/commonlocations/common/locations/landmarks) to get the list of landmarks (and their ids) in a selected city.


Example for Paris (-1456928):

Request:


```json
{
  "city": -1456928,
  "languages": [
    "en-gb"
  ]
}
```

Response:


```json
{
  "request_id": "01jn0p83bec2cyrs2mbn9wwqng",
  "data": [
    {
      "id": 735,
      "name": {
        "en-gb": "Eiffel Tower"
      },
      "coordinates": {
        "latitude": 48.8586,
        "longitude": 2.29398
      }
    },
    {
      "id": 935,
      "name": {
        "en-gb": "Louvre Museum"
      },
      "coordinates": {
        "latitude": 48.86086,
        "longitude": 2.3388
      }
    },
```

1. Include `landmark`and the desired `id` in your search request. In this example: 735 for Eiffel Tower.



```json
{
  "booker": {
    "country": "nl",
    "platform": "desktop"
  },
  "checkin": "2025-10-10",
  "checkout": "2025-10-15",
  "landmark": 735,
  "guests": {
    "number_of_adults": 2,
    "number_of_rooms": 1
  }
}
```

Alternatively you can also use specific coordinates.

When including landmark id, you do not need the city id.

### Search by location

You can filter by geographic locations using parameters like:

| Fields | Description | Get ids using these endpoints |
|  --- | --- | --- |
| `city`                | To filter by city. | [location/city](/demand/docs/open-api/demand-api/commonlocations/common/locations/cities) |
| `country` | To filter by country. | [location/country](/demand/docs/open-api/demand-api/commonlocations/common/locations/countries) |
| `region` | To restrict the search to a specific region inside a country. Example: "725" for Andalusia in "es". | [location/region](/demand/docs/open-api/demand-api/commonlocations/common/locations/regions) |
| `airport` | To filter by a specific airport. | [location/airports](/demand/docs/open-api/demand-api/commonlocations/common/locations/airports) |


→ Retrieve the needed IDs from [common/location](/demand/docs/open-api/demand-api/commonlocations).

#### City and country

These filters can be very handy when looking for accommodations that have been recently modified.

Apply them in your [/accommodations/details/changes](/demand/docs/open-api/demand-api/accommodations/accommodations/details/changes) request to retrieve the list of accommodations that have been modified in the last 24h in those countries or cities of your interest.

/accommodations/details/changes request
→ Call the [/accommodations/details/changes](/demand/docs/open-api/demand-api/accommodations/accommodations/details/changes) endpoint using different countries.

Example with The Netherlands, Spain and Italy:


```json
{
  "last_change": "2025-09-29T17:00:00+00:00",
  "filters": {
    "countries": [
      "nl",
      "es",
      "in"
    ]
  }
}
```

Note that a list of max 100 countries or cities is supported.

changes response
The response triggers the list of accommodations in the selected countries, that have been modified in the last 24h.


```json
{
  "request_id": "01jbccaq5a5a0hg59c0w1ee1yy",
  "data": {
    "changes": {
      "changed": [
        9847612,
        8908982,
        12120474,
        12957429,
        10463538
        // ... (continued)
      ],
      "closed": [
        12972627,
        12386101,
        11896813
        // ... (continued)
      ],
      "opened": [
        11271338,
        6439891,
        4434608,
        13013177
        // ... (continued)
      ]
    },
    "from": "2025-10-28T17:00:00+00:00",
    "next": "2025-10-29T00:56:46+00:00",
    "total_changes": 5037
  }
}
```

## Key notes

* Price filtering requires a `currency` parameter.
* Sorting by distance requires coordinates (latitude, longitude, radius).
* You can combine filters and sorting to get highly tailored search results.
* Results are paginated using rows (max results per page) and page (pagination token). See the [Pagination guide](/demand/docs/development-guide/pagination)


- Refer to the [Search use cases section](/demand/docs/accommodations/search-examples) for more examples.
- See the [Search for accommodation](/demand/docs/accommodations/search-for-available-properties) guide for more information on setting up search requests.