{
  "openapi": "3.0.1",
  "info": {
    "title": "Kayak Multi-OTA Fare Comparison Scraper",
    "description": "Every seller's price for the same flight, side by side. One row per flight with up to 40 agency and airline prices, carry-on and checked-bag fees, fare types and a direct booking link. Pick a route, a date and a market, and see who sells that exact seat cheapest.",
    "version": "0.0",
    "x-build-id": "BsHfZn0KJIUMUTDLb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apt_marble~kayak-multi-ota-fare-comparison-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apt_marble-kayak-multi-ota-fare-comparison-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/apt_marble~kayak-multi-ota-fare-comparison-scraper/runs": {
      "post": {
        "operationId": "runs-sync-apt_marble-kayak-multi-ota-fare-comparison-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/apt_marble~kayak-multi-ota-fare-comparison-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-apt_marble-kayak-multi-ota-fare-comparison-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": {
          "origin": {
            "title": "From",
            "type": "string",
            "description": "Where the trip starts. Use a three-letter airport code (JFK), a city-wide code that covers every airport in the city (NYC, LON, PAR), or a city name. You can also list several airports separated by commas, for example JFK,LGA,EWR."
          },
          "destination": {
            "title": "To",
            "type": "string",
            "description": "Where the trip ends. Same formats as From: an airport code, a city-wide code, a city name, or a comma-separated list of airports."
          },
          "departureDate": {
            "title": "Departure date",
            "type": "string",
            "description": "The outbound date, written as YYYY-MM-DD. It must be today or later, and no more than about a year ahead — fares are not published beyond that."
          },
          "returnDate": {
            "title": "Return date (leave empty for one way)",
            "type": "string",
            "description": "The date you come back, written as YYYY-MM-DD. Leave this empty for a one-way search. A return search takes longer and is priced as one round trip rather than two separate flights."
          },
          "extraSearches": {
            "title": "More routes and dates",
            "type": "array",
            "description": "Run several searches in one go. Each entry takes the same four fields as above: origin, destination, departureDate and, optionally, returnDate. Cabin, travellers, market and sorting are shared by every search in the run. Up to 30 searches per run."
          },
          "market": {
            "title": "Market",
            "enum": [
              "US",
              "GB",
              "DE",
              "FR",
              "ES"
            ],
            "type": "string",
            "description": "Which country's storefront to price against. This decides the currency AND which sellers appear — the same seat is often sold by eleven agencies in one market and by two in another, at genuinely different prices. Every row carries the currency that actually came back.",
            "default": "US"
          },
          "cabinClass": {
            "title": "Cabin",
            "enum": [
              "economy",
              "premiumEconomy",
              "business",
              "first"
            ],
            "type": "string",
            "description": "Which cabin to search. Sellers often list several fare types within the same cabin, and every one of them is returned.",
            "default": "economy"
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many adult travellers to price for. Prices are quoted the way the source quotes them for that party size.",
            "default": 1
          },
          "childAges": {
            "title": "Children's ages",
            "type": "array",
            "description": "Add one entry per child travelling, giving each child's age in years (0–17). Leave empty if no children are travelling. Up to 6 children.",
            "items": {
              "type": "string"
            }
          },
          "stopsFilter": {
            "title": "Stops",
            "enum": [
              "any",
              "nonstop",
              "upToOneStop"
            ],
            "type": "string",
            "description": "Limit the search to non-stop flights, to flights with at most one stop, or leave it open to any number of stops.",
            "default": "any"
          },
          "sortBy": {
            "title": "Order results by",
            "enum": [
              "best",
              "cheapest",
              "fastest",
              "earliestDeparture",
              "lowestEmissions"
            ],
            "type": "string",
            "description": "Which flights you want first. This decides which flights you get when you cap the number of results — sorting by cheapest and capping at 20 gives you the 20 cheapest flights.",
            "default": "best"
          },
          "maxResultsPerSearch": {
            "title": "Maximum flights per search",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many flights to return for each route and date. Every flight returned carries its full list of sellers, so 50 flights can be several hundred prices.",
            "default": 50
          },
          "maxSellersPerFlight": {
            "title": "Maximum sellers per flight",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "How many seller prices to keep on each flight, cheapest first. Leave at the maximum to get every seller the source publishes.",
            "default": 40
          },
          "searchesInParallel": {
            "title": "Searches at a time",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many of your searches to run at once. Two is the sweet spot: higher is not faster, because each search has to be taken to completion before its results are final.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}