{
  "openapi": "3.0.1",
  "info": {
    "title": "KAYAK Car Rental Scraper",
    "description": "[💰 $1.3 / 1K] Extract car rental offers from KAYAK — vehicle class, rental agency, daily and total prices, mileage and fuel policies, cancellation terms, and direct booking links. Search by location and dates or paste KAYAK URLs.",
    "version": "1.0",
    "x-build-id": "fxGka86NIeaPxDHWM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~kayak-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-kayak-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/solidcode~kayak-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-kayak-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/solidcode~kayak-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-kayak-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",
        "properties": {
          "pickupLocation": {
            "title": "Pickup Location",
            "type": "string",
            "description": "City, airport code, or place to pick up the car (e.g. 'Los Angeles', 'LAX', 'Paris'). Leave the Advanced URLs field empty to use this.",
            "default": "Los Angeles"
          },
          "dropoffLocation": {
            "title": "Drop-off Location",
            "type": "string",
            "description": "Where to return the car for a one-way rental (e.g. 'San Diego', 'SAN'). Leave empty to return the car to the same place you picked it up."
          },
          "pickupDate": {
            "title": "Pickup Date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Date you pick up the car, in YYYY-MM-DD format (e.g. 2026-07-15). Leave empty to default to two weeks from today. Dates in the past are automatically moved forward."
          },
          "pickupTime": {
            "title": "Pickup Time",
            "enum": [
              "00:00",
              "06:00",
              "07:00",
              "08:00",
              "09:00",
              "10:00",
              "11:00",
              "12:00",
              "13:00",
              "14:00",
              "15:00",
              "16:00",
              "17:00",
              "18:00",
              "19:00",
              "20:00",
              "21:00",
              "22:00",
              "23:00"
            ],
            "type": "string",
            "description": "Time of day you pick up the car.",
            "default": "10:00"
          },
          "returnDate": {
            "title": "Return Date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Date you return the car, in YYYY-MM-DD format. Leave empty to default to one week after the pickup date. Must be on or after the pickup date."
          },
          "returnTime": {
            "title": "Return Time",
            "enum": [
              "00:00",
              "06:00",
              "07:00",
              "08:00",
              "09:00",
              "10:00",
              "11:00",
              "12:00",
              "13:00",
              "14:00",
              "15:00",
              "16:00",
              "17:00",
              "18:00",
              "19:00",
              "20:00",
              "21:00",
              "22:00",
              "23:00"
            ],
            "type": "string",
            "description": "Time of day you return the car.",
            "default": "10:00"
          },
          "driverAge": {
            "title": "Driver Age",
            "minimum": 18,
            "maximum": 99,
            "type": "integer",
            "description": "Age of the main driver. KAYAK adjusts availability and pricing for drivers under 25 or over 70, so set this accurately.",
            "default": 30
          },
          "sortBy": {
            "title": "Sort Order",
            "enum": [
              "recommended",
              "cheapest",
              "distance",
              "best"
            ],
            "type": "string",
            "description": "How KAYAK should rank the rental offers.",
            "default": "recommended"
          },
          "carType": {
            "title": "Car Types",
            "type": "array",
            "description": "Only keep these vehicle classes in the results. Leave empty to include every car type. Note: KAYAK has no server-side car-type filter, so the actor fetches the search and keeps only the matching offers — pick a smaller Max Results when filtering to a rare class.",
            "items": {
              "type": "string",
              "enum": [
                "SMALL",
                "MEDIUM",
                "LARGE",
                "SUV",
                "VAN",
                "LUXURY",
                "SPECIAL",
                "PICKUPTRUCK",
                "CONVERTIBLE"
              ],
              "enumTitles": [
                "Small / Economy",
                "Medium / Intermediate",
                "Large / Full-size",
                "SUV",
                "Van / Minivan",
                "Luxury",
                "Special",
                "Pickup truck",
                "Convertible"
              ]
            }
          },
          "currency": {
            "title": "Preferred Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "JPY",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "BRL",
              "MXN",
              "INR",
              "CNY",
              "HKD",
              "SGD",
              "NZD",
              "ZAR",
              "AED"
            ],
            "type": "string",
            "description": "Preferred display currency (ISO 4217 code). KAYAK applies it where it supports the currency, but many offers come straight from the rental market and report their own local currency. Each result row carries a 'currencyCode' field — that value is authoritative for the prices on that row. Pick a currency here to nudge KAYAK, then read 'currencyCode' on each row to know what the prices are actually in.",
            "default": "USD"
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of rental offers to collect per search. Set to 0 to collect all available offers. Results are delivered in pages of roughly 90–110 offers, so a small value (e.g. 10) will still return one full page.",
            "default": 50
          },
          "startUrls": {
            "title": "KAYAK Car Rental URLs",
            "type": "array",
            "description": "Advanced: paste one or more full KAYAK car-rental result URLs to scrape them directly (e.g. 'https://www.kayak.com/cars/Los-Angeles,CA/2026-07-15/2026-07-22'). When provided, these override the search fields above. Expired dates are automatically moved forward.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}