# Search car rentals

Use this endpoint to retrieve the available car rentals matching the search criteria.

Endpoint: POST /cars/search
Version: 3.2
Security: BearerAuth

## Header parameters:

  - `X-Affiliate-Id` (integer, required)
    Include here your Affiliate identifier number

## Request fields (application/json):

  - `booker` (object, required)
    Defines the booker context.

  - `booker.country` (string, required)
    The booker country for showing the best price for that user and obeying laws regarding the display of taxes and fees.

  - `currency` (string, required)
    A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

  - `driver` (object, required)
    Defines the driver context.

  - `driver.age` (integer, required)
    Driver age. Affects the availability and price of the products.

  - `filters` (object)
    Defines the filtering criteria for refining the request results. It allows you to specify various parameters to narrow down the available car rental options based on specific attributes.

  - `filters.air_conditioning` (boolean)
    Filters the results to include car rentals with or without air conditioning. Setting this value to true will only return vehicles with air conditioning, while false will exclude them.

  - `filters.categories` (array)
    Filters the results based on the selected car categories.
    Enum: "carriers", "estate", "large", "medium", "premium", "small", "suvs"

  - `filters.depot_location_type` (string)
    Filters the results based on the type of depot location where the vehicle is picked up or dropped off.
    Enum: "in_terminal", "car_rental_centre", "outside_terminal", "airport_hotel", "shuttle_bus", "meet_greet", "trainstation", "downtown"

  - `filters.mileage_type` (string)
    Filters the results based on the mileage type associated with the rental vehicle.
    Enum: "limited", "unlimited"

  - `filters.number_of_seats` (integer)
    Filters the results based on the number of seats in the vehicle. This allows you to specify a vehicle that can accommodate a specific number of passengers.

  - `filters.supplier_ids` (array)
    Filters the results based on the supplier ID of the vehicle. This allows you to retrieve vehicles from specific suppliers. A maximum of 10 supplier IDs can be provided.

  - `filters.transmission_type` (string)
    Filters the results based on the transmission type of the vehicle.
    Enum: "automatic", "manual"

  - `maximum_results` (integer)
    The maximum number of results to return for car searches.

  - `language` (string)
    Optional. Controls the language of the Booking.com web and app URLs returned in the response. If not specified, English (en-gb) is used.

  - `page` (string)
    Pagination token used to retrieve the next page of results. Obtained from next_page.

  - `payment` (object)
    Payment-related input filters that allow you to narrow down car search results based on the payment timing options.

  - `payment.timings` (array)
    Filters the results to include only car rentals that offer the specified payment timings. Use this parameter to search for cars based on the timing of payment (e.g., payment upfront, partial payment, or payment at the depot).
    Enum: "pay_online_now", "pay_partial_online_now", "pay_at_pickup"

  - `route` (object, required)
    Defines the route context.

  - `route.dropoff` (object, required)
    Drop off location and time.

  - `route.dropoff.datetime` (string, required)
    Pickup / dropoff datetime.
    Example: "2026-11-01T11:05:00"

  - `route.dropoff.location` (any, required)
    Pickup / dropoff location.

  - `route.pickup` (object, required)
    Pick up location and time.

  - `route.pickup.datetime` (string, required)
    Pickup / dropoff datetime.
    Example: "2026-11-01T11:05:00"

  - `route.pickup.location` (any, required)
    Pickup / dropoff location.

  - `sort` (object)
    The sorting parameters for the response.

  - `sort.by` (string)
    The way to sort your results.
    Enum: "distance", "price", "review_score"

  - `sort.direction` (string)
    The direction you wish for your sort.by parameter to be sorted in.
    Enum: "ascending", "descending"

## Response 200 fields (application/json):

  - `request_id` (string, required)
    Uniquely identifies the request. Please provide this identifier when contacting support.

  - `data` (array, required)

  - `data.car` (integer)
    This ID corresponds to a specific car model and supplier (fleet) combination, as returned by the /cars/details endpoint. Cache the details keyed by this ID and use it to match search results to your cached data.

  - `data.categories` (array)
    The categories assigned to the car.
    Enum: "carriers", "estate", "large", "medium", "premium", "small", "suvs"

  - `data.deal` (object,null)
    This specifies the deal tagging for the product.

  - `data.deal.discount_percentage` (integer)
    Discount percentage of the applied deals.

  - `data.deal.public_price` (number)
    Original price of this product, before applying any discounts.

  - `data.deal.tags` (array)
    The tags of all the applied deals.
    Enum: "black_friday", "getaway_deal", "mobile_rate"

  - `data.offer` (integer)
    This ID identifies the car rental offer and its associated policies. Include it when calling the /cars/availability endpoint.

  - `data.policies` (object)
    The policies that apply to this product.

  - `data.policies.cancellation` (object)
    The cancellation policy that applies to this product.

  - `data.policies.cancellation.details` (object,null)
    Provides the policy details if the cancellation is free. For example: 
 1. duration='PT48H' and context=before_pickup means 'Free cancellation is available up to 48 hrs before pick up'. 
 2. duration='P7D' and context=within_given_time_period_of_booking means 'Free cancellation is available within 7 days of booking'

  - `data.policies.cancellation.details.context` (string)
    The context in which the cancellation policy applies. For example 'before_pickup'
    Enum: "before_pickup", "within_given_time_period_of_booking"

  - `data.policies.cancellation.details.duration` (string)
    The duration until which the cancellation is free. This is in ISO-8601/Duration format.

  - `data.policies.cancellation.type` (string)
    The type of cancellation present. For example 'free_cancellation' or 'non-refundable'.
    Enum: "free_cancellation", "non-refundable"

  - `data.policies.damage_excess` (object,null)
    The maximum amount a traveller may be charged for damages to the car during the rental period, as specified by the rental agreement.

  - `data.policies.damage_excess.amount` (number)
    The amount to be charged.

  - `data.policies.damage_excess.currency` (string)
    A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

  - `data.policies.deposit` (object,null)
    The amount of money that will be temporarily pre-authorised or blocked on the traveller’s credit card at the rental location as a security deposit, to cover potential damage or extra charges.

  - `data.policies.deposit.amount` (number)
    The amount to be charged.

  - `data.policies.deposit.currency` (string)
    A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

  - `data.policies.insurance_package` (string)
    The supplier insurance package applied to this product by default. Use the insurance object instead when third-party insurance products are configured in your account.
    Enum: "basic", "inclusive", "zero_excess"

  - `data.policies.fuel` (string)
    The fuel policy that applies to this product.
    Enum: "return_same", "return_same_or_prepay_no_refunds", "return_same_preauth", "free_tank", "prepay_no_refunds", "prepay_part_refunds", "prepay_refunds"

  - `data.policies.mileage` (object)
    The mileage policy that applies to this product.

  - `data.policies.mileage.amount` (number,null)
    The amount that must be paid if the distance limit is exceeded.

  - `data.policies.mileage.currency` (string)
    A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

  - `data.policies.mileage.distance_limit` (integer,null)
    The maximal distance limit allowed for this product before additional fees apply.

  - `data.policies.mileage.distance_unit` (string)
    The unit of measurement for the distance limit. For example 'km' or 'miles'.
    Enum: "kilometers", "miles"

  - `data.policies.mileage.type` (string, required)
    The type of mileage policy applied.
    Enum: "limited", "unlimited"

  - `data.policies.payment` (object)
    The payment policy that applies to this product.

  - `data.policies.payment.timing` (string, required)
    The applied payment timing. For example 'pay_online_now'.
    Enum: "pay_online_now", "pay_partial_online_now", "pay_at_pickup"

  - `data.policies.theft_excess` (object,null)
    The maximum amount a traveller may be charged in the event of car theft during the rental period, as outlined in the rental agreement.

  - `data.policies.theft_excess.amount` (number)
    The amount to be charged.

  - `data.policies.theft_excess.currency` (string)
    A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

  - `data.price` (object)
    The price components of this product.

  - `data.price.currency` (string)
    A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

  - `data.price.credit_card_required` (boolean,null)
    Indicates whether a credit card is required as a guarantee for this vehicle.

- true: A credit card must be provided and will be passed to the supplier for guarantee purposes. Applies to vehicles with 'payment.timing = pay_at_pickup'.
- false: A credit card is explicitly not required.
- null: Information not available or not applicable (for example, pay-online-now vehicles where credit card requirements are currently unknown).

  - `data.price.extra_charges` (array)
    The charge breakdown. Includes taxes and fees included in the drive away price.

  - `data.price.extra_charges.charge` (string)
    The type of this charge.

  - `data.price.extra_charges.total_amount` (number)
    The total price for this charge.

  - `data.price.total` (number)
    The total price. Includes all extra charges.

  - `data.route` (object)
    Defines the actual route associated with the product.

  - `data.route.dropoff` (object)
    Defines the product dropoff route point.

  - `data.route.dropoff.depot` (integer)
    The identifier of the depot used for pickup or dropoff.

  - `data.route.dropoff.depot_location_type` (string)
    Type of depot location where the vehicle is picked up or dropped off. For example, 'shuttle_bus', 'in_terminal', etc.
    Enum: "in_terminal", "car_rental_centre", "outside_terminal", "airport_hotel", "shuttle_bus", "meet_greet", "trainstation", "downtown"

  - `data.route.pickup` (object)
    Defines the product pickup route point.

  - `data.route.pickup.depot` (integer)
    The identifier of the depot used for pickup or dropoff.

  - `data.route.pickup.depot_location_type` (string)
    Type of depot location where the vehicle is picked up or dropped off. For example, 'shuttle_bus', 'in_terminal', etc.
    Enum: "in_terminal", "car_rental_centre", "outside_terminal", "airport_hotel", "shuttle_bus", "meet_greet", "trainstation", "downtown"

  - `data.special_offer` (string,null)
    The special offer included with this product, if any. This can be an additional service, a free upgrade, or a promotional feature provided by the supplier. If no special offer applies, the value will be null.
    Enum: "one_additional_driver", "two_additional_drivers", "three_additional_drivers", "all_additional_drivers", "gps", "baby_or_child_seat", "priority_pickup", "wifi_device", "sim_card", "upgrade"

  - `data.insurance` (object,null)
    Third-party insurance product for this car rental. Only present for eligible partner configurations. Null if not available.

  - `data.insurance.name` (string)
    The display name of the insurance product.

  - `data.insurance.id` (string)
    The identifier for the type of insurance product.

  - `data.insurance.price` (object)
    The price of the insurance product for the full rental period.

  - `data.insurance.price.amount` (number)
    The insurance price amount.

  - `data.insurance.price.currency` (string)
    A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

  - `data.supplier` (integer)
    Related supplier id.

  - `data.url` (object)
    Urls to the relevant pages.

  - `data.url.app` (string)
    URL for the related page on Booking App.

  - `data.url.web` (string)
    URL for the related page on cars.booking.com.

  - `metadata` (object)
    Metadata about the request.

  - `metadata.next_page` (string,null)
    Indicates that more results are available. Use this pagination token to retrieve the next page of results (via parameter page).

  - `metadata.total_results` (integer)
    The total number of results available.

  - `search_token` (string)
    Encoded string that must be passed in subsequent requests to identify the context of the car search. Note: It is specific to Car rentals and differs from other tokens used in booking flows.


