Use this reference to identify where information returned by the legacy XML Cars API is available in Demand API v3.2 and Beta. This page complements the Migrate from XML to Demand API v3.2 guide.
The legacy XML Cars API returned most vehicle, supplier, policy, pricing, and redirect information in the SearchRS response.
Demand API v3.2 distributes this information across multiple specialised endpoints. As a result, some XML fields map directly to Demand API fields, while others are retrieved from dedicated resources using identifiers returned by /cars/search.
Use this guide to:
- Identify the Demand API endpoint that replaces each XML data source.
- Map commonly used XML fields to their Demand API equivalents.
- Understand when additional endpoint calls are required.
- Identify mappings that are available only in Beta.
| XML functionality | Demand API endpoint | Version |
|---|---|---|
| Search results | /cars/search | v3.2 |
| Vehicle specifications | /cars/details | v3.2 |
| Pricing | /cars/search | v3.2 |
| Deposit, excess, fuel, and mileage policies | /cars/search | v3.2 |
| Depot information | /cars/depots | v3.2 |
| Supplier information | /cars/suppliers | v3.2 |
| Depot review scores | /cars/depots/reviews/scores | v3.2 |
| Redirect URLs | /cars/search | v3.2 |
| Optional products (extras and insurance) | /cars/availability | Beta |
| Order creation | /orders/create | Beta |
| Car reservation details | /orders/details/cars/live | Beta |
| Order cancellation | /orders/cancel | Beta |
| Reporting and reconciliation | /orders/details | v3.2 |
There are some new functionalities that are not available in XML API but in Demand API:
| New functionality | Demand API endpoint | Version |
|---|---|---|
| Availability | /cars/availability | Beta |
| Order preview | /orders/preview | Beta |
The following table summarises common XML fields and their Demand API equivalents.
| XML field or concept | Demand API field or resource | Endpoint |
|---|---|---|
supplierName | Supplier ID in supplier; resolve the supplier name using /cars/suppliers | /cars/search + /cars/suppliers |
Supplier.small_logo | logo | /cars/suppliers |
FuelPolicy | policies.fuel | /cars/search |
Mileage | policies.mileage | /cars/search |
Deposit | policies.deposit | /cars/search |
DamageExcess | policies.damage_excess | /cars/search |
TheftExcess | policies.theft_excess | /cars/search |
Price | Pricing information distributed across price, deal, estimated_commission, and policies.payment | /cars/search |
Location | route.pickup.depot and route.dropoff.depot | /cars/search |
| Depot address and instructions | Depot resource | /cars/depots |
Ratings.Average | score | /cars/depots/reviews/scores |
NumRatings | number_of_reviews | /cars/depots/reviews/scores |
ForwardURL | url.web | /cars/search |
| App redirect | url.app | /cars/search |
| Availability | Availability response | /cars/availability (Beta) |
| Extras and ancillary products | products[] | /cars/availability (Beta) |
Not every XML field has a direct 1:1 equivalent. Some XML concepts are represented by nested Demand API objects or are available from a separate endpoint.
Primary endpoint: cars/search
The XML SearchRS response returned most information needed to build a search-results page.
In Demand API, /cars/search returns the core dynamic information for each available offer, including:
- Car ID.
- Offer ID.
- Policies.
- Pricing.
- Supplier ID.
- Included insurance information.
- Route information.
- Redirect URLs.
The response also returns a top-level search_token that identifies the context of the search.
Example:
{
"request_id": "01h00fr9y7qkbxtc6kyv97j49z",
"data": [
{
"car": 344450,
"offer": 854389021,
"supplier": 137,
"price": {
"currency": "EUR",
"total": 311.60
},
"route": {
"pickup": {
"depot": 6029
},
"dropoff": {
"depot": 6029
}
}
}
],
"metadata": {
"next_page": null,
"total_results": 1
},
"search_token": "..."
}Use the returned identifiers to retrieve additional vehicle, supplier, and depot information from their corresponding endpoints.
Primary endpoint: /cars/details
Vehicle specifications are retrieved separately from /cars/details instead of being fully embedded in each search result.
The endpoint can return information such as:
- Make
- Model
- Vehicle classification
- Fuel type
- Transmission
- Vehicle features
- Seat capacity
- Door count
- Luggage capacity
- Images
Example:
{
"request_id": "01ksfat75dpscqj4cqhgdpjqtp",
"data": [
{
"id": 218492,
"capacity": {
"bags": {
"large": 1,
"small": 1
},
"doors": "4",
"seats": "5"
},
"country": "ie",
"features": [
"air_conditioning"
],
"image": "https://cdn2.rcstatic.com/images/car_images/web/bmw/1_series_lrg.jpg",
"make": "BMW",
"model": "1 Series",
"specification": {
"code": "CDAR",
"description": "compact",
"fuel": "unspecified",
"transmission": "automatic"
},
"supplier": 17
}
]
}Policy shapes can differ between endpoints. Use the schema for the endpoint you are integrating rather than assuming that the same representation is returned everywhere.
Primary endpoint: /cars/search
| XML | Demand API |
|---|---|
Deposit | policies.deposit |
DamageExcess | policies.damage_excess |
TheftExcess | policies.theft_excess |
<DepositExcessFees>
<TheftExcess
amount="1500.0"
currency="GBP"
taxIncluded="true" />
<DamageExcess
amount="1500.0"
currency="GBP"
taxIncluded="true" />
<Deposit
amount="1500.0"
currency="GBP"
taxIncluded="true" />
</DepositExcessFees>Primary endpoint: /cars/search
| XML | Demand API |
|---|---|
FuelPolicy | policies.fuel |
<FuelPolicy type="RETURN_SAME" />
Primary endpoint: /cars/search
| XML | Demand API |
|---|---|
KnownFees/Mileage | policies.mileage |
<Fees>
<KnownFees>
<Fee
feeTypeName="MILEAGE"
alwaysPayable="false"
amount="0.5"
currency="GBP"
taxIncluded="true"
perDuration="rental"
feeDistance="1.0"
distance="700.0"
iskM="false"
unlimited="false" />
</KnownFees>
</Fees>Primary endpoint: /cars/search
The XML Price element contains several concepts that are represented separately in Demand API:
| XML | Demand API |
|---|---|
Price | price.total |
Price.currency | price.currency |
Price.creditCardRequired | price.credit_card_required can be true, false, or null; review the endpoint schema for the semantics of each value. |
The price object can also include extra_charges[], which provides a breakdown of applicable taxes and fees included in the total price.
<Price
currency="EUR"
baseCurrency="GBP"
basePrice="465.8"
commission="0.00"
discount="0.00"
driveAwayPrice="563.92"
quoteAllowed="yes"
creditCardRequired="false">
563.92
</Price>Not every attribute in the XML Price element maps directly to the Demand API price object.
Demand API represents some pricing concepts separately:
| XML concept | Demand API |
|---|---|
| Commission | estimated_commission where available. |
| Discount or promotional pricing. | deal |
| Third-party insurance price | insurance.price |
| Payment timing | policies.payment.timing - Supported values are: pay_online_now, pay_partial_online_now, pay_at_pickup |
The XML Price element does not have a 1:1 equivalent in Demand API. When migrating, map each pricing, payment, discount, and commission concept to the corresponding Demand API field rather than treating the complete XML Price element as a single object.
Primary endpoints: /cars/search and /cars/depots
The XML response included detailed pickup and drop-off location information directly in the search response.
Demand API separates the depot identifier from the depot metadata:
- /cars/search returns the pickup and drop-off depot IDs.
- /cars/depots returns the corresponding depot details.
| XML | Demand API |
|---|---|
Pickup Location | route.pickup.depot |
Drop-off Location | route.dropoff.depot |
<Route>
<PickUp>
<Location
id="4608557"
locationId="37766"
locCode="LHR"
locName="London Heathrow Airport"
onAirport="no" />
</PickUp>
<DropOff>
<Location
id="4608557"
locationId="37766"
locCode="LHR"
locName="London Heathrow Airport"
onAirport="no" />
</DropOff>
</Route>Use /cars/depots to retrieve information such as:
- Depot name.
- Address.
- Coordinates.
- Pickup instructions.
- Drop-off instructions.
Primary endpoints: /cars/search and /cars/suppliers
The XML response returned supplier metadata directly as part of each result.
Demand API instead returns a supplier ID from /cars/search. Use that ID with /cars/suppliers to retrieve the supplier metadata.
| XML | Demand API |
|---|---|
supplierName | /cars/suppliers → name |
Supplier.small_logo | /cars/suppliers → logo |
<Supplier
long="-0.39796924"
lat="51.47040086"
dropOffLong="-0.39796924"
dropOffLat="51.47040086"
address="Vista Centre Salisbury Road, Cranford, Hounslow, London, UK, TW4 6JQ"
dropOffAddress="Vista Centre Salisbury Road, Cranford, Hounslow, London, UK, TW4 6JQ""
small_logo="https://cdn2.rcstatic.com/images/suppliers/wrp/flat/1463_logo_lrg.gif"
locType="Off Airport - Shuttle Service"
supplierName="Surprice"
pickUpInstructions="Please call 00443300949033 on arrival to arrange the shuttle service. Then, follow the signs to the Short Stay Car Park and wait at the corresponding level. T2: Level 4, lift area near row H. T3: Level 3, lift area near row A. T4: Level 2, lift area near row E. T5: Level 1, lift area near row R."
dropOffInstructions="Please call 00443300949033 on arrival to arrange the shuttle service. Then, follow the signs to the Short Stay Car Park and wait at the corresponding level. T2: Level 4, lift area near row H. T3: Level 3, lift area near row A. T4: Level 2, lift area near row E. T5: Level 1, lift area near row R." />
Supplier-specific pickup and drop-off location details and instructions are available from /cars/depots.
Primary endpoint: /cars/depots/reviews/scores
| XML | Demand API |
|---|---|
Ratings.Average | score |
NumRatings | number_of_reviews |
Cleanliness | breakdown.cleanliness.score |
DropOffTime | breakdown.drop_off_speed.score |
CollectTime | breakdown.pick_up_speed.score |
ValForMoney | breakdown.value_for_money.score |
<![CDATA[Surprice (Flex)]]>
</Supplier>
<Ratings>
<Average>7.1</Average>
<AverageText>Very good</AverageText>
<NumRatings>126</NumRatings>
<ValForMoney>6.7</ValForMoney>
<Efficiency>7.8</Efficiency>
<CollectTime>7.3</CollectTime>
<DropOffTime>8.2</DropOffTime>
<Cleanliness>7.5</Cleanliness>
<Condition>5.8</Condition>
<Locating>7.5</Locating>
</Ratings>
Primary endpoint: /cars/search
The XML ForwardURL is replaced by platform-specific redirect URLs.
| XML | Demand API |
|---|---|
ForwardURL | url.web |
| No equivalent app URL | url.app |
<ForwardURL>https:/rentalcars.com/SearchResults.do......</ForwardURL>
The following functionality is available through Demand API Beta and does not form part of the stable v3.2 Search, look and redirect migration.
Primary endpoint: /cars/availability
The XML API returned most availability and booking information as part of search.
Demand API Beta introduces a dedicated /cars/availability step for validating the selected offer before booking.
The /cars/availability endpoint returns:
- Latest availability.
- Updated pricing.
- Policies.
- Payment requirements.
- Optional products.
- Route information.
- Supplier information.
- Search context.
For example:
{
"request_id": "01kxn1dxkb8hj1w0b7wd4xwa5t",
"data": {
"offer": 853519316,
"currency": "GBP",
"policies": {
"cancellation": {
"type": "free_cancellation",
"details": {
"context": "before_pickup",
"duration": "PT48H"
}
},
"damage_excess": {
"amount": 1641.72
},
"deposit": {
"amount": 254.53
},
"insurance_package": "inclusive",
"payment": {
"timing": "pay_online_now"
},
"fuel": "return_same",
"mileage": {
"distance_limit": 1000,
"distance_unit": "kilometers",
"amount": 0.61,
"currency": "EUR",
"type": "limited"
},
"theft_excess": {
"amount": 1641.72
}
},
"price": {
"base": 394.51,
"credit_card_required": null,
"total": 394.51,
"extra_charges": []
},
"products": [
{
"id": "14646288116010",
"type": "gps",
"maximum_available": 1,
"mode": "per_rental",
"price": {
"unit_amount": {
"display": {
"value": 65.7,
"currency": "GBP"
},
"pay": {
"value": 77.45,
"currency": "EUR",
"timing": "pay_at_pickup"
}
}
}
}
],
"deal": null,
"special_offer": null,
"supplier": 207,
"route": {
"pickup": {
"depot": 6054,
"depot_location_type": "in_terminal"
},
"dropoff": {
"depot": 6054,
"depot_location_type": "in_terminal"
}
},
"insurance": null,
"search_token": "eyJhbGciOiJIUzI1NiJ9..."
}
}Field shapes can differ between /cars/search and /cars/availability. Always follow the schema of the endpoint you are integrating.
Direct car rental booking is available in Beta and uses the Cars and Orders API collections.
| Capability | Endpoint |
|---|---|
| Validate the selected car offer | /cars/availability |
| Preview the order | /orders/preview |
| Create the order | /orders/create |
See the Car rentals tutorial for the complete Search, look and book flow.
Selected post-booking functionality is also available in Beta.
| Capability | Endpoint |
|---|---|
| Retrieve the latest car reservation details | /orders/details/cars/live |
| Cancel an order | /orders/cancel |
| Retrieve post-booking terms and conditions | /orders/details/cars/terms-and-conditions |
| Retrieve booking-related FAQs | /orders/details/cars/faq |
After completing the XML field mappings:
- Return to Migrate from XML to Demand API v3.2 to continue the migration workflow.
- Review the Car rentals documentation for implementation guidance.
- Use the Demand API v3.2 Cars API reference for complete endpoint schemas.
- If you are implementing direct booking, review the Beta Cars API reference.