KAYAK Car Rental Scraper — Prices, Agencies & Deals avatar

KAYAK Car Rental Scraper — Prices, Agencies & Deals

Pricing

from $1.50 / 1,000 results

Go to Apify Store
KAYAK Car Rental Scraper — Prices, Agencies & Deals

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

9

Monthly active users

19 minutes ago

Last modified

Security

Limited permissions

Share

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.

Apify Car rentals 1000+ Offers Worldwide Export

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

FeatureDetails
Target PlatformKAYAK Car Rentals — worldwide airport (IATA) and city searches
Agencies Covered30+ global & regional agencies (Hertz, Avis, Enterprise, Sixt, Budget, Alamo, National, Dollar, Thrifty, Europcar, Fox, Payless, NU Car, CarWiz & more)
Core Data ExtractedCar 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 & ScaleMulti-page poll pagination + automatic multi-hub expansion supporting 1,000+ car rental offers per run
Deduplication100% deduplicated by unique offer ID (0 duplicates)
Execution SpeedFast pure-HTTP engine — ~60 offers in ~25 seconds; 300+ offers in < 2 minutes
Export FormatsBulk 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 dayPrice and totalPrice as clean numbers, plus currency (USD, EUR, GBP, CAD, AUD…), formatted priceDisplay, and paymentType (PAY_AT_PICKUP vs 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, fuelType and airConditioning.
  • 📜 Transparent rental policies — captures mileagePolicy (Unlimited miles or exact cap), fuelPolicy (full-to-full, etc.), cancellation summary text, and the boolean freeCancellation flag.
  • 🏷️ KAYAK deal & quality intelligence — includes carScore (numeric rating out of 10), scoreRating (Excellent offer, Good offer), dealBadge / dealDescription, and isCheapest / isBestValue boolean indicators.
  • 🔗 Direct booking & provider metadata — outputs the agency name, agencyLogo URL, bookingSite (OTA/supplier), bookingSiteUrl, high-res vehicle image, and direct bookingUrl.
  • 🔁 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 request 1,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).

FieldTypeDefaultDescription
pickupLocationsarray<string>["MIA"]Airport IATA codes (MIA, LAX, JFK, MCO, LHR) or city names (Miami, London, Orlando). Each location is searched separately.
dropoffLocationstring""Optional — for one-way rentals, enter the return airport code or city name. Leave empty for round-trip return to pickup location.
pickupDatestringAuto (+14d)Pickup date in YYYY-MM-DD format. Leave empty to automatically use a date 14 days in the future.
dropoffDatestringAuto (+18d)Drop-off date in YYYY-MM-DD format. Leave empty to automatically use a date 18 days in the future (4-day rental).
pickupHourinteger12Pickup hour in 24-hour format (0–23, where 12 = 12:00 PM noon).
dropoffHourinteger12Drop-off hour in 24-hour format (0–23, where 12 = 12:00 PM noon).
driverAgeinteger30Driver's age (18–99). Useful for analyzing young-driver pricing under age 25.
currencystring"USD"ISO 4217 currency code for prices (USD, EUR, GBP, CAD, AUD, AED).
sortstring"rank_a"Sort order: "rank_a" (Recommended), "price_a" (Price: lowest first), "price_d" (Price: highest first).
priceModestring"total""total" (total price for the rental window) or "per-day". Both dayPrice and totalPrice are always extracted.
maxItemsPerSearchinteger100 (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.
proxyConfigurationobjectUS ResidentialProxy 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 CodeAirport / MarketTypical Offers per SearchMajor Agencies Active
MIAMiami International Airport420–500+ offersHertz, Avis, Sixt, Enterprise, Alamo, NU Car, Fox, Dollar, Thrifty
MCOOrlando International Airport450–520+ offersAlamo, Enterprise, National, Avis, Budget, Sixt, Payless, Ace
LAXLos Angeles International Airport400–480+ offersHertz, Enterprise, Sixt, Avis, Budget, Dollar, Thrifty, Midway
LASHarry Reid International (Las Vegas)380–460+ offersAvis, Budget, Enterprise, Alamo, Sixt, Dollar, Thrifty, NU Car
JFKNew York John F. Kennedy300–400+ offersHertz, Avis, Enterprise, Budget, Sixt, Dollar, Alamo
LHRLondon Heathrow Airport350–450+ offersEuropcar, Sixt, Hertz, Avis, Enterprise, Green Motion, Keddy
DXBDubai International Airport320–420+ offersSixt, 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
FieldTypeCoverageDescription
carNamestring🟢 HighRepresentative car model name (e.g. "Nissan Kicks", "Toyota Corolla").
carClassstring🟢 HighStandardized vehicle class (Economy, Compact SUV, Intermediate, Standard, Luxury, Minivan).
carCategorystring🟢 HighBroad category group (car, suv, van, truck, convertible).
transmissionstring🟢 High"Automatic" or "Manual".
seatsinteger🟢 HighAdult passenger seat capacity (e.g. 4, 5, 7).
bagsinteger🟢 HighLuggage bag capacity (e.g. 2, 3, 4).
doorsinteger🟢 HighDoor count (e.g. 2, 4).
fuelTypestring🟢 HighFuel / powertrain type (Gas, Diesel, Hybrid, Electric).
airConditioningboolean🟢 HighWhether the vehicle includes air conditioning (true / false).
imagestring🟢 HighDirect URL to the vehicle image.
💰 Pricing, Agency & Provider
FieldTypeCoverageDescription
agencystring🟢 HighCar rental company name (Hertz, Avis, Enterprise, Sixt, Alamo, Budget, NU Car).
agencyLogostring🟢 HighDirect URL to the rental agency's logo image.
bookingSitestring🟢 HighOTA or provider offering this rate (Priceline, Expedia, Booking.com, or direct agency).
bookingSiteUrlstring🟡 ConditionalHomepage URL of the booking provider when supplied.
dayPricenumber🟢 HighNumeric daily rental rate in currency.
totalPricenumber🟢 HighNumeric total price for the full rental window in currency.
currencystring🟢 HighISO currency code (USD, EUR, GBP, etc.).
priceDisplaystring🟢 HighFormatted total price string as displayed on KAYAK (e.g. "$16", "€142").
paymentTypestring🟢 HighPayment timing (PAY_AT_PICKUP, PREPAID, etc.).
🏷️ Quality Scores, Deal Badges & Rental Policies
FieldTypeCoverageDescription
carScorenumber🟢 HighKAYAK's numeric offer quality score (0–10 scale, rounded to 1 decimal).
scoreRatingstring🟢 HighHuman-readable quality rating ("Excellent offer", "Good offer", "Basic offer").
scoreTypestring🟢 HighMachine-friendly rating tier ("excellent", "good", "basic").
dealBadgestring🟡 ConditionalPromotional deal badge when KAYAK flags an unusually low rate (e.g. "91% cheaper").
dealDescriptionstring🟡 ConditionalFull deal explanation comparing the offer against the class average.
isCheapestboolean🟢 Hightrue if KAYAK marks this offer as the cheapest in the search.
isBestValueboolean🟢 Hightrue if KAYAK marks this offer as the best overall value.
mileagePolicystring🟢 HighMileage allowance ("Unlimited miles" or specific distance cap).
fuelPolicystring🟡 ConditionalFuel return policy (e.g. "full-to-full").
cancellationstring🟡 ConditionalShort description of cancellation terms.
freeCancellationboolean🟢 HighWhether free cancellation is available (true / false).
FieldTypeCoverageDescription
bookingUrlstring🟢 HighAbsolute deep link to book this exact offer via KAYAK.
pickupLocationstring🟢 HighResolved pickup IATA code or KAYAK city ID.
dropoffLocationstring🟢 HighResolved drop-off IATA code or KAYAK city ID.
pickupDatestring🟢 HighPickup date (YYYY-MM-DD) used for the search.
dropoffDatestring🟢 HighDrop-off date (YYYY-MM-DD) used for the search.
searchLocationstring🟢 HighOriginal location query string provided in pickupLocations.

🔁 Pagination & 1,000+ scale

For each location in pickupLocations, the KAYAK car rental scraper:

  1. Establishes a clean session and resolves your airport code or city name.
  2. Polls the live search until all partner agencies have returned their inventory (status: complete).
  3. Walks through the paginated offer pages (15 offers per page) with no artificial 60-page cutoff, deduplicating every record by KAYAK's internal resultId.
  4. 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 (or maxItems) to 500+ or 1,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 ApifyClient
client = 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: 60 on MIA) to verify your pipeline in ~25 seconds, then add multiple airports or raise maxItemsPerSearch to 500–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-null dealBadge values 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.

Building a comprehensive travel, mobility or automotive pricing pipeline? Pair this Actor with:


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 / maxRecords aliases, enabled automatic multi-airport expansion when 500+ or 1,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, discrete transmission / 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.