Learn how to use the /cars/search endpoint to find and retrieve car rentals that match travellers’ preferences, routes, and date ranges.
→ Use the /cars/search endpoint to retrieve a list of cars available within a given route, date range, or set of filters.
This endpoint:
- Covers a wide range of traveller needs — from budget-friendly city cars to luxury SUVs.
- Finds and returns the optimum set of matching rental options so travellers can quickly choose the right vehicle.
- Increases the likelihood of converting searches into bookings by showing relevant, well-priced products.
This guide explains how to structure your request, filter and sort results, handle pagination, and interpret the search response.
The request defines search parameters to find available cars. The response returns a list of matching cars, including prices, policies, and metadata about the search results.
Example use case:
Retrieve cars in Amsterdam Airport Schiphol (AMS) available between 5–10 November 2025, filtered by automatic transmission, limited mileage and price.
3.1 request example:
{
"booker": { "country": "nl" },
"currency": "EUR",
"driver": { "age": 36 },
"filters": {
"transmission_type": "automatic",
"mileage_type": "limited",
"depot_location_type": "in_terminal"
},
"route": {
"pickup": {
"datetime": "2025-11-05T11:05:00",
"location": { "airport": "AMS" }
},
"dropoff": {
"datetime": "2025-11-10T11:05:00",
"location": { "airport": "AMS" }
}
},
"payment": {
"timings": ["pay_now"]
}
}
Field | Description |
|---|---|
booker.country | Two-letter country code (ISO 3166-1 alpha-2) in lowercase. Determines traveller context for pricing and taxes. Get this code running the /common/locations/country endpoint. |
driver.age | Age of the driver (18–99). Affects availability and price. Minimum: 18 - Maximum 99. |
currency | ISO 4217 code (for example EUR). Currency for pricing. Retrieve codes using /common/payments/currencies. |
route.pickup/ route.dropoff
|
- Only one of airport, coordinates, or city should be used per pickup/dropoff location.
pickup.datetimemust be ≤dropoff.datetime.
Filters help tailor results to traveller preferences and vehicle features:
air_conditioning– true (only cars with AC) or false.car_categories– Filter by car type (e.g., "compact", "suvs", "premium").depot_location_type– Location of the rental depot (e.g., "in_terminal", "downtown").mileage_type– "limited" or "unlimited".number_of_seats– Minimum required seats.transmission_type– "automatic" or "manual".supplier_ids– Retrieve cars from specific suppliers (max 10 IDs).
Example - Filters
"filters": {
"transmission_type": "automatic",
"mileage_type": "limited",
"depot_location_type": "in_terminal",
"car_categories": ["economy", "compact"],
"number_of_seats": 5,
"supplier_ids": [7455, 1234]
}Payment filters - Narrow results based on the desided payment timing:
v3.1 | v3.2 | Description |
|---|---|---|
|
|
|
You can optionally set the maximum number of results and paginate data.
maximum_results- 10–500, multiple of 10, default 100 in v3.1 and 500 in v3.2. Maximum number of results.sort.by(price,distance,review_score),sort.direction(ascending,descending).pagefor the pagination token returned inmetadata.next_page.
Maximum results is 500.
Example - Pagination and sorting
"maximum_results": 50,
"sort": {
"by": "price"
},
"page": "eyJhbGciOiJIUzI1NiJ9..."
See the pagination guide for more details.
The response contains a list of matching cars and metadata about the search:
Version 3.1 response example:
{
"request_id": "01h00fr9y7qkbxtc6kyv97j49z",
"data": [
{
"car": 122655,
"policies": {
"cancellation": {
"type": "free_cancellation",
"details": {
"context": "before_pickup",
"duration": "P7D"
}
},
"damage_excess": 3000,
"deposit": 1500,
"insurance_package": "basic",
"fuel": "return_same",
"mileage": {
"distance": 200,
"distance_unit": "kilometers",
"amount": 12.54,
"type": "limited"
},
"payment": {
"timing": "pay_now"
},
"theft_excess": 3000
},
"price": {
"total": "121.90",
"currency": "EUR",
"extra_charges": [
{
"charge": "aged_fee",
"total_amount": 21.9
},
{
"charge": "one_way_fee",
"total_amount": 50
}
]
},
"route": {
"dropoff": {
"depot": 112314,
"depot_location_type": "airport_hotel"
},
"pickup": {
"depot": 112314,
"depot_location_type": "airport_hotel"
}
},
"supplier": 7455,
"url": {
"app": "booking://page",
"web": "https://example.com"
}
}
],
"metadata": {
"next_page": "eyJhbGciOiJIUzI1NiJ9.eyJwIjp7Im1heGltdW1fcmVzdWx0cyI6MTAsIm9mZnNldCI6MTB9LCJhdWQiOiJDQVJTX1NVUFBMSUVSUyIsImV4cCI6MTY4MzY0NzMwNX0.y7NmH48mm7lImd2WxsHdotj6n-dVQAzJCGCnIJCKy3A",
"total_results": 122
},
"search_token": "eyJhbGciOiJIUzI1NiJ9.eyJwIjp7ImJvb2tlciI6eyJjb3VudHJ5IjoidXMifX0sImF1ZCI6Ii9ob3RlbHMvc2VhcmNoIiwiZXhwIjoxNzUwMDAwMDAwfQ.XYZ123AbcDefGHIjklMNOpqrsTUVwxYZ456789"
}
- Not all cars visible on the Booking.com website are available via the Demand API.
- The API delivers a consistent, integrator-friendly subset of inventory optimised for connected trip solutions.
The search_token stores the search context associated with the request.
- Include it in your v3.2 requests, to cars/availability, orders/preview and orders/create endpoints.
- This reduces the need to resend the entire search payload, such as the route, filters, or booker country.
How to use it:
- The first search request includes a
search_tokenvalue in the response. - Include the
search_tokenin subsequent requests to cars/availability, orders/preview and orders/create endpoints (from v3.2 Beta) instead of resending the full search criteria.
The search_token expires after 90 minutes.
If the search returns no cars:
- Check that the pickup/dropoff location and datetime are valid and have available vehicles.
- See the Data conventions guide for right formats.
- Review filters — overly strict transmission, mileage, or seat filters can exclude all results.
- Verify that airport codes or city IDs are supported.
- Find the full lists in the /common location endpoints.
If you still receive empty results, try broadening the search criteria or temporarily removing filters.
| Best practice | Description |
|---|---|
| ✅ Optimise for performance |
|
| ✅ Deliver relevant results |
|
| ✅ Maintain consistency |
|
- Car search use cases for search examples.
- Car details for static data.
- Filtering and sorting guide for best practices.
- Pagination guide for instructions on handling large datasets.