Last updated

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
DescriptionAccepted values
air_conditioningReturns 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.

supplier_ids

Returns vehicles from specified supplier IDs.

Use /cars/suppliers to retrieve supplier IDs.

Up to 10 integer IDs (e.g. [102, 122])

transmission_typeFilters by transmission type.Accepts automatic or manual.
number_of_seatsFilters by specific number of seats.Integer (e.g., 2, 4, 5, 7).
mileage_typeFilters by mileage policy.limited or unlimited.
depot_location_typeFilters vehicles by depot location typein_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.


Curious to know more?