Search car hire offers for a pickup place and a date range. Each offer has the supplier, the car, the total and daily price, fees, mileage, fuel policy, excess, deposit, cancellation terms and the depot rating. The response also lists suppliers, depots, applied filters, available_filters and the price range. One search returns at most 500 offers. The pagination object shows total_offers, offer_cap and capped. The pagination total_offers value is the upstream count after filtering. It can be larger than the offers you can list. The market (cor) and the currency decide the prices. The response echoes both values in the market object. The depot_rating on an offer rates the pickup depot. It is not the overall rating of the supplier. Use the supplier ratings endpoint for the supplier rating. Filter values must come from available_filters of an earlier search response. A search without offers returns 200 with an empty offers array and a no_results object. This response is not billed. Scrappa is not affiliated with Rentalcars.com. This is an unofficial API.
Run this endpoint
Endpoint
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
3 required parameters needed before sending a request.
27 optional filters available.
string
Required
Pickup place. A 3-letter IATA airport code or "lat,lng". Example: BER.
BER
string
Required
Pickup date in Y-m-d format. It must not be in the past. Example: 2026-12-01.
2026-12-01
string
Required
Dropoff date in Y-m-d format. It must not be before the pickup date.
2026-12-04
string
Optional
Dropoff place. Same format as the pickup place. Default: the pickup place.
example
string
Optional
Pickup time in H:i format. Default: 10:00.
example
string
Optional
Dropoff time in H:i format. Default: 10:00.
example
integer
Optional
Age of the driver, from 18 to 99. Default: 30.
10
array
Optional
Filter by car category. Send several values with brackets, for example supplier[]=Alamo&supplier[]=Avis. Take values from available_filters in a search response.
["example"]
array
Optional
Filter by supplier name. Send several values with brackets, for example supplier[]=Alamo&supplier[]=Avis. Take values from available_filters in a search response.
["example"]
array
Optional
AUTOMATIC or MANUAL. Send several values with brackets, for example supplier[]=Alamo&supplier[]=Avis. Take values from available_filters in a search response.
["example"]
array
Optional
Filter by mileage policy. Send several values with brackets, for example supplier[]=Alamo&supplier[]=Avis. Take values from available_filters in a search response.
["example"]
array
Optional
Filter by depot place type. Send several values with brackets, for example supplier[]=Alamo&supplier[]=Avis. Take values from available_filters in a search response.
["example"]
array
Optional
Filter by fuel type. Send several values with brackets, for example supplier[]=Alamo&supplier[]=Avis. Take values from available_filters in a search response.
["example"]
array
Optional
Filter by fuel policy. Send several values with brackets, for example supplier[]=Alamo&supplier[]=Avis. Take values from available_filters in a search response.
["example"]
array
Optional
Filter by seat group, for example UP_TO_5 or 6_TO_7. Send several values with brackets, for example supplier[]=Alamo&supplier[]=Avis. Take values from available_filters in a search response.
["example"]
array
Optional
Filter by payment time. Send several values with brackets, for example supplier[]=Alamo&supplier[]=Avis. Take values from available_filters in a search response.
["example"]
boolean
Optional
Show only offers with free cancellation. true or false.
true
integer
Optional
Lowest accepted rating, from 1 to 10.
10
boolean
Optional
Show only cars with four or more doors. true or false.
true
boolean
Optional
Show only offers with a deal. true or false.
true
boolean
Optional
Show only offers with insurance in the price. true or false.
true
number
Optional
Lowest price.
10
number
Optional
Highest price.
10
string
Optional
Advanced. A JSON string with extra filter criteria. Unknown keys are listed in filters.unknown.
example
string
Optional
NATURAL, PRICE, RATING, DISTANCE or GENIUS. Default: NATURAL.
relevance
boolean
Optional
Sort from low to high. true or false.
true
integer
Optional
Page number. Default: 1.
1
integer
Optional
Offers per page, from 1 to 100. Default: 50.
2
string
Optional
Country of residence as a 2-letter code, or auto. It sets the market and the prices. With auto no market is sent and the offers follow the exit country. Use auto when you want to pass the search_key and vehicle_id to /terms. Default: gb.
example
string
Optional
Currency code for prices. Default: EUR.
USD
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
meta
depots
market
offers
filters
suppliers
no_results
pagination
+4 more
Common depots fields
id
city
iata
name
{
"meta": {
"attempts": 1,
"duration_ms": 3,
"endpoint_family": "search"
},
"depots": [
{
"id": "4489988",
"city": "Berlin",
"iata": "BER",
"name": "Berlin Brandenburg Airport Willy Brandt",
"rating": {
"scope": "depot",
"average": 7.6,
"locating": 8.1,
"condition": 8,
"efficiency": 6.8,
"cleanliness": 8.6,
"num_ratings": 350,
"collect_time": 7.3,
"drop_off_time": 8,
"value_for_money": 6.8
},
"address": "1 Melli-Beese-Ring, Sch\u00f6nefeld, Berlin, Germany, 12529",
"latitude": 52.364206,
"longitude": 13.508656,
"location_id": "466611",
"pickup_type": "CAR_RENTAL_CENTRE",
"supplier_id": "137",
"country_code": "DE",
"pickup_instructions": null,
"drop_off_instructions": null,
"distance_from_search_km": null
},
{
"id": "4490007",
"city": "Berlin",
"iata": "BER",
"name": "Berlin Brandenburg Airport Willy Brandt",
"rating": {
"scope": "depot",
"average": 7.7,
"locating": 8,
"condition": 7.8,
"efficiency": 7.9,
"cleanliness": 7.3,
"num_ratings": 133,
"collect_time": 8,
"drop_off_time": 8,
"value_for_money": 7.3
},
"address": "1 Melli-Beese-Ring, Sch\u00f6nefeld, Berlin, Germany, 12529",
"latitude": 52.364206,
"longitude": 13.508656,
"location_id": "466611",
"pickup_type": "CAR_RENTAL_CENTRE",
"supplier_id": "227",
"country_code": "DE",
"pickup_instructions": null,
"drop_off_instructions": null,
"distance_from_search_km": null
}
],
"market": {
"country": "GB",
"currency": "EUR"
},
"offers": [
{
"car": {
"fuel": "N/A",
"doors": 4,
"seats": 5,
"groups": [
"suvs",
"medium",
"midsizeSuv"
],
"car_class": "IFMRWT",
"image_url": "https://cdn2.rcstatic.com/images/car_images/web/ford/kuga_lrg.jpg",
"categories": [
"suvs",
"intermediate"
],
"transmission": "MANUAL",
"make_and_model": "Ford Kuga",
"suitcase_count": 4,
"large_suitcases": 3,
"small_suitcases": 0,
"air_conditioning": true
},
"fees": [
{
"per": null,
"name": "DAMAGE_EXCESS",
"type": null,
"amount": 1150,
"source": "MAPPED",
"currency": "EUR",
"distance": null,
"unlimited": null,
"tax_included": true,
"distance_unit": null,
"always_payable": true,
"payable_locally": false,
"included_in_total": false
},
{
"per": null,
"name": "DEPOSIT",
"type": null,
"amount": 750,
"source": "MAPPED",
"currency": "EUR",
"distance": null,
"unlimited": null,
"tax_included": true,
"distance_unit": null,
"always_payable": true,
"payable_locally": false,
"included_in_total": false
}
],
"rank": 1,
"price": {
"total": 211.44,
"deposit": 211.44,
"per_day": 70.48,
"currency": "EUR",
"discount": 0,
"base_total": 178.09,
"base_currency": "GBP",
"drive_away_total": 211.44
},
"source": "rest",
"deposit": {
"amount": 750,
"currency": "EUR"
},
"mileage": {
"per": "PER_RENTAL",
"type": "LIMITED",
"unlimited": false,
"distance_unit": "KM",
"extra_currency": "EUR",
"extra_per_unit": 0.36,
"included_distance": 900
},
"pay_when": "PAY_NOW",
"supplier": {
"id": "227",
"name": "Thrifty",
"type": "INTEGRATED",
"logo_url": "https://cdn2.rcstatic.com/sp/images/suppliers/227_logo_200.png"
},
"insurance": {
"products": [
{
"amount": 65.09,
"currency": "EUR",
"reference": "ZURICH_FULL_INSURANCE"
}
]
},
"promotions": [],
"vehicle_id": "705862196",
"fuel_policy": {
"type": "RETURN_SAME"
},
"pickup_type": "CAR_RENTAL_CENTRE",
"depot_rating": {
"scope": "depot",
"average": 7.7,
"locating": 8,
"condition": 7.8,
"efficiency": 7.9,
"cleanliness": 7.3,
"num_ratings": 133,
"collect_time": 8,
"drop_off_time": 8,
"value_for_money": 7.3
},
"theft_excess": {
"amount": 1150,
"currency": "EUR"
},
"damage_excess": {
"amount": 1150,
"currency": "EUR"
},
"pickup_depot_id": "4490007",
"dropoff_depot_id": "4490007",
"proposition_type": "BR",
"free_cancellation": true,
"provisional_extras": [
{
"type": "BABY_SEAT",
"price": {
"amount": 63.00400108548924,
"currency": "EUR"
}
},
{
"type": "ADDITIONAL_DRIVER",
"price": {
"amount": 47.1254319696132,
"currency": "EUR"
}
}
],
"credit_card_required": false,
"special_offer_message": "Price includes winterisation fee"
},
{
"car": {
"fuel": "N/A",
"doors": 4,
"seats": 4,
"groups": [],
"car_class": "XXMR",
"image_url": "https://cdn2.rcstatic.com/images/car_images/new_images/wildcards/ghost_car_lrg.jpg",
"categories": [
"special"
],
"transmission": "MANUAL",
"make_and_model": "Wild Card",
"suitcase_count": 2,
"large_suitcases": 2,
"small_suitcases": 1,
"air_conditioning": true
},
"fees": [
{
"per": null,
"name": "DAMAGE_EXCESS",
"type": null,
"amount": 1200,
"source": "MAPPED",
"currency": "EUR",
"distance": null,
"unlimited": null,
"tax_included": true,
"distance_unit": null,
"always_payable": true,
"payable_locally": false,
"included_in_total": false
},
{
"per": null,
"name": "DEPOSIT",
"type": null,
"amount": 250,
"source": "MAPPED",
"currency": "EUR",
"distance": null,
"unlimited": null,
"tax_included": true,
"distance_unit": null,
"always_payable": true,
"payable_locally": false,
"included_in_total": false
}
],
"rank": 3,
"price": {
"total": 221.78,
"deposit": 221.78,
"per_day": 73.93,
"currency": "EUR",
"discount": 0,
"base_total": 186.8,
"base_currency": "GBP",
"drive_away_total": 221.78
},
"source": "rest",
"deposit": {
"amount": 250,
"currency": "EUR"
},
"mileage": {
"per": "PER_RENTAL",
"type": "LIMITED",
"unlimited": false,
"distance_unit": "KM",
"extra_currency": "EUR",
"extra_per_unit": 0.37,
"included_distance": 900
},
"pay_when": "PAY_NOW",
"supplier": {
"id": "17",
"name": "Alamo",
"type": "INTEGRATED",
"logo_url": "https://cdn2.rcstatic.com/sp/images/suppliers/17_logo_200.png"
},
"insurance": {
"products": []
},
"promotions": [],
"vehicle_id": "859050623",
"fuel_policy": {
"type": "RETURN_SAME"
},
"pickup_type": "CAR_RENTAL_CENTRE",
"depot_rating": {
"scope": "depot",
"average": 7.5,
"locating": 7.7,
"condition": 7.3,
"efficiency": 7.2,
"cleanliness": 8.3,
"num_ratings": 953,
"collect_time": 7.1,
"drop_off_time": 8,
"value_for_money": 7
},
"theft_excess": {
"amount": 1200,
"currency": "EUR"
},
"damage_excess": {
"amount": 1200,
"currency": "EUR"
},
"pickup_depot_id": "4829006",
"dropoff_depot_id": "4829006",
"proposition_type": "BR",
"free_cancellation": true,
"provisional_extras": [
{
"type": "BABY_SEAT",
"price": {
"amount": 46.49509179677124,
"currency": "EUR"
}
},
{
"type": "CHILD_SEAT",
"price": {
"amount": 46.49509179677124,
"currency": "EUR"
}
}
],
"credit_card_required": false,
"special_offer_message": "Car equipped with all-season tyres."
}
],
"filters": {
"applied": [],
"unknown": [],
"requested": []
},
"suppliers": [
{
"id": "17",
"name": "Alamo",
"type": "INTEGRATED",
"logo_url": "https://cdn2.rcstatic.com/sp/images/suppliers/17_logo_200.png"
},
{
"id": "47",
"name": "Avis",
"type": "INTEGRATED",
"logo_url": "https://cdn2.rcstatic.com/sp/images/suppliers/47_logo_200.png"
},
{
"id": "137",
"name": "Hertz",
"type": "INTEGRATED",
"logo_url": "https://cdn2.rcstatic.com/sp/images/suppliers/137_logo_200.png"
}
],
"no_results": null,
"pagination": {
"page": 1,
"capped": false,
"per_page": 2,
"returned": 5,
"offer_cap": 500,
"total_pages": 3,
"total_offers": 238
},
"search_key": "eyJkcml2ZXJzQWdlIjozMCwiZHJvcE9mZkRhdGVUaW1lIjoiMjAyNi0xMS0yN1QxMDowMDowMCIsImRyb3BPZmZMb2NhdGlvbiI6IkJFUiIsImRyb3BPZmZMb2NhdGlvblR5cGUiOiJJQVRBIiwicGlja1VwRGF0ZVRpbWUiOiIyMDI2LTExLTI0VDEwOjAwOjAwIiwicGlja1VwTG9jYXRpb24iOiJCRVIiLCJwaWNrVXBMb2NhdGlvblR5cGUiOiJJQVRBIiwicmVudGFsRHVyYXRpb25JbkRheXMiOjMsInNlcnZpY2VGZWF0dXJlcyI6WyJJTkNMVURFX05VTUJFUl9PRl9TVUlUQ0FTRVMiLCJSRVRVUk5fRVhUUkFTX1dJVEhfUFJJQ0lOR19JTl9NVUxUSV9DQVJfUkVTUE9OU0UiLCJBUFBMRV9DQVJEX0VOQUJMRUQiXSwic2lnbmF0dXJlIjoiUFNmZFFUenJMUTNaVG1aT0JqYlNXdzVTckVRdHFlWXJCNWg5R3ZGb2s3Zz0ifQ==",
"price_range": {
"deposits": {
"currency": "EUR",
"averageValue": 472
},
"driveAwayPrices": {
"currency": "EUR",
"maxValueAfterFiltering": 1027.31,
"minValueAfterFiltering": 198.21
}
},
"available_filters": {
"deals": [
{
"count": 12,
"value": "WITH_DEALS",
"available": true,
"price_from": 336.99
},
{
"count": 226,
"value": "WITHOUT_DEALS",
"available": true,
"price_from": 198.21
}
],
"mileage": [
{
"count": 127,
"value": "LIMITED",
"available": true,
"price_from": 198.21
},
{
"count": 111,
"value": "UNLIMITED",
"available": true,
"price_from": 238.92
}
],
"pay_when": [
{
"count": 238,
"value": "PAY_NOW",
"available": true,
"price_from": 198.21
}
],
"supplier": [
{
"count": 44,
"value": "Alamo",
"available": true,
"price_from": 219.55
},
{
"count": 15,
"value": "Avis",
"available": true,
"price_from": 253.22
},
{
"count": 14,
"value": "Budget",
"available": true,
"price_from": 247.42
}
],
"fuel_type": [
{
"count": 229,
"value": "N/A",
"available": true,
"price_from": 198.21
},
{
"count": 1,
"value": "Self-charging hybrid",
"available": true,
"price_from": 323.45
},
{
"count": 2,
"value": "Electric",
"available": true,
"price_from": 327.93
}
],
"car_category": [
{
"count": 20,
"value": "small",
"available": true,
"categories": [
"economy",
"mini",
"suvs"
],
"price_from": 198.21
},
{
"count": 123,
"value": "medium",
"available": true,
"categories": [
"compact",
"convertible",
"estate"
],
"price_from": 199.74
},
{
"count": 114,
"value": "large",
"available": true,
"categories": [
"estate",
"full_size",
"intermediate"
],
"price_from": 199.74
}
],
"transmission": [
{
"count": 134,
"value": "AUTOMATIC",
"available": true,
"price_from": 218.47
},
{
"count": 104,
"value": "MANUAL",
"available": true,
"price_from": 198.21
}
],
"seat_capacity": [
{
"count": 211,
"value": "UP_TO_5",
"available": true,
"price_from": 198.21
},
{
"count": 12,
"value": "6_TO_7",
"available": true,
"price_from": 378.24
},
{
"count": 15,
"value": "8_TO_9",
"available": true,
"price_from": 461.87
}
],
"seat_category": [
{
"count": 13,
"value": "4",
"available": true,
"price_from": 198.21
},
{
"count": 198,
"value": "5",
"available": true,
"price_from": 199.74
},
{
"count": 27,
"value": "6_OR_ABOVE",
"available": true,
"price_from": 378.24
}
],
"deposit_bucket": [
{
"count": 101,
"value": "BUCKET_1",
"available": true,
"price_from": 219.55
},
{
"count": 83,
"value": "BUCKET_2",
"available": true,
"price_from": 282.57
},
{
"count": 54,
"value": "BUCKET_3",
"available": true,
"price_from": 198.21
}
],
"fuel_policy_type": [
{
"count": 238,
"value": "RETURN_SAME",
"available": true,
"price_from": 198.21
}
],
"pick_up_location": [
{
"count": 238,
"value": "Berlin Brandenburg Airport Willy Brandt",
"available": true,
"price_from": 198.21
}
],
"proposition_type": [
{
"count": 238,
"value": "BR",
"available": true,
"price_from": 198.21
}
],
"free_cancellation": [
{
"count": 238,
"value": "WITH_FREE_CANCELLATION",
"available": true,
"price_from": 198.21
}
],
"car_category_detail": [
{
"count": 31,
"value": "carriers",
"available": true,
"price_from": 359.36
},
{
"count": 5,
"value": "carriers_5",
"available": true,
"price_from": 359.36
},
{
"count": 11,
"value": "carriers_7",
"available": true,
"price_from": 378.24
}
],
"depot_location_type": [
{
"count": 35,
"value": "IN_TERMINAL",
"available": true,
"price_from": 282.57
},
{
"count": 203,
"value": "CAR_RENTAL_CENTRE",
"available": true,
"price_from": 198.21
}
],
"price_per_day_bucket": [
{
"count": 0,
"value": "BUCKET_1",
"available": false
},
{
"count": 96,
"value": "BUCKET_2",
"available": true,
"price_from": 198.21
},
{
"count": 96,
"value": "BUCKET_3",
"available": true,
"price_from": 301.37
}
],
"minimum_supplier_rating": [
{
"count": 238,
"value": "5_OR_ABOVE",
"available": true,
"price_from": 198.21
},
{
"count": 238,
"value": "6_OR_ABOVE",
"available": true,
"price_from": 198.21
},
{
"count": 238,
"value": "7_OR_ABOVE",
"available": true,
"price_from": 198.21
}
],
"insurance_inclusive_pricing": [
{
"count": 151,
"value": "WITH_INSURANCE_INCLUSIVE_PRICING",
"available": true
},
{
"count": 87,
"value": "WITHOUT_INSURANCE_INCLUSIVE_PRICING",
"available": true
}
]
},
"search_parameters": {
"page": 1,
"sort": null,
"engine": "rentalcars_search",
"market": "gb",
"currency": "EUR",
"per_page": 2,
"drivers_age": 30,
"rental_days": 3,
"pickup_datetime": "2026-11-08T10:00:00",
"pickup_location": "BER",
"dropoff_datetime": "2026-11-11T10:00:00",
"dropoff_location": "BER",
"pickup_location_type": "IATA",
"dropoff_location_type": "IATA"
}
}
Errors
Handle these documented responses before retrying or showing customer-facing failures.
Validation Error
A parameter is missing or invalid. No request is made upstream. Not billed.
{
"errors": {
"pickup_location": [
"A pick-up location is required: an airport IATA code or \"latitude,longitude\"."
]
},
"message": "A pick-up location is required: an airport IATA code or \"latitude,longitude\"."
}Request Rejected
Rentalcars rejected the search values, for example a filter value that is not in available_filters. Not billed.
{
"meta": {
"attempts": 1,
"billable": false,
"retryable": false,
"duration_ms": 900,
"endpoint_family": "search"
},
"error": {
"code": "rentalcars_request_rejected",
"message": "Rentalcars rejected the request. Check the parameters."
}
}Rentalcars Temporarily Unavailable
Rentalcars did not answer in time. Retry after a short pause. Other 503 codes start with rentalcars_ too, for example rentalcars_invalid_response. Not billed.
{
"meta": {
"attempts": 1,
"billable": false,
"retryable": true,
"duration_ms": 900,
"endpoint_family": "search"
},
"error": {
"code": "rentalcars_upstream_unavailable",
"message": "Rentalcars is temporarily unavailable. Please retry."
}
}Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.
Try It Live
Test this endpoint in our interactive playground with real data.