Filtering and paginating car rental search results
Learn how to filter your car rental search results and organise the payload with pagination.
Car rental filters
You can refine the results of the /cars/search endpoint using the filters object.
This allows you to narrow down available car rental options based on specific vehicle attributes and user preferences.
To apply filters, include specific query parameters in your cars/search request.
The following filters are supported:
Filters reference
Use the table below as a quick reference for all available filters supported by the /cars/search endpoint.
Filter name | Description | Accepted values |
---|---|---|
air_conditioning | Returns only vehicles with air conditioning when set to true. | true or false. |
car_categories | Filters by one or more vehicle categories. | e.g. economy, suv, compact_convertible, luxury_suvs. |
| Returns vehicles from specified supplier IDs. Use /cars/suppliers to retrieve supplier IDs. | Up to 10 integer IDs (e.g. [102, 122]) |
transmission_type | Filters by transmission type. | Accepts automatic or manual. |
number_of_seats | Filters by specific number of seats. | Integer (e.g., 2, 4, 5, 7). |
mileage_type | Filters by mileage policy. | limited or unlimited. |
depot_location_type | Filters vehicles by depot location type | in_terminal, car_rental_centre, outside_terminal, airport_hotel, shuttle_bus, meet_greet, trainstation, downtown . |
Air conditioning
Use the air_conditioning
filter to include or exclude vehicles with air conditioning.
Example request:
"filters": {
"air_conditioning": true
}
When set to true
, only vehicles with air conditioning are returned. If no such vehicles are available, the response is empty.
Car category
Use the car_categories
field to return only vehicles matching one or more specified categories.
Example request:
{
"booker": {
"country": "nl"
},
"currency": "EUR",
"driver": {
"age": 36
},
"filters": {
"car_categories": ["economy", "suv"]
},
"route": {
"dropoff": {
"datetime": "2025-11-10T11:05:00",
"location": {
"airport": "AMS"
}
},
"pickup": {
"datetime": "2025-11-05T11:05:00",
"location": {
"airport": "AMS"
}
}
}
}
If multiple categories are provided, vehicles matching any of those categories will be returned.
Depot location type
Include the depot_location_type
filter to return vehicles based on the type of pick-up or return depot.
"filters": {
"depot_location_type": "in_terminal"
}
Accepted values include:
- in_terminal.
- car_rental_centre.
- outside_terminal.
- airport_hotel.
- shuttle_bus.
- meet_greet.
- trainstation.
- downtown (city centre).
Mileage type
Use the mileage_type
filter to select vehicles with either limited or unlimited mileage.
Example request:
"filters": {
"mileage_type": "unlimited"
}
Number of seats
Use the number_of_seats
filter to return vehicles with a specific seating capacity.
"filters": {
"number_of_seats": 5
}
Supplier IDs
Use the supplier_ids
filter to return only vehicles offered by specific car rental suppliers.
Example request:
"filters": {
"supplier_ids": [102, 122]
}
You can include up to 10 supplier IDs in a single request. The API will return vehicles from any of the specified suppliers.
Each supplier ID corresponds to a specific car rental provider. In the example request, 102
corresponds to "Europcar" and 122
to Goldcar.
You can retrieve the full list of supplier IDs by sending an empty request to the cars/suppliers endpoint.
Transmission type
You can include the transmission_type
filter to return either automatic or manual vehicles.
Example request:
"filters": {
"transmission_type": "automatic"
}
Combined filtering
Multiple filters can be combined to refine search results further. The API will return only vehicles that match all specified criteria.
Example request:
"filters": {
"car_categories": ["economy"],
"supplier_ids": [601,1088],
"air_conditioning": true,
"transmission_type": "automatic",
"number_of_seats": 5,
"mileage_type": "unlimited",
"depot_location_type": "downtown"
}
Other: Payment timing
You can restrict results to include car rentals that support only pay_local
and/or online payments (including pay_now
or part_pay
).
Example of search request for online payment timings:
{
"booker": {
"country": "us"
},
"currency": "USD",
"driver": {
"age": 35
},
"route": {
"pickup": {
"datetime": "2025-07-21T10:00:00",
"location": {
"airport": "LAX"
}
},
"dropoff": {
"datetime": "2025-07-24T10:00:00",
"location": {
"airport": "LAX"
}
}
},
"payment": {
"timings": ["pay_now", "part_pay"]
}
}
Refer to Payment timings section for more details about online payments.
Pagination
Pagination allows you to handle larger data sets by fetching smaller, more manageable chunks, improving both performance and user experience.
Demand API handles pagination using standard mechanisms such as maximum_results
, next_page
and page
parameters.
Maximum results
Use the maximum_results
parameter in your request to set the maximum number of results per page.
If not specified, results default to 100.
Example of search request with maximum_results
:
{
"booker": {
"country": "nl"
},
"currency": "EUR",
"driver": {
"age": 36
},
"route": {
"dropoff": {
"datetime": "2025-05-08T11:05:00",
"location": {
"coordinates": {
"latitude": 52.309456,
"longitude": 4.762266
}
}
},
"pickup": {
"datetime": "2025-05-20T11:05:00",
"location": {
"coordinates": {
"latitude": 52.309456,
"longitude": 4.762266
}
}
},
"maximum_results": 100
}
}'
Pagination token
The response includes a next_page
object. It contains encoded information from your original request. Use it in your next request to fetch the next set of results.
Example of response with pagination token (next_page
):
{
"request_id": "01h00fr9y7qkbxtc6kyv97j49z",
"data": [
{
"car": 122655,
"policies": {
"cancellation": {...}
},
"fuel": "return_same",
"mileage": {...},
"payment": {
"timing": "pay_now"
}
},
"price": {
"total": "50.00",
"currency": "EUR"
},
"route": {
"dropoff": {
"depot": 112314
},
"pickup": {
"depot": 112314
}
},
"supplier": 7455,
"url": {
"app": "booking://page",
"web": "https://example.com"
}
}
],
"metadata": {
"next_page": "eyJhbGciOiJIUzI1NiJ9.eyJwIjp7Im1heGltdW1fcmVzdWx0cyI6MTAsIm9mZnNldCI6MTB9LCJhdWQiOiJDQVJTX1NVUFBMSUVSUyIsImV4cCI6MTY4MzY0NzMwNX0.y7NmH48mm7lImd2WxsHdotj6n-dVQAzJCGCnIJCKy3A",
"total_results": 122
}
}
- Copy the token and include it in your next request, as part of the "page" object. This way the second set of results will be returned.
Example of request with token:
{ "page":"eyJhbGciOiJIUzI1NiJ9.eyJwIjp7Im1heGltdW1fcmVzdWx0cyI6MTAsIm9mZnNldCI6MTB9LCJhdWQiOiJDQVJTX1NVUFBMSUVSUyIsImV4cCI6MTY4MzY0NzMwNX0.y7NmH48mm7lImd2WxsHdotj6n-dVQAzJCGCnIJCKy3A"
}
You don't need to include any other detail in the request, as the token inherits the same parameters included in the initial request.
Sorting
Use "sort.by" option to organise the results on each page by various criteria.
Available sorting options include: distance, price and review_score.
Example for sorting by "price" request:
{
"booker": {
"country": "nl"
},
"currency": "EUR",
"driver": {
"age": 36
},
"sort": {
"by": "price"
},
"route": {
"dropoff": {
"datetime": "2025-06-05T11:05:00",
"location": {
"airport": "AMS"
}
},
"pickup": {
"datetime": "2025-05-05T16:05:00",
"location": {
"airport": "AMS"
}
}
}
}
Best practices
Combine filters with pagination parameters to effectively navigate through large datasets.
By combining these filters in your API requests, you can refine the search results to match specific criteria.
- Refer to the Car rental quick guide for instructions and best practices on constructing your requests.
- See more details in the Car rental endpoints examples section.