Rental Cars Price Scraper avatar

Rental Cars Price Scraper

Pricing

from $0.005 / result

Go to Apify Store
Rental Cars Price Scraper

Rental Cars Price Scraper

Compare rental car prices worldwide. Scrapes Booking.com Cars (Budget, Hertz, Avis, Sixt, Europcar, Enterprise & more) and Sunnycars all-inclusive rates for ANY city — just type a location. Live prices, vehicle specs, suppliers, mileage & insurance, in one normalized schema. JSON/CSV/API, n8n-ready.

Pricing

from $0.005 / result

Rating

5.0

(1)

Developer

Malikgen

Malikgen

Maintained by Community

Actor stats

2

Bookmarked

55

Total users

7

Monthly active users

4 days ago

Last modified

Share

Compare car rental prices across multiple providers for any global city or airport. Get real-time pricing from Booking.com, Sunnycars, and Rentalcars.com in a single run.

Features

  • 3-Provider Comparison: Booking.com, Sunnycars, and Rentalcars.com in one actor
  • Global Location Support: Dynamic location resolution via Rentalcars FTSAutocomplete — any city or airport worldwide, not just a pre-configured list
  • Safe Fallback: Hardcoded maps for UAE/Oman cities ensure existing working locations never break even if the autocomplete call fails
  • Booking.com Integration: Prices from Budget, Dollar, Enterprise, Europcar, Hertz, Avis, Sixt, Thrifty, Alamo, and more
  • Sunnycars All-Inclusive: Transparent pricing with insurance included (EUR)
  • Rentalcars.com: World's largest aggregator — same group as Booking.com
  • Rich Data Extraction: Car details, pricing, ratings, features, mileage policy, and more
  • Pagination Support: Fetch up to 500 results per provider
  • Filter Options: Transmission, extras (GPS, child seat, additional driver)
  • Proxy Support: Wire Apify residential proxy into any provider

Dynamic Location Resolution

Previous versions had a hardcoded list of ~5 Middle East airports. This version resolves any location dynamically:

  1. Dynamic lookup: Calls https://www.rentalcars.com/FTSAutocomplete.do?solrIndex=fts_en&solrRows=10&solrTerm=<location> — a public endpoint (no auth) that returns global airport/city data including IATA codes, coordinates, and provider-specific IDs.
  2. Fallback: If the dynamic call fails or returns no result, falls back to the hardcoded map for UAE/Oman cities. Logs which path was used for every location.
  3. No silent wrong-city: If nothing resolves, the provider is skipped with a clear error record in the dataset — it will never silently default to a wrong city (old behavior was to default to Dubai).

Location Resolution Log Examples

[Location] Booking.com "Tokyo, Japan" → dynamic: Tokyo Haneda Airport (HND) [A]
[Location] Sunnycars "London Heathrow" → fallback map (exact)
[Location] ERROR: Could not resolve Sunnycars region ID for "XYZ" — No fallback available.

Input Parameters

ParameterTypeDescriptionDefault
pickupLocationstringPickup location — any city, airport name, or IATA code"Dubai, UAE"
dropoffLocationstringReturn location (leave empty for same as pickup)Same as pickup
pickupDatestringPickup date (YYYY-MM-DD)7 days from now
dropoffDatestringReturn date (YYYY-MM-DD)14 days from now
pickupTimestringPickup time (HH:MM, 24h)"10:00"
dropoffTimestringReturn time (HH:MM, 24h)"10:00"
providersarray"booking", "sunnycars", "rentalcars"["booking", "sunnycars"]
driverAgeintegerDriver's age (affects pricing)25
currencystringPreferred currency (OMR, AED, USD, EUR, GBP)"OMR"
transmissionstring"" (all), "automatic", or "manual"""
extrasobjectGPS, childSeat, additionalDriverAll false
maxResultsintegerMax results per provider (10–500)100
proxyConfigurationobjectApify Proxy configuseApifyProxy: false

Proxy Recommendations

ProviderWithout proxyWith datacenter proxyWith residential proxy
Booking.comWorksWorksWorks
SunnycarsWorksWorksWorks
Rentalcars.comLikely blockedLikely blockedRecommended

To use residential proxy, set:

{
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Example Input — Global City

{
"pickupLocation": "Tokyo, Japan",
"pickupDate": "2026-08-01",
"dropoffDate": "2026-08-08",
"pickupTime": "10:00",
"dropoffTime": "10:00",
"providers": ["booking", "sunnycars", "rentalcars"],
"driverAge": 30,
"currency": "USD",
"transmission": "automatic",
"maxResults": 50,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Example Input — Middle East (existing behavior preserved)

{
"pickupLocation": "Dubai, UAE",
"pickupDate": "2026-08-15",
"dropoffDate": "2026-08-22",
"providers": ["booking", "sunnycars"],
"currency": "AED",
"maxResults": 100
}

Output Schema

All three providers emit the same key set (null where the source doesn't supply a value — keys are never omitted).

{
"id": "car_0",
"provider": "booking",
"carName": "Toyota Yaris or similar",
"carModel": null,
"carCategory": "economy",
"rawCategory": "small car",
"totalPrice": 185.50,
"currency": "AED",
"pricePerDay": 26.50,
"supplier": "Budget",
"rentalCompany": "Budget",
"pickupLocation": "Dubai, UAE",
"dropoffLocation": "Dubai, UAE",
"pickupLocationResolved": "Dubai International Airport",
"dropoffLocationResolved": "Dubai International Airport",
"pickupDate": "2026-08-15",
"dropoffDate": "2026-08-22",
"pickupTime": "10:00",
"dropoffTime": "10:00",
"rentalDays": 7,
"transmission": "AUTOMATIC",
"seats": 5,
"largeBags": 1,
"smallBags": 1,
"bags": null,
"doors": null,
"mileagePolicy": "unlimited",
"mileageKm": null,
"pickupType": "In Terminal",
"pickupLocationType": null,
"rating": 8.5,
"ratingLabel": "Very good",
"freeCancellation": true,
"immediatelyAvailable": null,
"servicesIncluded": null,
"features": ["5 seats", "Automatic", "Unlimited mileage", "In Terminal"],
"fuelPolicy": null,
"insuranceIncluded": null,
"securityDeposit": null,
"url": "https://cars.booking.com/search-results?...",
"scrapedAt": "2026-06-08T10:00:00.000Z"
}

Provider-specific field availability

FieldBooking.comSunnycarsRentalcars.com
largeBags / smallBagsYesnullnull
bags / doorsnullYesYes
rating / ratingLabelYesnullnull
pickupTypeYesnullnull
pickupLocationTypenullYesnull
servicesIncludednullYesnull
insuranceIncludednulltruenull
fuelPolicynullfull-to-fullYes (if shown)
immediatelyAvailablenullYesnull

Provider Comparison

FeatureBooking.comSunnycarsRentalcars.com
CurrencyConfigurableEURConfigurable
CompaniesMultiple (Budget, Hertz, etc.)Single providerMultiple (world's largest)
InsuranceVaries by companyAll-inclusiveVaries
RatingsPer-car ratingsCompany-wide onlynull
Proxy neededNoNoResidential recommended
Anti-botAWS WAF (raw Playwright bypasses)Usercentrics cookie bannerCloudflare

Pre-configured Fallback Locations

These cities/airports have hardcoded fallback IDs that work even if the dynamic lookup fails:

  • Dubai International Airport (DXB)
  • Abu Dhabi International Airport (AUH)
  • Sharjah International Airport (SHJ)
  • Muscat International Airport (MCT)
  • Salalah Airport (SLL)

Any other global city or airport is resolved dynamically via the Rentalcars autocomplete API.

Integration Examples

n8n Workflow

// In n8n Code node — find cheapest car across all providers
const items = $input.all();
const cheapest = items.reduce((min, item) =>
item.json.totalPrice < min.json.totalPrice ? item : min
);
return [cheapest];

API Call

curl "https://api.apify.com/v2/acts/YOUR_USERNAME~rental-cars-price-scraper/runs?token=YOUR_TOKEN" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"pickupLocation": "London Heathrow",
"pickupDate": "2026-09-01",
"dropoffDate": "2026-09-08",
"providers": ["booking", "rentalcars"],
"currency": "GBP",
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}'

Limitations

  • Rentalcars.com anti-bot: Datacenter IPs are blocked. Residential proxy required for reliable results.
  • Security Deposits: Exact amounts require clicking into each car's details modal. Not scraped (too slow for large result sets).
  • Real-time Availability: Prices and availability change frequently; results represent a snapshot in time.
  • Sunnycars region IDs: Region IDs for non-Middle East cities are resolved via Playwright XHR interception during the scrape. If the intercept fails and no fallback exists, the provider is skipped with an error record.

Changelog

v0.0 (Current)

  • Added Rentalcars.com as 3rd provider
  • Dynamic global location resolution via Rentalcars FTSAutocomplete — any city/airport worldwide
  • Hardcoded maps kept as fallback — existing UAE/Oman cities never break
  • Graceful error on unresolvable location (never silently defaults to wrong city)
  • Proxy wired into all three scrape functions
  • Unified output schema — all providers emit identical key set (null where absent)
  • Added scrapedAt ISO-UTC timestamp and pickupLocationResolved / dropoffLocationResolved fields