Skip to content
Last updated

XML to Demand API mapping reference

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.


Overview

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.

Endpoint mapping overview

XML functionalityDemand API endpointVersion
Search results/cars/searchv3.2
Vehicle specifications/cars/detailsv3.2
Pricing/cars/searchv3.2
Deposit, excess, fuel, and mileage policies/cars/searchv3.2
Depot information/cars/depotsv3.2
Supplier information/cars/suppliersv3.2
Depot review scores/cars/depots/reviews/scoresv3.2
Redirect URLs/cars/searchv3.2
Optional products (extras and insurance)/cars/availabilityBeta
Order creation/orders/createBeta
Car reservation details/orders/details/cars/liveBeta
Order cancellation/orders/cancelBeta
Reporting and reconciliation/orders/detailsv3.2

New functionalities

There are some new functionalities that are not available in XML API but in Demand API:

New functionalityDemand API endpointVersion
Availability/cars/availabilityBeta
Order preview/orders/previewBeta

Field mapping overview

The following table summarises common XML fields and their Demand API equivalents.

XML field or conceptDemand API field or resourceEndpoint
supplierNameSupplier ID in supplier; resolve the supplier name using /cars/suppliers/cars/search + /cars/suppliers
Supplier.small_logologo/cars/suppliers
FuelPolicypolicies.fuel/cars/search
Mileagepolicies.mileage/cars/search
Depositpolicies.deposit/cars/search
DamageExcesspolicies.damage_excess/cars/search
TheftExcesspolicies.theft_excess/cars/search
PricePricing information distributed across price, deal, estimated_commission, and policies.payment/cars/search
Locationroute.pickup.depot and route.dropoff.depot/cars/search
Depot address and instructionsDepot resource/cars/depots
Ratings.Averagescore/cars/depots/reviews/scores
NumRatingsnumber_of_reviews/cars/depots/reviews/scores
ForwardURLurl.web/cars/search
App redirecturl.app/cars/search
AvailabilityAvailability response/cars/availability (Beta)
Extras and ancillary productsproducts[]/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.


Search result mapping

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.


Vehicle details

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 mappings

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.

Deposit and excess

Primary endpoint: /cars/search

XMLDemand API
Depositpolicies.deposit
DamageExcesspolicies.damage_excess
TheftExcesspolicies.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>

Fuel policy

Primary endpoint: /cars/search

XMLDemand API
FuelPolicypolicies.fuel
<FuelPolicy type="RETURN_SAME" />

Mileage policy

Primary endpoint: /cars/search

XMLDemand API
KnownFees/Mileagepolicies.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>

Pricing

Primary endpoint: /cars/search

The XML Price element contains several concepts that are represented separately in Demand API:

XMLDemand API
Priceprice.total
Price.currencyprice.currency
Price.creditCardRequiredprice.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 conceptDemand API
Commissionestimated_commission where available.
Discount or promotional pricing.deal
Third-party insurance priceinsurance.price
Payment timingpolicies.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.


Depot information

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.

Search mapping

XMLDemand API
Pickup Locationroute.pickup.depot
Drop-off Locationroute.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.

Supplier information

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.

XMLDemand 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&quot;" 
  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.

Depot review scores

Primary endpoint: /cars/depots/reviews/scores

XMLDemand API
Ratings.Averagescore
NumRatingsnumber_of_reviews
Cleanlinessbreakdown.cleanliness.score
DropOffTimebreakdown.drop_off_speed.score
CollectTimebreakdown.pick_up_speed.score
ValForMoneybreakdown.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>

Redirect URLs

Primary endpoint: /cars/search

The XML ForwardURL is replaced by platform-specific redirect URLs.

XMLDemand API
ForwardURLurl.web
No equivalent app URLurl.app
<ForwardURL>https:/rentalcars.com/SearchResults.do......</ForwardURL>

Beta-only mappings

The following functionality is available through Demand API Beta and does not form part of the stable v3.2 Search, look and redirect migration.

Availability

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.

Booking capabilities

Direct car rental booking is available in Beta and uses the Cars and Orders API collections.

CapabilityEndpoint
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.

Post-booking capabilities

Selected post-booking functionality is also available in Beta.

CapabilityEndpoint
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

Next steps

After completing the XML field mappings: