KAYAK Car Rental Scraper — Prices, Agencies & Deals
Pricing
from $1.50 / 1,000 results
KAYAK Car Rental Scraper — Prices, Agencies & Deals
Scrape car rental prices from KAYAK worldwide — car model, class, rental agency, price per day and total, transmission, seats, mileage and cancellation policy. Compare deals by airport and dates. Independent tool, not affiliated with KAYAK.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
9
Monthly active users
19 minutes ago
Last modified
Categories
Security
Limited permissionsShare
KAYAK Car Rental Scraper — Prices, Agencies, Specs & Deals
Scrape KAYAK car rental prices worldwide — car model, class, rental agency, price per day and total, transmission, seats, bags, mileage and cancellation policy — as clean, structured data. No login, no captcha, no coding.
Bulk export to JSON, CSV, Excel, or API with 1,000+ results pagination for travel B2B intelligence.
Built for travel agencies, OTAs and affiliates, price-comparison and deals sites, car-rental revenue managers, fleet operators, market-research and pricing analysts, and travelers who need live rental rates across every agency — without clicking through KAYAK page by page.
⚡ At a glance
| Feature | Details |
|---|---|
| Target Platform | KAYAK Car Rentals — worldwide airport (IATA) and city searches |
| Agencies Covered | 30+ global & regional agencies (Hertz, Avis, Enterprise, Sixt, Budget, Alamo, National, Dollar, Thrifty, Europcar, Fox, Payless, NU Car, CarWiz & more) |
| Core Data Extracted | Car Model, Class, Category, Transmission, Seats, Bags, Doors, Fuel Type, AC, Agency, Booking Site, Day Price, Total Price, Currency, Mileage Policy, Fuel Policy, Cancellation Policy, Car Score, Deal Badges, Deep Booking URL |
| Pagination & Scale | Multi-page poll pagination + automatic multi-hub expansion supporting 1,000+ car rental offers per run |
| Deduplication | 100% deduplicated by unique offer ID (0 duplicates) |
| Execution Speed | Fast pure-HTTP engine — ~60 offers in ~25 seconds; 300+ offers in < 2 minutes |
| Export Formats | Bulk export to JSON, CSV, Excel (XLSX), HTML, XML, or REST API |
🔎 Why scrape KAYAK car rentals?
KAYAK is one of the world's largest travel metasearch engines. For car rentals it does something uniquely valuable: for a single pickup location and date range, it polls dozens of rental agencies and OTA booking sites simultaneously — Hertz, Avis, Enterprise, Budget, Sixt, Alamo, Dollar, Thrifty, Payless, NU Car, CarWiz, Priceline, Expedia, Booking.com and regional suppliers — and returns every vehicle class, every agency and every rate side by side.
That comparison grid is essential for automotive & travel B2B intelligence, dynamic pricing, and fleet rate benchmarking. However, on the web interface it is locked behind an asynchronous multi-phase polling flow, infinite-scroll pagination, location autocomplete resolution, and strict bot protection. Copying rates by hand is slow, error-prone, and impossible to run across multiple airports on a daily schedule.
This KAYAK car rental scraper (kayak-car-rental-scraper) automates the entire workflow. Provide one or more airport codes or city names and your rental dates; the Actor opens a live search, waits for all agencies to report back, walks the paginated result set (and automatically scales across major airport hubs when you request 1,000+ results), deduplicates every offer, and outputs a structured dataset ready for BI dashboards, spreadsheets, or automated pricing pipelines.
Common reasons teams use this KAYAK data extractor:
- 📊 Competitive rate monitoring — track competitor car-rental prices by agency, airport, vehicle class and lead time every day.
- 💰 Price-comparison & travel deal feeds — power a travel portal, newsletter or mobile app with live, structured rental offers and direct booking links.
- 🧭 Car-rental revenue management — benchmark your fleet's daily and total rates against local airport and off-airport competitors.
- 🏷️ Under-market deal detection — surface offers flagged with KAYAK's own deal badges (e.g.
"91% cheaper than the average SUV offer"). - 📈 Fleet & seasonal market research — analyze pricing elasticity, EV/hybrid share, transmission mix and cancellation terms across cities and seasons.
- 🤝 Affiliate & OTA catalog building — assemble a rich car-rental catalog with vehicle photos, seat/bag capacities, policies and deep-linked booking URLs.
- 🧳 Corporate travel procurement — compare every supplier's rate and mileage/cancellation policy across top business travel hubs in one export.
✨ What this KAYAK scraper does
- 🌍 Search any airport or city worldwide — pass 3-letter IATA airport codes (
MIA,LAX,JFK,LHR,DXB,CDG) or city names (Miami,London,Orlando,Los Angeles,Paris). Add multiple locations in a single run. - 💰 Complete per-day & total pricing — extracts both
dayPriceandtotalPriceas clean numbers, pluscurrency(USD,EUR,GBP,CAD,AUD…), formattedpriceDisplay, andpaymentType(PAY_AT_PICKUPvs prepay). - 🚗 Discrete vehicle specifications — unlike basic scrapers that only dump a title string, this Actor extracts discrete columns for
carName,carClass,carCategory,transmission(Automatic/Manual),seats,bags,doors,fuelTypeandairConditioning. - 📜 Transparent rental policies — captures
mileagePolicy(Unlimited milesor exact cap),fuelPolicy(full-to-full, etc.),cancellationsummary text, and the booleanfreeCancellationflag. - 🏷️ KAYAK deal & quality intelligence — includes
carScore(numeric rating out of 10),scoreRating(Excellent offer,Good offer),dealBadge/dealDescription, andisCheapest/isBestValueboolean indicators. - 🔗 Direct booking & provider metadata — outputs the
agencyname,agencyLogoURL,bookingSite(OTA/supplier),bookingSiteUrl, high-res vehicleimage, and directbookingUrl. - 🔁 Unlocked 1,000+ deep pagination — walks every page of results (
15 offers per page) without low page caps, and automatically expands across major airport hubs when you request1,000+items on a single/default location. - 🧭 One-way & custom driver targeting — supports one-way rentals (
dropoffLocation), custom pickup/drop-off hours (0–23),driverAge(18–99), and sort order (rank_a,price_a,price_d).
🎯 Use cases & B2B intelligence workflows
1. Car-Rental Revenue Management & Dynamic Pricing
Independent fleet operators, franchises, and Turo/fleet hosts use this KAYAK car rental scraper to monitor how major brands (Hertz, Enterprise, Avis, Sixt) and budget challengers (NU Car, Fox, Payless) price Economy, Compact SUV, Minivan and Luxury classes at 1-day, 7-day, 14-day and 30-day lead times.
2. OTA, Metasearch & Travel Affiliate Portals
Travel publishers and affiliate marketers scrape KAYAK to populate landing pages with real-time "cheapest car rental in Miami / Los Angeles / Orlando" tables, complete with vehicle capacity (seats, bags), freeCancellation badges, agency logos, and deep bookingUrl links.
3. Corporate Travel & Procurement Benchmarking
Corporate travel managers export multi-city rate tables across top business airports (JFK, ORD, LAX, LHR, FRA) to negotiate corporate rate agreements backed by empirical daily rate distributions.
4. Financial & Equity Research on Mobility Providers
Market analysts track fleet supply, average daily rates (ADR), pricing dispersion, and OTA distribution share (Priceline, Expedia, Booking.com, direct brand sites) across US and European airports over time.
📥 Input parameters
Fill in the no-code form in Apify Console or pass JSON via the API. All fields are optional — running with default/empty input automatically collects a live sample from Miami (MIA).
| Field | Type | Default | Description |
|---|---|---|---|
pickupLocations | array<string> | ["MIA"] | Airport IATA codes (MIA, LAX, JFK, MCO, LHR) or city names (Miami, London, Orlando). Each location is searched separately. |
dropoffLocation | string | "" | Optional — for one-way rentals, enter the return airport code or city name. Leave empty for round-trip return to pickup location. |
pickupDate | string | Auto (+14d) | Pickup date in YYYY-MM-DD format. Leave empty to automatically use a date 14 days in the future. |
dropoffDate | string | Auto (+18d) | Drop-off date in YYYY-MM-DD format. Leave empty to automatically use a date 18 days in the future (4-day rental). |
pickupHour | integer | 12 | Pickup hour in 24-hour format (0–23, where 12 = 12:00 PM noon). |
dropoffHour | integer | 12 | Drop-off hour in 24-hour format (0–23, where 12 = 12:00 PM noon). |
driverAge | integer | 30 | Driver's age (18–99). Useful for analyzing young-driver pricing under age 25. |
currency | string | "USD" | ISO 4217 currency code for prices (USD, EUR, GBP, CAD, AUD, AED). |
sort | string | "rank_a" | Sort order: "rank_a" (Recommended), "price_a" (Price: lowest first), "price_d" (Price: highest first). |
priceMode | string | "total" | "total" (total price for the rental window) or "per-day". Both dayPrice and totalPrice are always extracted. |
maxItemsPerSearch | integer | 100 (prefill 60) | Maximum car offers to collect per pickup location (0 = unlimited). When set to 500+ or 1,000+ on a single/default location, automatically expands across major airport hubs to reach your target. |
proxyConfiguration | object | US Residential | Proxy configuration. Residential proxies are required for KAYAK and enabled by default. |
Example input (multi-airport rate comparison)
{"pickupLocations": ["MIA", "LAX", "MCO"],"pickupDate": "2026-12-01","dropoffDate": "2026-12-05","pickupHour": 12,"dropoffHour": 12,"driverAge": 30,"currency": "USD","sort": "price_a","priceMode": "total","maxItemsPerSearch": 200,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Example input (1,000+ offers bulk extraction)
{"pickupLocations": ["MIA", "LAX", "MCO", "LAS"],"sort": "price_a","maxItemsPerSearch": 300}
Example input (One-way Florida to California road-trip rates)
{"pickupLocations": ["MIA"],"dropoffLocation": "LAX","pickupDate": "2026-12-15","dropoffDate": "2026-12-22","driverAge": 30,"currency": "USD","sort": "price_a","maxItemsPerSearch": 100}
Example input (European airport hubs in EUR)
{"pickupLocations": ["LHR", "CDG", "FRA", "MAD", "FCO"],"currency": "EUR","sort": "rank_a","maxItemsPerSearch": 150}
🛫 Top Airport Hubs & Typical Offer Volumes
| IATA Code | Airport / Market | Typical Offers per Search | Major Agencies Active |
|---|---|---|---|
MIA | Miami International Airport | 420–500+ offers | Hertz, Avis, Sixt, Enterprise, Alamo, NU Car, Fox, Dollar, Thrifty |
MCO | Orlando International Airport | 450–520+ offers | Alamo, Enterprise, National, Avis, Budget, Sixt, Payless, Ace |
LAX | Los Angeles International Airport | 400–480+ offers | Hertz, Enterprise, Sixt, Avis, Budget, Dollar, Thrifty, Midway |
LAS | Harry Reid International (Las Vegas) | 380–460+ offers | Avis, Budget, Enterprise, Alamo, Sixt, Dollar, Thrifty, NU Car |
JFK | New York John F. Kennedy | 300–400+ offers | Hertz, Avis, Enterprise, Budget, Sixt, Dollar, Alamo |
LHR | London Heathrow Airport | 350–450+ offers | Europcar, Sixt, Hertz, Avis, Enterprise, Green Motion, Keddy |
DXB | Dubai International Airport | 320–420+ offers | Sixt, Hertz, Avis, Europcar, Dollar, Thrifty, Autostrad |
📤 Output schema & sample data
Each car rental offer is saved as a flat, strongly typed JSON object in the Apify Dataset. Here is a real record from a live Miami (MIA) run:
{"carName": "Nissan Kicks","carClass": "Compact SUV","carCategory": "suv","transmission": "Automatic","seats": 4,"bags": 4,"doors": 4,"fuelType": "Gas","airConditioning": true,"agency": "NU Car","agencyLogo": "https://content.r9cdn.net/rimg/provider-logos/cars/h/nucar.png?crop=true&width=160","bookingSite": "Priceline","bookingSiteUrl": "https://priceline.com","dayPrice": 4,"totalPrice": 16,"currency": "USD","priceDisplay": "$16","paymentType": "PAY_AT_PICKUP","mileagePolicy": "Unlimited miles","fuelPolicy": "full-to-full","cancellation": "Cancellation fees may apply","freeCancellation": false,"carScore": 6,"scoreRating": "Good offer","scoreType": "good","dealBadge": "91% cheaper","dealDescription": "This offer is 91% cheaper than the average SUV offer ($192)","isBestValue": false,"isCheapest": false,"image": "https://content.r9cdn.net/rimg/car-images/generic/05_suv-small_white.png?width=360","bookingUrl": "https://www.kayak.com/book/car?code=2mBmNau9UL...&viewRank=0","pickupLocation": "MIA","dropoffLocation": "MIA","pickupDate": "2026-11-24","dropoffDate": "2026-11-28","searchLocation": "MIA"}
Output field reference
Coverage key: 🟢 High (~98–100% of offers) · 🟡 Conditional (populated when the agency/offer provides it)
🚗 Vehicle Specifications
| Field | Type | Coverage | Description |
|---|---|---|---|
carName | string | 🟢 High | Representative car model name (e.g. "Nissan Kicks", "Toyota Corolla"). |
carClass | string | 🟢 High | Standardized vehicle class (Economy, Compact SUV, Intermediate, Standard, Luxury, Minivan). |
carCategory | string | 🟢 High | Broad category group (car, suv, van, truck, convertible). |
transmission | string | 🟢 High | "Automatic" or "Manual". |
seats | integer | 🟢 High | Adult passenger seat capacity (e.g. 4, 5, 7). |
bags | integer | 🟢 High | Luggage bag capacity (e.g. 2, 3, 4). |
doors | integer | 🟢 High | Door count (e.g. 2, 4). |
fuelType | string | 🟢 High | Fuel / powertrain type (Gas, Diesel, Hybrid, Electric). |
airConditioning | boolean | 🟢 High | Whether the vehicle includes air conditioning (true / false). |
image | string | 🟢 High | Direct URL to the vehicle image. |
💰 Pricing, Agency & Provider
| Field | Type | Coverage | Description |
|---|---|---|---|
agency | string | 🟢 High | Car rental company name (Hertz, Avis, Enterprise, Sixt, Alamo, Budget, NU Car). |
agencyLogo | string | 🟢 High | Direct URL to the rental agency's logo image. |
bookingSite | string | 🟢 High | OTA or provider offering this rate (Priceline, Expedia, Booking.com, or direct agency). |
bookingSiteUrl | string | 🟡 Conditional | Homepage URL of the booking provider when supplied. |
dayPrice | number | 🟢 High | Numeric daily rental rate in currency. |
totalPrice | number | 🟢 High | Numeric total price for the full rental window in currency. |
currency | string | 🟢 High | ISO currency code (USD, EUR, GBP, etc.). |
priceDisplay | string | 🟢 High | Formatted total price string as displayed on KAYAK (e.g. "$16", "€142"). |
paymentType | string | 🟢 High | Payment timing (PAY_AT_PICKUP, PREPAID, etc.). |
🏷️ Quality Scores, Deal Badges & Rental Policies
| Field | Type | Coverage | Description |
|---|---|---|---|
carScore | number | 🟢 High | KAYAK's numeric offer quality score (0–10 scale, rounded to 1 decimal). |
scoreRating | string | 🟢 High | Human-readable quality rating ("Excellent offer", "Good offer", "Basic offer"). |
scoreType | string | 🟢 High | Machine-friendly rating tier ("excellent", "good", "basic"). |
dealBadge | string | 🟡 Conditional | Promotional deal badge when KAYAK flags an unusually low rate (e.g. "91% cheaper"). |
dealDescription | string | 🟡 Conditional | Full deal explanation comparing the offer against the class average. |
isCheapest | boolean | 🟢 High | true if KAYAK marks this offer as the cheapest in the search. |
isBestValue | boolean | 🟢 High | true if KAYAK marks this offer as the best overall value. |
mileagePolicy | string | 🟢 High | Mileage allowance ("Unlimited miles" or specific distance cap). |
fuelPolicy | string | 🟡 Conditional | Fuel return policy (e.g. "full-to-full"). |
cancellation | string | 🟡 Conditional | Short description of cancellation terms. |
freeCancellation | boolean | 🟢 High | Whether free cancellation is available (true / false). |
🔗 Booking Links & Search Context
| Field | Type | Coverage | Description |
|---|---|---|---|
bookingUrl | string | 🟢 High | Absolute deep link to book this exact offer via KAYAK. |
pickupLocation | string | 🟢 High | Resolved pickup IATA code or KAYAK city ID. |
dropoffLocation | string | 🟢 High | Resolved drop-off IATA code or KAYAK city ID. |
pickupDate | string | 🟢 High | Pickup date (YYYY-MM-DD) used for the search. |
dropoffDate | string | 🟢 High | Drop-off date (YYYY-MM-DD) used for the search. |
searchLocation | string | 🟢 High | Original location query string provided in pickupLocations. |
🔁 Pagination & 1,000+ scale
For each location in pickupLocations, the KAYAK car rental scraper:
- Establishes a clean session and resolves your airport code or city name.
- Polls the live search until all partner agencies have returned their inventory (
status: complete). - Walks through the paginated offer pages (
15 offers per page) with no artificial 60-page cutoff, deduplicating every record by KAYAK's internalresultId. - Automatic multi-hub expansion for 1,000+ runs: A single airport typically has ~400–500 total rental car offers across all agencies. If you set
maxItemsPerSearch(ormaxItems) to500+or1,000+with a single/default location, once that airport's inventory is exhausted the Actor automatically expands across major high-volume airport hubs (MIA,LAX,MCO,LAS,ORD,JFK,ATL,DFW,DEN,SFO,SEA,BOS) until your target record count is reached.
💻 API usage examples
Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/kayak-car-rental-scraper").call(run_input={"pickupLocations": ["MIA", "LAX"],"pickupDate": "2026-12-10","dropoffDate": "2026-12-14","sort": "price_a","maxItemsPerSearch": 150,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['pickupLocation']} | {item['agency']} | {item['carName']} ({item['carClass']}) | ${item['dayPrice']}/day (${item['totalPrice']} total)")
Node.js (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/kayak-car-rental-scraper').call({pickupLocations: ['MCO', 'LAS'],sort: 'price_a',maxItemsPerSearch: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Extracted ${items.length} car rental offers`);
cURL
curl -X POST "https://api.apify.com/v2/acts/haketa~kayak-car-rental-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"pickupLocations":["MIA"],"maxItemsPerSearch":60}'
💡 Best practices & pro tips
- Preview fast, then scale: Use the default prefill (
maxItemsPerSearch: 60onMIA) to verify your pipeline in ~25 seconds, then add multiple airports or raisemaxItemsPerSearchto500–1000+. - Surface lowest rates first: Set
sort: "price_a"when your goal is tracking price floors by car class (Economy,Compact SUV,Standard). - Filter standout deals: Use
isCheapest === true,isBestValue === true, or non-nulldealBadgevalues to power automated travel-deal alerts. - Keep US Residential proxy enabled: KAYAK strictly blocks datacenter IP ranges; the default residential proxy configuration handles session rotation automatically.
- Schedule daily lead-time curves: Schedule the Actor via Apify Cron to run daily for upcoming holiday windows and stream results directly to Google Sheets, BigQuery, Snowflake, Make, or Zapier.
❓ Frequently asked questions
How many car rental offers can I extract per run?
A single major airport (such as MIA, LAX, or MCO) typically exposes 400 to 500+ unique offers across 30+ rental agencies. By passing multiple airports in pickupLocations — or setting maxItemsPerSearch / maxItems to 1,000+ — you can collect 1,000 to 5,000+ deduplicated offers in a single run.
Why do I need residential proxies? KAYAK protects its search endpoints against datacenter IP addresses. The Actor is pre-configured to use Apify Residential proxies and maintains sticky session cookies per search so every pagination poll succeeds reliably.
Can I search by city name instead of airport code?
Yes. Entering "Miami", "Orlando", "London", or "Paris" in pickupLocations automatically resolves the city via KAYAK's location resolver and scrapes city rental offers. Three-letter IATA codes (MIA, MCO, LHR, CDG) target airport terminal/shuttle inventory directly.
Does this support one-way car rentals?
Yes. Provide your return airport code or city name in dropoffLocation (e.g. pickupLocations: ["MIA"], dropoffLocation: "MCO") to scrape one-way rental pricing and drop-off fees.
What happens if I leave pickupDate and dropoffDate blank?
The Actor automatically calculates a deterministic 4-day rental window starting 14 days from the run date (+14 days to +18 days), making scheduled daily rate-monitoring runs effortless without manually updating dates.
In what formats can I export the data? Every run's dataset can be downloaded in JSON, CSV, Excel (XLSX), HTML table, XML, or RSS, or consumed programmatically via the Apify REST API.
⚠️ Limitations
- Car rental prices and inventory are dynamic and change continuously; each run captures a live point-in-time snapshot.
- Secondary policy fields (
fuelPolicy,cancellation,dealBadge) depend on what the underlying supplier or OTA publishes for that specific rate. - Residential proxy traffic is required; running without proxies or with datacenter proxies will result in blocked requests.
🔗 Related scrapers
Building a comprehensive travel, mobility or automotive pricing pipeline? Pair this Actor with:
- 🚗 AutoScout24 Scraper — Cars, Prices, Specs & Dealer Contacts — Europe's largest car marketplace with full vehicle specs and dealer leads.
- 🚙 AutoTrader UK Scraper — Cars, Prices, Specs & Dealer Contacts — UK used & new car listings, prices and dealer details.
- 🇺🇸 CarGurus Scraper — Listings, Prices, IMV & Dealer Leads — US car listings with Instant Market Value deal ratings.
- 🇵🇱 Otomoto.pl Scraper — Poland Used Cars — Poland's #1 automotive marketplace.
- 🌍 YallaMotor Scraper — GCC New & Used Cars — Used and new car pricing across UAE, Saudi Arabia, Qatar, Kuwait, Bahrain & Egypt.
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by KAYAK or Booking Holdings. All trademarks are the property of their respective owners.
📋 Changelog
- v1.2 (2026-11-10) — Unlocked 1,000+ deep pagination & multi-hub scaling: removed the 60-page pagination cap per location, added support for
maxItems/maxRecordsaliases, enabled automatic multi-airport expansion when500+or1,000+offers are requested on a single/default location, and tuned fast 60-offer prefill execution. - v1.1 (2026-08-06) — Full discrete vehicle & deal schema: added
carScore,scoreRating,dealBadge,dealDescription,isCheapest,isBestValue, discretetransmission/seats/bags/doors/fuelType/airConditioning, and city-to-location autocomplete resolution. - v1.0 (2026-08-01) — Initial release: live KAYAK car rental metasearch extraction across worldwide airports and cities with per-day and total pricing, agency logos, and deep booking URLs.