Rental Cars Price Scraper
Pricing
from $0.005 / result
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
Maintained by CommunityActor stats
2
Bookmarked
55
Total users
7
Monthly active users
4 days ago
Last modified
Categories
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:
- 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. - 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.
- 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
| Parameter | Type | Description | Default |
|---|---|---|---|
pickupLocation | string | Pickup location — any city, airport name, or IATA code | "Dubai, UAE" |
dropoffLocation | string | Return location (leave empty for same as pickup) | Same as pickup |
pickupDate | string | Pickup date (YYYY-MM-DD) | 7 days from now |
dropoffDate | string | Return date (YYYY-MM-DD) | 14 days from now |
pickupTime | string | Pickup time (HH:MM, 24h) | "10:00" |
dropoffTime | string | Return time (HH:MM, 24h) | "10:00" |
providers | array | "booking", "sunnycars", "rentalcars" | ["booking", "sunnycars"] |
driverAge | integer | Driver's age (affects pricing) | 25 |
currency | string | Preferred currency (OMR, AED, USD, EUR, GBP) | "OMR" |
transmission | string | "" (all), "automatic", or "manual" | "" |
extras | object | GPS, childSeat, additionalDriver | All false |
maxResults | integer | Max results per provider (10–500) | 100 |
proxyConfiguration | object | Apify Proxy config | useApifyProxy: false |
Proxy Recommendations
| Provider | Without proxy | With datacenter proxy | With residential proxy |
|---|---|---|---|
| Booking.com | Works | Works | Works |
| Sunnycars | Works | Works | Works |
| Rentalcars.com | Likely blocked | Likely blocked | Recommended |
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
| Field | Booking.com | Sunnycars | Rentalcars.com |
|---|---|---|---|
largeBags / smallBags | Yes | null | null |
bags / doors | null | Yes | Yes |
rating / ratingLabel | Yes | null | null |
pickupType | Yes | null | null |
pickupLocationType | null | Yes | null |
servicesIncluded | null | Yes | null |
insuranceIncluded | null | true | null |
fuelPolicy | null | full-to-full | Yes (if shown) |
immediatelyAvailable | null | Yes | null |
Provider Comparison
| Feature | Booking.com | Sunnycars | Rentalcars.com |
|---|---|---|---|
| Currency | Configurable | EUR | Configurable |
| Companies | Multiple (Budget, Hertz, etc.) | Single provider | Multiple (world's largest) |
| Insurance | Varies by company | All-inclusive | Varies |
| Ratings | Per-car ratings | Company-wide only | null |
| Proxy needed | No | No | Residential recommended |
| Anti-bot | AWS WAF (raw Playwright bypasses) | Usercentrics cookie banner | Cloudflare |
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 providersconst 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
scrapedAtISO-UTC timestamp andpickupLocationResolved/dropoffLocationResolvedfields
