{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Flights Scraper - Most Comprehensive",
    "description": "🔥 ~$0.05/1K flights 🔥 Search one-way, round-trip, and multi-city flights, compare flexible dates and destinations, and add optional booking choices.",
    "version": "0.2",
    "x-build-id": "93koFxuvXRzKTAILJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kaix~google-flights-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kaix-google-flights-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/kaix~google-flights-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kaix-google-flights-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/kaix~google-flights-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kaix-google-flights-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": {
          "searches": {
            "title": "Flight Searches",
            "type": "array",
            "description": "List of specific flight searches to run. Each entry can contain origin, destination, departureDate, and an optional returnDate. Codes are trimmed and uppercased. Invalid independent entries are skipped without discarding valid siblings. An explicit empty list is a no-op unless Explore From is set; omission still uses the sample route. At most 20 entries are processed. Multi-city is one coupled journey, so an invalid or oversized leg list is skipped as a whole; returnDate is ignored for multi-city legs."
          },
          "tripType": {
            "title": "Trip Type",
            "type": "string",
            "description": "Trip type for Flight Searches. Independent entries are resolved from their own returnDate, so one-way and round-trip routes can share a batch. Multi-city processes the supplied entries as one ordered journey. Search-only settings are accepted and ignored when no Flight Search runs."
          },
          "exploreOrigin": {
            "title": "Explore From (airport)",
            "type": "string",
            "description": "IATA airport code to explore priced destinations from. Clear Flight Searches to run Explore only."
          },
          "tripDuration": {
            "title": "Trip Duration",
            "type": "string",
            "description": "How long the flexible-date trip should be when Explore From is set. Otherwise this setting is accepted and ignored.",
            "default": "1-week"
          },
          "exploreMonth": {
            "title": "Month",
            "type": "string",
            "description": "Explore the next six months or a named calendar month when Explore From is set. Otherwise this setting is accepted and ignored.",
            "default": "next-6-months"
          },
          "cabinClass": {
            "title": "Cabin Class",
            "type": "string",
            "description": "Cabin class preference.",
            "default": "economy"
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Number of adult passengers, from 1 to 9. Passenger fields keep their individual ranges without a combined-total input gate.",
            "default": 1
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 9,
            "type": "integer",
            "description": "Number of child passengers.",
            "default": 0
          },
          "infantsOnLap": {
            "title": "Infants (on lap)",
            "minimum": 0,
            "maximum": 9,
            "type": "integer",
            "description": "Number of infants traveling on an adult's lap, from 0 to 9. The value is passed through without a cross-field comparison to Adults.",
            "default": 0
          },
          "infantsInSeat": {
            "title": "Infants (in seat)",
            "minimum": 0,
            "maximum": 9,
            "type": "integer",
            "description": "Number of infants traveling in their own seat. Applies to Search and Explore.",
            "default": 0
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Three-letter currency code used for returned prices and maxPrice. Codes are trimmed and uppercased. Any canonical three-letter code is preserved; malformed values warn and use USD.",
            "default": "USD"
          },
          "maxStops": {
            "title": "Max Stops",
            "type": "string",
            "description": "Maximum number of stops. Blank or unsupported values are treated as unset with a warning."
          },
          "maxPrice": {
            "title": "Max Price",
            "type": "number",
            "description": "Maximum total price in the selected currency."
          },
          "maxDuration": {
            "title": "Max Duration (minutes)",
            "type": "number",
            "description": "Maximum duration per flight leg, in minutes."
          },
          "airlines": {
            "title": "Airlines",
            "type": "array",
            "description": "Filter by caller-supplied airline IATA codes or alliance names (e.g. UA, AA, ONEWORLD). Values are trimmed and uppercased; blank or non-string entries are ignored with a warning.",
            "items": {
              "type": "string"
            }
          },
          "departureTimeEarliest": {
            "title": "Departure Time (earliest)",
            "type": "string",
            "description": "Earliest local departure time as a real numeric hour or HH:MM value. If it is later than the latest time, the range crosses midnight."
          },
          "departureTimeLatest": {
            "title": "Departure Time (latest)",
            "type": "string",
            "description": "Latest local departure time as a real numeric hour or HH:MM value. A plain hour includes that full hour; a value earlier than the earliest time ends an overnight range."
          },
          "arrivalTimeEarliest": {
            "title": "Arrival Time (earliest)",
            "type": "string",
            "description": "Earliest local arrival time as a real numeric hour or HH:MM value. If it is later than the latest time, the range crosses midnight."
          },
          "arrivalTimeLatest": {
            "title": "Arrival Time (latest)",
            "type": "string",
            "description": "Latest local arrival time as a real numeric hour or HH:MM value. A plain hour includes that full hour; a value earlier than the earliest time ends an overnight range."
          },
          "sortBy": {
            "title": "Sort By",
            "type": "string",
            "description": "How to sort Flight Search results. When no Flight Search runs, this setting is accepted and ignored.",
            "default": "best"
          },
          "showAllResults": {
            "title": "Show All Results",
            "type": "boolean",
            "description": "Return more available Flight Search choices before applying filters. When no Flight Search runs, this setting is accepted and ignored. Round-trip and multi-city results include one complete set of earlier legs plus available alternatives for the final leg; they do not list every possible leg combination.",
            "default": false
          },
          "includeCalendarPrices": {
            "title": "Include Calendar Prices",
            "type": "boolean",
            "description": "Attempt one-way or round-trip calendar prices when Flight Search work runs. With no Flight Search, this setting is accepted and ignored. For multi-city, Calendar uses the first supplied route. Calendar failures produce a warning and keep any flight results. Prices attach to the first flight result, or are returned as a calendar record when no matching flight is returned.",
            "default": false
          },
          "calendarMode": {
            "title": "Calendar Mode",
            "type": "string",
            "description": "Used only when Include Calendar Prices is enabled; otherwise accepted and ignored. Graph checks a forward window. Grid checks a centered window. Picker requests date pairs and uses returnDate when available. Defaults are 61 days for Graph and Picker, and 7 days for Grid. Calendar-specific failures warn without discarding flight results.",
            "default": "graph"
          },
          "calendarDays": {
            "title": "Calendar Window (days)",
            "type": "number",
            "description": "Number of dates or Picker date pairs to check. Used only when Include Calendar Prices is enabled; otherwise accepted and ignored. Runtime truncates the value, clamps it to 1–90, and normalizes Grid to an odd window. Defaults to 61 for Graph and Picker, or 7 for Grid."
          },
          "includeBookingDetails": {
            "title": "Include Booking Details",
            "type": "boolean",
            "description": "Attempt booking choices, prices, baggage-policy links, and booking forms for returned flights that contain booking tokens. With no eligible flight row, this setting is accepted and produces no booking output. Booking failures warn and keep the flight row. This can add significant runtime when many itineraries are returned.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Connection Settings",
            "type": "object",
            "description": "Optional connection settings for this run. The default works for most runs.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}