# Kayak Car Rental API (`fingolfin/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/fingolfin/kayak-car-rental-scraper.md
- **Developed by:** [Mate Papava](https://apify.com/fingolfin) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# 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("fingolfin/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("fingolfin/kayak-car-rental-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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 fingolfin/kayak-car-rental-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fingolfin/kayak-car-rental-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kayak Car Rental API",
        "description": "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",
        "version": "1.0",
        "x-build-id": "LMG50AInLkhCqnkh4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fingolfin~kayak-car-rental-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fingolfin-kayak-car-rental-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/fingolfin~kayak-car-rental-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fingolfin-kayak-car-rental-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/fingolfin~kayak-car-rental-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fingolfin-kayak-car-rental-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "scrapeType"
                ],
                "properties": {
                    "scrapeType": {
                        "title": "Scrape Type",
                        "enum": [
                            "LOCATION_SEARCH",
                            "CAR_SEARCH"
                        ],
                        "type": "string",
                        "description": "What to scrape. Each type has its own dedicated section below — fill in only the section that matches your choice.",
                        "default": "LOCATION_SEARCH"
                    },
                    "locationQuery": {
                        "title": "Location Query",
                        "type": "string",
                        "description": "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": {
                        "title": "Location Type",
                        "enum": [
                            "airportonly",
                            "cityonly",
                            "all"
                        ],
                        "type": "string",
                        "description": "Type of locations to return. Used for scrapeType: LOCATION_SEARCH.",
                        "default": "cityonly"
                    },
                    "locationCountry": {
                        "title": "Country Code",
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2 country code to bias location results. Used for scrapeType: LOCATION_SEARCH.",
                        "default": "US"
                    },
                    "locationLocale": {
                        "title": "Locale",
                        "type": "string",
                        "description": "Language/locale code for location search. Used for scrapeType: LOCATION_SEARCH.",
                        "default": "us"
                    },
                    "pickupLocation": {
                        "title": "Pickup Location ID",
                        "type": "string",
                        "description": "Kayak location query ID for pickup (e.g. '16078'). Get this by running scrapeType: LOCATION_SEARCH first. Required for scrapeType: CAR_SEARCH."
                    },
                    "pickupDate": {
                        "title": "Pickup Date",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Pickup date in YYYY-MM-DD format. Required for scrapeType: CAR_SEARCH."
                    },
                    "dropoffDate": {
                        "title": "Drop-off Date",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Drop-off date in YYYY-MM-DD format. Must be after pickupDate. Required for scrapeType: CAR_SEARCH."
                    },
                    "pickupHour": {
                        "title": "Pickup Hour",
                        "minimum": 0,
                        "maximum": 23,
                        "type": "integer",
                        "description": "Pickup hour in 24-hour format (0–23). 10 = 10 AM, 14 = 2 PM. Used for scrapeType: CAR_SEARCH.",
                        "default": 12
                    },
                    "dropoffHour": {
                        "title": "Drop-off Hour",
                        "minimum": 0,
                        "maximum": 23,
                        "type": "integer",
                        "description": "Drop-off hour in 24-hour format (0–23). Used for scrapeType: CAR_SEARCH.",
                        "default": 12
                    },
                    "pickupMinute": {
                        "title": "Pickup Minute",
                        "enum": [
                            "0",
                            "30"
                        ],
                        "type": "string",
                        "description": "Pickup minute — Kayak only supports :00 or :30. Used for scrapeType: CAR_SEARCH.",
                        "default": "0"
                    },
                    "dropoffMinute": {
                        "title": "Drop-off Minute",
                        "enum": [
                            "0",
                            "30"
                        ],
                        "type": "string",
                        "description": "Drop-off minute — Kayak only supports :00 or :30. Used for scrapeType: CAR_SEARCH.",
                        "default": "0"
                    },
                    "dropoffLocation": {
                        "title": "Drop-off Location ID (one-way)",
                        "type": "string",
                        "description": "Different drop-off location ID for one-way rentals. Leave empty for same-location return. Used for scrapeType: CAR_SEARCH.",
                        "default": ""
                    },
                    "driverAge": {
                        "title": "Driver Age",
                        "minimum": 18,
                        "maximum": 99,
                        "type": "integer",
                        "description": "Driver age (18–99). Affects pricing and availability. Used for scrapeType: CAR_SEARCH."
                    },
                    "currencyCode": {
                        "title": "Currency Code",
                        "enum": [
                            "USD",
                            "EUR",
                            "GBP",
                            "CAD",
                            "AUD",
                            "CHF",
                            "JPY",
                            "MXN",
                            "BRL"
                        ],
                        "type": "string",
                        "description": "ISO 4217 currency code for prices. Used for scrapeType: CAR_SEARCH.",
                        "default": "USD"
                    },
                    "countryCode": {
                        "title": "Country Code",
                        "type": "string",
                        "description": "ISO 3166-1 alpha-2 country code. Determines Kayak regional site (e.g. US → kayak.com, DE → kayak.de). Used for scrapeType: CAR_SEARCH.",
                        "default": "US"
                    },
                    "pageNumber": {
                        "title": "Page Number (0-based)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Page index for pagination. 0 = first page. Used for scrapeType: CAR_SEARCH.",
                        "default": 0
                    },
                    "pageSize": {
                        "title": "Results Per Page",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Number of car results per page. Used for scrapeType: CAR_SEARCH.",
                        "default": 15
                    },
                    "priceMode": {
                        "title": "Price Mode",
                        "enum": [
                            "total",
                            "per-day"
                        ],
                        "type": "string",
                        "description": "How prices are displayed — total rental cost or per-day rate. Used for scrapeType: CAR_SEARCH.",
                        "default": "total"
                    },
                    "sortMode": {
                        "title": "Sort Mode",
                        "enum": [
                            "rank_a",
                            "price_a",
                            "price_d"
                        ],
                        "type": "string",
                        "description": "Sort order for car results. Used for scrapeType: CAR_SEARCH.",
                        "default": "rank_a"
                    },
                    "carFilters": {
                        "title": "Car Filters (optional)",
                        "type": "object",
                        "description": "Filter car search results. Leave as {} to return all. Run without filters first to see filterData in the output metadata item.\n\nValid fields:\n• carClass: SMALL, MEDIUM, LARGE, SUV, VAN, PICKUPTRUCK, LUXURY, CONVERTIBLE, COMMERCIAL\n• transmission: Automatic, Manual\n• priceRange: \"200-800\" (range), \"305-\" (min), \"-1000\" (max)\n• bookingSites: Europcar, Hertz, Enterprise, Avis, Budget, Dollar, Thrifty, Sixt, Fox\n• carAgency: alamo, avis, budget, dollar, enterprise, europcar, fox, hertz, sixt, thrifty\n• carMaker: {\"3\": \"Audi\", \"5\": \"BMW\", \"45\": \"Toyota\", \"1139\": \"Tesla\", \"30\": \"Mercedes\"}\n• carPolicies: cancel, driver, fuel, mileage\n• carOptions: AC, doors, awd, 4wd, NavigationSystem, OpenAirAllTerrain\n• ecoClass: Hybrid, Electric, Other\n• paymentType: PREPAY, DEPOSIT, POSTPAY\n• timeSaving: earlyCheckin, skipCounter\n• pickupCity: NON_AIRPORT or airport codes\n• inAirportTerminal: LAX, BUR, LGB, etc.\n• carSharing: Car sharing filter option\n• whiskyOnly: Kayak Whisky deals only"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
