# Check car rental availability 3.2 Beta

**Use the 3.2 /cars/availability endpoint to retrieve detailed availability, pricing, and policy information for a specific car rental offer returned by the /cars/search endpoint**.

Cars availabilty – Beta access
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](/demand/docs/open-api/3.2-beta/demand-api/cars).
- **Access** - Only approved pilot partners can use this endpoint.
  - Contact your partnership manager to express interest.
- **Frequent updates** - Documentation and API specs will be updated regularly during the pilot.
  - Check the [Changelog](/demand/docs/whats-new/changelog) periodically for the latest updates.


## Overview

The [/cars/availability endpoint](/demand/docs/open-api/3.2-beta/demand-api/cars/availability) returns real-time availability, including:

* Current price (base and total)
* Policies (cancellation, mileage, fuel, deposit, insurance)
* Optional extras and their prices
* Deal information (discounts or promotions)


## When to use this endpoint

Use /cars/availability:

* **After using the search endpoint** - After completing a car search, each offer in the response includes an `offer` ID and a `search_token`.
  * These values are required to retrieve accurate details for that specific offer.
* **Before booking, to allow the traveller to review** the policies, prices, and available extras.
* **When displaying offer details**, such as cancellation terms, terms and conditions, or included insurance.


## Request parameters

| Name | Required | Description | Important note |
|  --- | --- | --- | --- |
| `offer` | ✔ | The ID of the car offer, returned by /cars/search. | This is needed for the next orders/preview request. |
| `search_token` | ✔ | Encoded token returned by /cars/search. | This is needed for the next orders/preview request. |
| `currency` | ✔ | A three-letter ISO-4217 currency code (for example `EUR`, `GBP`). | Include in the availability request, the **currency from the booker´s country** (rather than display currency), otherwise it returns error. |


Always use the same `search_token` and `offer` combination returned from your /cars/search call. Do not reuse tokens across different searches.

**Example request:**


```json

{
  "offer": 740171366,
  "search_token": "eyJhbGciOiJIUzI1NiJ9.eyJwIjp7InNlYXJjaF9rZXkiOiJleU...",
  "currency": "GBP" // This must be the booker country currency. 
}
```

**Example for currency request:**

* If booker country in cars/search request is "no" and currency is "EUR". You will need to include currency NOK in the availability call, otherwise it returns a 500 error.


## Response structure

A successful response (200 OK) includes:

| Field | Type | Description |
|  --- | --- | --- |
| `request_id` | string | Unique request identifier for debugging or support. |
| `data` | object | Contains details about the offer’s price, policies, and products. |


### Key objects

#### Policies

Describes the rules and terms that apply to the rental.

* `cancellation` – `type` and conditions (for example, `free_cancellation`)
  * `details.context` – when the rule applies (e.g., before_pickup)
  * `details.duration` – time window (ISO 8601 duration, e.g., "PT48H")
* `deposit` – pre-authorised amount blocked on the traveller’s card.
* `damage_excess`, `theft_excess` – maximum payable amounts in case of damage or theft.
* `fuel` – fuel return policy (for example, `return_same`, `prepay_refunds`)
* `insurance_package` – insurance included (e.g., inclusive or basic)
* `mileage` – allowed distance limit and excess fee details.
  * `type` – limited or unlimited.
  * `distance_limit` – numeric limit.
  * `distance_unit` – miles or kilometers.
  * `amount` – excess fee per unit if exceeded.
* `payment.timing` – indicates when payment occurs (for example, `pay_online_now`, `pay_at_pickup`)


#### Price

Contains pricing information for the rental.

**Example fields / values:**

* `base` – base rental price.
* `total` – full price including fees and mandatory extras.


#### Products

Lists optional extras available for the booking.

**Example fields / values:**

* `type` – product type (e.g., baby_seat_included, gps)
* `mode` – pricing model (for example, `per_day`, `per_rental`)
* `maximum_available` – maximum number of this item available.
* `price.amount` – cost of the product.
* `price.prepayment` – whether prepayment is required (`true/false`)
* `extra_charges` - whether there is an extra cost.


#### Deal

Provides details about applied discounts or special offers.

**Example fields / values:**

* `tags` – type of deal (e.g., black_friday, mobile_rate)
* `discount_percentage` – numeric discount applied.
* `public_price` – original price of this product, before applying any discounts.


See the [Deals guide](/demand/docs/cars/cars-discounts) for more details.

### Example response


```json
{
  "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 },
      "fuel": "return_same",
      "insurance_package": "inclusive",
      "mileage": {
        "type": "limited",
        "distance_limit": 200,
        "distance_unit": "miles",
        "amount": 0.3
      },
      "payment": { "timing": "pay_online_now" }
    },
    "price": {
      "base": 74.4,
      "total": 194.4,
      "extra_charges": [
        { "charge": "aged_driver_fee", "total_amount": 120 }
      ]
    },
    "products": [
      { "type": "baby_seat", "mode": "each_per_rental", "price": { "amount": 33.98, "prepayment": false } },
      { "type": "gps", "mode": "per_rental", "price": { "amount": 31.98, "prepayment": false } }
    ],
    "supplier": 3486,
    "depot": 38566
  }
}
```

## Best practices

✅ Validate tokens and offers:

* Always pair the `offer` ID with the `search_token` from the same /cars/search response. Tokens are time-limited (90 minutes) and search-specific.


✅ Localise currency and units:

* Use the `currency` parameter to match the booker’s country used in the search request.
* Mileage units (miles, kilometers) should also be displayed in the format used at the pick-up location (e.g., kilometers in Greece). If you display a different unit (e.g., miles), show it in addition to the original policy units, since the contract is based on the pick-up location’s units.


✅ Interpret cancellation rules:

* Use the `context` and `duration` fields to generate user-friendly cancellation messages (for example: “Free cancellation up to 48 hours before pickup”).


✅ Log the `request_id`:

* Include request_id in your logs or when contacting support for troubleshooting.


## Common errors

| Code | Meaning | Resolution |
|  --- | --- | --- |
| `400 Bad Request` | Missing or invalid `offer`, `search_token`, or `currency`. | Check 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 get updated offers. |
| `429 Too Many Requests` | Too many requests within a short time. | Implement rate limiting and retries with exponential backoff. |
| `500 Internal Server Error` | Unexpected error. | Retry after a short delay and report the `request_id` if the issue persists. |


See the [Demand API Error handling guide](/demand/docs/support/error-handling/about-errors) for details.

## Next steps

Once availability is confirmed and shown to the user, proceed to present the car rental terms and conditions and create the order using the /orders/preview and /orders/create endpoints.

* See the [Tutorial](/demand/docs/cars/3.2/cars-tutorial) for full step by step guide.
* Refer to the [Orders](/demand/docs/open-api/demand-api/orders) and [payments](/demand/docs/payments/how-to) guides to make your first car rental order.