# Kayak Car Rental API (`apiguruu/kayak-car-rental-scraper`) Actor

Search Kayak car rentals with full filter support — car class, transmission, agency, price, policies, and more. Structured results ready to use. For FULL API With Flights and hotels as well visit here :https://rapidapi.com/matepapava123/api/kayak-api

- **URL**: https://apify.com/apiguruu/kayak-car-rental-scraper.md
- **Developed by:** [apiguru](https://apify.com/apiguruu) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 3 total users, 3 monthly users, 94.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Kayak Car Rental Scraper

Search live car rental data from Kayak — filter by car class, transmission, agency, price, policies, eco class, and more. Structured results ready to use.

Each actor run executes **one scrape type** with its own set of parameters. Results are pushed to the Apify dataset, with one item per car offer or location suggestion.

***

### Need Flights or Hotels?

This actor covers **car rentals only**. For the full Kayak travel API:

**[KAYAK API on RapidAPI →](https://rapidapi.com/matepapava123/api/kayak-api)**

Available on RapidAPI:

- `/search-flights` — one-way and round-trip with full filter support (airlines, stops, price, alliances)
- `/search-hotels` — hotel search with star rating, amenities, price filters, and location-based search
- `/search-locations` — airport and city lookup for flights
- `/search-hotel-locations` — hotel/stay location lookup
- `/track-flights` — live flight status by airline code and flight number
- `/search-airlines` — airline lookup by name
- `/search-airports` — airport lookup by name or IATA code
- `/search-cars` — same car search as this actor, via REST API

***

### Scrape Types

| scrapeType | What it does |
|---|---|
| `LOCATION_SEARCH` | Find Kayak location IDs for cities and airports |
| `CAR_SEARCH` | Find rental cars with full filter support |

***

### Usage

#### 1. LOCATION\_SEARCH

Find Kayak location query IDs needed for car search.

**Input:**

```json
{
  "scrapeType": "LOCATION_SEARCH",
  "locationQuery": "Miami",
  "locationType": "cityonly",
  "locationCountry": "US"
}
```

**Output (per location):**

```json
{
  "scrape_type": "LOCATION_SEARCH",
  "data": {
    "query": "Miami",
    "id": "16078",
    "displayname": "Miami, Florida, United States",
    "cityname": "Miami",
    "country": "United States",
    "lat": 25.7617,
    "lng": -80.1918
  }
}
```

Use the `id` field from `data` as `pickupLocation` in CAR\_SEARCH.

***

#### 2. CAR\_SEARCH

Search for rental cars at a pickup location.

**Recommended workflow:**

1. Run `LOCATION_SEARCH` to get a `pickupLocation` ID.
2. Run `CAR_SEARCH` without `carFilters` to see `filter_data` in the metadata item.
3. Copy filter values into `carFilters` and rerun for refined results.

**Simple input:**

```json
{
  "scrapeType": "CAR_SEARCH",
  "pickupLocation": "16078",
  "pickupDate": "2026-11-01",
  "dropoffDate": "2026-11-08",
  "pickupHour": 10,
  "dropoffHour": 18,
  "currencyCode": "USD",
  "countryCode": "US",
  "pageSize": 20
}
```

**With filters:**

```json
{
  "scrapeType": "CAR_SEARCH",
  "pickupLocation": "16078",
  "pickupDate": "2026-11-01",
  "dropoffDate": "2026-11-08",
  "pickupHour": 10,
  "dropoffHour": 18,
  "driverAge": 35,
  "currencyCode": "USD",
  "countryCode": "US",
  "sortMode": "price_a",
  "priceMode": "total",
  "pageSize": 20,
  "carFilters": {
    "carClass": ["SUV", "MEDIUM"],
    "transmission": "Automatic",
    "priceRange": "200-800",
    "carAgency": ["hertz", "sixt"],
    "carPolicies": ["cancel", "mileage"],
    "carOptions": ["AC", "NavigationSystem"],
    "ecoClass": "Hybrid",
    "paymentType": "PREPAY"
  }
}
```

**One-way rental:**

```json
{
  "scrapeType": "CAR_SEARCH",
  "pickupLocation": "16078",
  "dropoffLocation": "16079",
  "pickupDate": "2026-11-01",
  "dropoffDate": "2026-11-08"
}
```

**Output (per car offer):**

```json
{
  "scrape_type": "CAR_SEARCH",
  "data": {
    "resultId": "...",
    "agency": { "name": "Hertz", "code": "hertz" },
    "car": { "class": "SUV", "name": "Jeep Grand Cherokee or similar" },
    "price": { "total": 333.60, "currency": "USD" },
    "...full Kayak car result fields..."
  }
}
```

**Final metadata item:**

```json
{
  "scrape_type": "CAR_SEARCH",
  "is_metadata": true,
  "data": {
    "search_id": "abc123",
    "search_status": "completed",
    "total_count": 156,
    "filtered_count": 22,
    "pushed": 20,
    "result_statistics": {
      "total_raw_results": 25,
      "filtered_ads": 3,
      "regular_cars": 22
    },
    "filter_data": { "...available filters from Kayak..." }
  }
}
```

***

### All Input Parameters

#### Required (CAR\_SEARCH)

| Parameter | Type | Description | Example |
|---|---|---|---|
| `pickupLocation` | string | Kayak location query ID | `"16078"` |
| `pickupDate` | string | Pickup date YYYY-MM-DD | `"2026-11-01"` |
| `dropoffDate` | string | Drop-off date YYYY-MM-DD | `"2026-11-08"` |

#### Optional — Time

| Parameter | Type | Default | Description |
|---|---|---|---|
| `pickupHour` | integer | `12` | Pickup hour (0–23) |
| `dropoffHour` | integer | `12` | Drop-off hour (0–23) |
| `pickupMinute` | integer | `0` | Pickup minute (0 or 30) |
| `dropoffMinute` | integer | `0` | Drop-off minute (0 or 30) |

#### Optional — Rental Details

| Parameter | Type | Default | Description |
|---|---|---|---|
| `dropoffLocation` | string | — | Different drop-off ID for one-way rentals |
| `driverAge` | integer | — | Driver age (18–99) |

#### Optional — Locale

| Parameter | Type | Default | Description |
|---|---|---|---|
| `currencyCode` | string | `USD` | ISO 4217 currency code |
| `countryCode` | string | `US` | ISO 3166-1 alpha-2 country code |

#### Optional — Pagination & Sort

| Parameter | Type | Default | Description |
|---|---|---|---|
| `pageNumber` | integer | `0` | Page index (0-based) |
| `pageSize` | integer | `15` | Results per page (max 50) |
| `priceMode` | string | `total` | `total` or `per-day` |
| `sortMode` | string | `rank_a` | `rank_a`, `price_a`, `price_d` |

#### Optional — carFilters Object

| Field | Type | Values |
|---|---|---|
| `carClass` | array | `SMALL`, `MEDIUM`, `LARGE`, `SUV`, `VAN`, `PICKUPTRUCK`, `LUXURY`, `CONVERTIBLE`, `COMMERCIAL` |
| `transmission` | string | `Automatic`, `Manual` |
| `priceRange` | string | `"200-800"` (range), `"305-"` (min), `"-1000"` (max) |
| `bookingSites` | array | Europcar, Hertz, Enterprise, Avis, Budget, Dollar, Thrifty, Sixt, Fox |
| `carAgency` | array | alamo, avis, budget, dollar, enterprise, europcar, fox, hertz, sixt, thrifty |
| `carMaker` | object/array | `{"3": "Audi", "45": "Toyota", "1139": "Tesla"}` or `["45", "1139"]` |
| `carPolicies` | array | cancel, driver, fuel, mileage |
| `carOptions` | array | AC, doors, awd, 4wd, NavigationSystem, OpenAirAllTerrain |
| `ecoClass` | string | Hybrid, Electric, Other |
| `paymentType` | string | PREPAY, DEPOSIT, POSTPAY |
| `timeSaving` | array | earlyCheckin, skipCounter |
| `pickupCity` | string | NON\_AIRPORT or airport codes |
| `inAirportTerminal` | string | LAX, BUR, LGB, etc. |
| `carSharing` | string | Car sharing filter |
| `whiskyOnly` | string | Kayak whisky deals only |

***

### Deployment

Build and push from the **actor folder**:

```bash
cd C:\Users\Lenovo\Desktop\nike\actor
apify push
```

Do **not** run `apify push` from the `.actor` subfolder — that skips the Dockerfile and creates an actor named `undefined`.

***

### Notes

- `pickupLocation` must be a Kayak location query ID (e.g. `"16078"`), not a free-text city name. Use `LOCATION_SEARCH` first.
- The final dataset item always has `is_metadata: true` and contains `filter_data` with all available filters from Kayak.
- Sponsored/ad results are automatically filtered out.
- Dates must be in the future.
- Increase `pageSize` for more results per run (each additional result uses compute time).
- Results are wrapped in a `data` field to match the API response format.

# Actor input Schema

## `scrapeType` (type: `string`):

What to scrape. Each type has its own dedicated section below — fill in only the section that matches your choice.

## `locationQuery` (type: `string`):

City name, airport name, or IATA code to search for. Returns matching locations with location IDs. Use the ID from results as pickupLocation in Car Search.

## `locationType` (type: `string`):

Type of locations to return. Used for scrapeType: LOCATION\_SEARCH.

## `locationCountry` (type: `string`):

ISO 3166-1 alpha-2 country code to bias location results. Used for scrapeType: LOCATION\_SEARCH.

## `locationLocale` (type: `string`):

Language/locale code for location search. Used for scrapeType: LOCATION\_SEARCH.

## `pickupLocation` (type: `string`):

Kayak location query ID for pickup (e.g. '16078'). Get this by running scrapeType: LOCATION\_SEARCH first. Required for scrapeType: CAR\_SEARCH.

## `pickupDate` (type: `string`):

Pickup date in YYYY-MM-DD format. Required for scrapeType: CAR\_SEARCH.

## `dropoffDate` (type: `string`):

Drop-off date in YYYY-MM-DD format. Must be after pickupDate. Required for scrapeType: CAR\_SEARCH.

## `pickupHour` (type: `integer`):

Pickup hour in 24-hour format (0–23). 10 = 10 AM, 14 = 2 PM. Used for scrapeType: CAR\_SEARCH.

## `dropoffHour` (type: `integer`):

Drop-off hour in 24-hour format (0–23). Used for scrapeType: CAR\_SEARCH.

## `pickupMinute` (type: `string`):

Pickup minute — Kayak only supports :00 or :30. Used for scrapeType: CAR\_SEARCH.

## `dropoffMinute` (type: `string`):

Drop-off minute — Kayak only supports :00 or :30. Used for scrapeType: CAR\_SEARCH.

## `dropoffLocation` (type: `string`):

Different drop-off location ID for one-way rentals. Leave empty for same-location return. Used for scrapeType: CAR\_SEARCH.

## `driverAge` (type: `integer`):

Driver age (18–99). Affects pricing and availability. Used for scrapeType: CAR\_SEARCH.

## `currencyCode` (type: `string`):

ISO 4217 currency code for prices. Used for scrapeType: CAR\_SEARCH.

## `countryCode` (type: `string`):

ISO 3166-1 alpha-2 country code. Determines Kayak regional site (e.g. US → kayak.com, DE → kayak.de). Used for scrapeType: CAR\_SEARCH.

## `pageNumber` (type: `integer`):

Page index for pagination. 0 = first page. Used for scrapeType: CAR\_SEARCH.

## `pageSize` (type: `integer`):

Number of car results per page. Used for scrapeType: CAR\_SEARCH.

## `priceMode` (type: `string`):

How prices are displayed — total rental cost or per-day rate. Used for scrapeType: CAR\_SEARCH.

## `sortMode` (type: `string`):

Sort order for car results. Used for scrapeType: CAR\_SEARCH.

## `carFilters` (type: `object`):

Filter car search results. Leave as {} to return all. Run without filters first to see filterData in the output metadata item.

Valid fields:
• carClass: SMALL, MEDIUM, LARGE, SUV, VAN, PICKUPTRUCK, LUXURY, CONVERTIBLE, COMMERCIAL
• transmission: Automatic, Manual
• priceRange: "200-800" (range), "305-" (min), "-1000" (max)
• bookingSites: Europcar, Hertz, Enterprise, Avis, Budget, Dollar, Thrifty, Sixt, Fox
• carAgency: alamo, avis, budget, dollar, enterprise, europcar, fox, hertz, sixt, thrifty
• carMaker: {"3": "Audi", "5": "BMW", "45": "Toyota", "1139": "Tesla", "30": "Mercedes"}
• carPolicies: cancel, driver, fuel, mileage
• carOptions: AC, doors, awd, 4wd, NavigationSystem, OpenAirAllTerrain
• ecoClass: Hybrid, Electric, Other
• paymentType: PREPAY, DEPOSIT, POSTPAY
• timeSaving: earlyCheckin, skipCounter
• pickupCity: NON\_AIRPORT or airport codes
• inAirportTerminal: LAX, BUR, LGB, etc.
• carSharing: Car sharing filter option
• whiskyOnly: Kayak Whisky deals only

## Actor input object example

```json
{
  "scrapeType": "LOCATION_SEARCH",
  "locationQuery": "Miami",
  "locationType": "cityonly",
  "locationCountry": "US",
  "locationLocale": "us",
  "pickupLocation": "16078",
  "pickupDate": "2026-11-01",
  "dropoffDate": "2026-11-08",
  "pickupHour": 12,
  "dropoffHour": 12,
  "pickupMinute": "0",
  "dropoffMinute": "0",
  "dropoffLocation": "",
  "currencyCode": "USD",
  "countryCode": "US",
  "pageNumber": 0,
  "pageSize": 15,
  "priceMode": "total",
  "sortMode": "rank_a",
  "carFilters": {
    "carClass": [
      "SUV"
    ],
    "transmission": "Automatic",
    "priceRange": "-500",
    "carAgency": [
      "hertz",
      "enterprise"
    ],
    "carPolicies": [
      "cancel",
      "fuel",
      "mileage"
    ],
    "ecoClass": "Hybrid",
    "paymentType": "PREPAY"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Car rental offers or location suggestions depending on scrapeType.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locationQuery": "Miami",
    "locationCountry": "US",
    "locationLocale": "us",
    "pickupLocation": "16078",
    "pickupDate": "2026-11-01",
    "dropoffDate": "2026-11-08",
    "countryCode": "US",
    "carFilters": {
        "carClass": [
            "SUV",
            "MEDIUM"
        ],
        "transmission": "Automatic",
        "priceRange": "200-800",
        "carAgency": [
            "hertz",
            "sixt"
        ],
        "carPolicies": [
            "cancel",
            "mileage"
        ],
        "carOptions": [
            "AC",
            "NavigationSystem"
        ],
        "paymentType": "PREPAY"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("apiguruu/kayak-car-rental-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locationQuery": "Miami",
    "locationCountry": "US",
    "locationLocale": "us",
    "pickupLocation": "16078",
    "pickupDate": "2026-11-01",
    "dropoffDate": "2026-11-08",
    "countryCode": "US",
    "carFilters": {
        "carClass": [
            "SUV",
            "MEDIUM",
        ],
        "transmission": "Automatic",
        "priceRange": "200-800",
        "carAgency": [
            "hertz",
            "sixt",
        ],
        "carPolicies": [
            "cancel",
            "mileage",
        ],
        "carOptions": [
            "AC",
            "NavigationSystem",
        ],
        "paymentType": "PREPAY",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("apiguruu/kayak-car-rental-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locationQuery": "Miami",
  "locationCountry": "US",
  "locationLocale": "us",
  "pickupLocation": "16078",
  "pickupDate": "2026-11-01",
  "dropoffDate": "2026-11-08",
  "countryCode": "US",
  "carFilters": {
    "carClass": [
      "SUV",
      "MEDIUM"
    ],
    "transmission": "Automatic",
    "priceRange": "200-800",
    "carAgency": [
      "hertz",
      "sixt"
    ],
    "carPolicies": [
      "cancel",
      "mileage"
    ],
    "carOptions": [
      "AC",
      "NavigationSystem"
    ],
    "paymentType": "PREPAY"
  }
}' |
apify call apiguruu/kayak-car-rental-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apiguruu/kayak-car-rental-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3MbsbMT8AYZR16BHo/builds/LMG50AInLkhCqnkh4/openapi.json
