Use the /cars/availability endpoint to retrieve detailed availability, pricing, and policy information for a specific car rental offer returned by the /cars/search endpoint.
This endpoint is currently available to selected partners as part of an early access pilot.
- Pilot phase - The API is under active development and may change.
- Available flows
- Search, look and book flow (Type 3) is currently test-ready in Beta.
- Access - Only approved pilot partners can use this endpoint. Contact your Partnership Manager to express interest.
- Updates - Check the Changelog periodically for the latest updates.
The /cars/availability endpoint returns the latest details for a car rental offer identified in a previous /cars/search response.
The response can include:
- The current vehicle price and price breakdown.
- Payment timing and credit card requirements.
- Cancellation, fuel, mileage, deposit and excess policies.
- Optional extras and their availability.
- Deal and special-offer information.
- Pickup and drop-off route details.
- Available third-party insurance and legal documents.
- Estimated commission, when enabled for the partner.
Use this endpoint before presenting the final offer to the traveller and before starting the booking flow.
Use /cars/availability after calling /cars/search and before calling /orders/preview.
A typical flow is:
- Call /cars/search.
- Let the traveller select a car offer.
- Call /cars/availability using the selected
offerand matchingsearch_token. - Display the latest price, policies, payment requirements and available extras.
- Optionally select insurance and extras.
- Call /orders/preview using the availability information.
- Create the order using /orders/create.
Field | Required | Description |
|---|---|---|
offer | ✔ | The identifier of the car rental offer returned by /cars/search and needed for the next orders/preview request. |
search_token | ✔ | Encoded token returned by /cars/search.
|
currency | ✔ | A three-letter ISO 4217 currency code (for example EUR, GBP).
|
language | No | An optional IETF language tag, such as en-gb or fr.
|
- Always use the same
search_tokenandoffercombination returned from your /cars/search call. Do not reuse tokens across different searches. - Search tokens are time-limited. If the token has expired or is invalid, run /cars/search again and use the new offer and search token.
{
"offer": 740171366,
"search_token": "eyJhbGciOiJIUzI1NiJ9.eyJwIjp7InNlYXJjaF9rZXkiOiJleU...",
"language": "en-gb",
"currency": "GBP"
}
A successful response returns HTTP 200 and includes a request_id for troubleshooting and a data object containing the offer details:
Field | Description |
|---|---|
offer | Identifier of the car rental offer. |
currency | The currency used for the response. |
policies | The policies that apply to the car rental offer. |
price | Vehicle price, payment requirements and additional charges included in the total price. |
products | Optional extras available for the vehicle. |
deal | Applied deal information, or null when no deal applies. |
special_offer | A special offer included with the product, or null when no special offer applies. |
supplier | Identifier of the car rental supplier. |
route | Pickup and drop-off depot information. |
insurance | Available third-party insurance information, or null when insurance is unavailable. |
estimated_commission | Estimated partner commission, when the feature is enabled and a reliable estimate is available. |
The policies object describes the rules that apply to the selected vehicle.
The cancellation.type field indicates whether the rental is refundable:
free_cancellation– Free cancellation is available under the conditions indetails.non_refundable– The rental is non-refundable.
For free-cancellation policies, use the following fields to create a traveller-friendly description:
details.context– The context in which free cancellation applies, such as before_pickup.details.duration– The applicable period in ISO 8601 duration format, such asPT48HorP7D.
For example, PT48H with before_pickup means that free cancellation is available up to 48 hours before pickup.
The following fields can contain monetary amounts or null:
deposit.amount– The amount temporarily pre-authorised or blocked on the traveller’s credit card at the rental location.damage_excess.amount– The maximum amount the traveller may be charged for damage.theft_excess.amount– The maximum amount the traveller may be charged if the vehicle is stolen.
Always display the currency returned with the amount.
insurance_package indicates the supplier insurance package included with the vehicle. Possible values are:
basicinclusivezero_excess
fuel identifies the fuel policy. Possible values include:
return_samereturn_same_or_prepay_no_refundsreturn_same_preauthfree_tankprepay_no_refundsprepay_part_refundsprepay_refunds
The values correspond to the fuel policies returned by /cars/constants.
The mileage object describes the distance included in the rental.
type– limited or unlimited.distance_limit– Maximum distance allowed when the policy is limited. This can benull.distance_unit– kilometers or miles.amount– Amount charged when the distance limit is exceeded. This can benull.currency– Currency of the excess mileage charge. This can benull.
Display the original distance unit returned by the supplier. If you convert it for display, also show the original unit because the rental agreement is based on it.
The payment.timing field indicates when the vehicle payment is made:
pay_online_nowpay_partial_online_nowpay_at_pickup
Do not use payment timing alone to determine whether a credit card is required. Use price.credit_card_required where available.
The price object contains the vehicle price and charge breakdown.
base– Base price of the vehicle.total– Total price of the vehicle.credit_card_required– Indicates whether a credit card is required as a guarantee.extra_charges– Additional charges included in the total price.
The credit_card_required field indicates whether a credit card is required as a guarantee:
true– A credit card must be provided as a guarantee to the supplier.false– A credit card is explicitly not required.null– The information is unavailable or not applicable.
Use the currency returned in each monetary amount. Do not assume that the display amount and payment amount are always the same.
The products array lists optional extras available for the vehicle, such as additional drivers, child seats and GPS devices.
Each product can include:
id– Unique identifier of the optional product. Use this identifier when selecting the product for the order.type– Type of optional extra (e.g., baby_seat_included, gps)mode– How the price is calculated:each_per_dayeach_per_rentalper_dayper_rental
maximum_available– Maximum number of units that can be selected for the booking.price.unit_amount.display– Amount displayed to the traveller for one unit.price.unit_amount.pay– Amount to be paid, including payment timing.
The pay object can include:
valuecurrencytiming
Calculate the total product price according to the product’s mode. For example, each_per_day means that the unit price is multiplied by the selected quantity and the number of rental days.
The deal object contains information about applied deals. It is null when no deal applies.
It can include:
tags– Applied deal tags, such asblack_friday,getaway_dealormobile_rate.discount_percentage– Discount percentage applied.public_price– Original price before the discount.
See the Deals guide for more details.
special_offer identifies a special offer included with the vehicle. Possible values include:
one_additional_drivertwo_additional_driversthree_additional_driversall_additional_driversgpsbaby_or_child_seatpriority_pickupwifi_devicesim_cardupgradeblack_fridaygetaway_dealmobile_rate
The value is null when no special offer applies.
The route object identifies the pickup and drop-off locations for the offer.
Each route point can include:
depot– Identifier of the depot.depot_location_type– Type of location, such asin_terminal,car_rental_centre,shuttle_busormeet_greet.
Use this information together with /cars/depots to display the relevant pickup and drop-off details.
The insurance object contains a bookable third-party insurance product when insurance is available for the selected offer and enabled for the partner. It is null when insurance is unavailable.
When present, the object includes:
quote_reference– Unique reference for the insurance quote. The quote expires after 90 minutes.name– Display name of the insurance product.id– Insurance product identifier.price.display– Price displayed to the traveller.price.pay– Amount to be paid and payment timing.coverage_amount– Maximum coverage amount.documents– Legal insurance documents.
The documents array contains the legal documents available for the insurance product, including policy_document and, where applicable, ipid.
Display or link to the legal documents before the traveller confirms the insurance product.
If mandatory insurance documents are unavailable in the requested language, the insurance object is omitted. See the Insurance dedicated guide for details.
The optional estimated_commission object contains a predictive estimate of the commission the partner may earn if the traveller books the vehicle.
It is returned only when:
- The estimated commission feature is enabled for the partner.
- A reliable estimate is available.
The estimate includes an amount and currency. It is not returned when the feature is unavailable or when an estimate cannot be produced.
{
"request_id": "01k1deq3e5b41da80f28yybhz0",
"data": {
"offer": 740171366,
"currency": "GBP",
"policies": {
"cancellation": {
"type": "free_cancellation",
"details": {
"context": "before_pickup",
"duration": "PT48H"
}
},
"deposit": {
"amount": 1500
},
"damage_excess": {
"amount": 1500
},
"theft_excess": {
"amount": 1500
},
"insurance_package": "inclusive",
"fuel": "return_same",
"mileage": {
"type": "limited",
"distance_limit": 200,
"distance_unit": "miles",
"amount": 0.3,
"currency": "GBP"
},
"payment": {
"timing": "pay_online_now"
}
},
"price": {
"base": 74.4,
"total": 194.4,
"credit_card_required": false,
"extra_charges": [
{
"charge": "aged_driver_fee",
"total_amount": 120
}
]
},
"products": [
{
"id": "14383444201010",
"type": "additional_driver",
"maximum_available": 3,
"mode": "each_per_rental",
"price": {
"unit_amount": {
"display": {
"value": 20,
"currency": "GBP"
},
"pay": {
"value": 20,
"currency": "GBP",
"timing": "pay_at_pickup"
}
}
}
}
],
"deal": null,
"special_offer": "upgrade",
"supplier": 3486,
"route": {
"pickup": {
"depot": 243816,
"depot_location_type": "meet_greet"
},
"dropoff": {
"depot": 243816,
"depot_location_type": "meet_greet"
}
},
"insurance": {
"quote_reference": "38ddeef-a7fb-4e24-a1e2-66fc3af23d76#1t0juiba8h6n2",
"name": "Full Protection",
"id": "999",
"price": {
"display": {
"value": 114.24,
"currency": "GBP"
},
"pay": {
"value": 114.24,
"currency": "EUR",
"timing": "pay_online_now"
}
},
"coverage_amount": {
"value": 60000,
"currency": "EUR"
},
"documents": [
{
"name": "policy_document",
"url": "https://example.com/policy-document.pdf"
},
{
"name": "ipid",
"url": "https://example.com/ipid.pdf"
}
]
},
"estimated_commission": {
"amount": 12.5,
"currency": "GBP"
}
}
}The display currency and payment currency may differ. Always use the currency returned in each amount.
✅ Use the matching offer and search token.
- Always send the
offerID and thesearch_tokenreturned by the same /cars/search response. If the token is invalid or expired, run the search again.
✅ Display payment requirements clearly.
- Use both:
policies.payment.timingprice.credit_card_required
This allows travellers to understand when payment is due and whether a credit card is required as a guarantee.
✅ Preserve the original currencies and units.
- Display the currency and mileage unit returned by the API.
- If you convert values for localisation, also show the original value where it is relevant to the rental agreement.
✅ Handle optional values.
The following fields may be null or omitted depending on the offer and partner configuration:
dealinsuranceestimated_commissioncredit_card_required- Deposit and excess amounts.
- Mileage distance limits and excess charges.
✅ Store identifiers required for order creation.
offersearch_token- Product
idvalues for selected extras. - Insurance
quote_referencewhen insurance is selected.
These values may be required by /orders/preview and /orders/create.
✅ Interpret cancellation rules:
- Use the
contextanddurationfields to generate user-friendly cancellation messages (for example: “Free cancellation up to 48 hours before pickup”).
✅ Log the request_id:
- Log
request_idfor troubleshooting and include it when contacting support.
| Code | Meaning | Resolution |
|---|---|---|
400 Bad Request | Missing or invalid offer, search_token, or currency. | Check the parameter values and formats. |
403 Forbidden | Missing or invalid X-Affiliate-Id. | Ensure your affiliate credentials are correctly set. |
404 Not Found | The offer is no longer available. | Re-run /cars/search to retrieve updated offers. |
429 Too Many Requests | Too many requests were sent within a short period. | Implement rate limiting and retries with exponential backoff. |
500 Internal Server Error | An unexpected error occurred. | Retry after a short delay. If the issue persists, report the request_id. |
See the Demand API Error handling guide for details.
After retrieving availability and displaying the latest offer details:
- Let the traveller select any optional extras or insurance.
- Use /orders/preview to validate the selected offer and calculate the final order price.
- Use /orders/create to create the order.
- For a complete integration flow, see the Car rental tutorial.
- Refer to the Orders and payments guides to make your first car rental order.