{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Flights Scraper",
    "description": "✈️ Scrape every Google Flights price in seconds, not just the first page. One-way, round trip and multi-city, with booking links for every seller, a 330-day price calendar and all Google filters. Up to 3× faster. The Google Flights API alternative. Export to JSON, CSV or Excel.",
    "version": "0.0",
    "x-build-id": "SZUn1kCMCiJKGIDVR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/data_xplorer~google-flights-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-data_xplorer-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/data_xplorer~google-flights-scraper/runs": {
      "post": {
        "operationId": "runs-sync-data_xplorer-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/data_xplorer~google-flights-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-data_xplorer-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": {
          "mode": {
            "title": "What do you want to scrape?",
            "enum": [
              "search",
              "urls"
            ],
            "type": "string",
            "description": "Option 1: describe the trips (from, to, dates) and the actor builds the searches. Option 2: paste Google Flights search URLs copied from your browser.",
            "default": "search"
          },
          "flights": {
            "title": "Flights",
            "type": "array",
            "description": "From / To: airport code (JFK, CDG) or city name (New York, Paris: all its airports). Leave the return date empty for a one-way flight.",
            "items": {
              "type": "object",
              "properties": {
                "from": {
                  "title": "From",
                  "type": "string",
                  "description": "Airport code or city",
                  "editor": "textfield"
                },
                "to": {
                  "title": "To",
                  "type": "string",
                  "description": "Airport code or city",
                  "editor": "textfield"
                },
                "departureDate": {
                  "title": "Departure date",
                  "type": "string",
                  "description": "Date, or relative to today (e.g. 30 days) for scheduled runs",
                  "editor": "datepicker",
                  "dateType": "absoluteOrRelative"
                },
                "returnDate": {
                  "title": "Return date (optional)",
                  "type": "string",
                  "description": "Empty = one-way",
                  "editor": "datepicker",
                  "dateType": "absoluteOrRelative"
                }
              },
              "required": [
                "from",
                "to",
                "departureDate"
              ]
            }
          },
          "multiCity": {
            "title": "Multi-city trip (optional)",
            "type": "array",
            "description": "One journey made of several flights, in order (e.g. Paris → Bangkok, Bangkok → Phuket, Phuket → Paris). Fill at least 2 lines. Searched in addition to the flights above.",
            "items": {
              "type": "object",
              "properties": {
                "from": {
                  "title": "From",
                  "type": "string",
                  "description": "Airport code or city",
                  "editor": "textfield"
                },
                "to": {
                  "title": "To",
                  "type": "string",
                  "description": "Airport code or city",
                  "editor": "textfield"
                },
                "date": {
                  "title": "Date",
                  "type": "string",
                  "description": "Date of this flight",
                  "editor": "datepicker",
                  "dateType": "absoluteOrRelative"
                }
              },
              "required": [
                "from",
                "to",
                "date"
              ]
            }
          },
          "returnFlights": {
            "title": "Round-trip & multi-city results",
            "enum": [
              "price-only",
              "full"
            ],
            "type": "string",
            "description": "Only used for round trips and multi-city trips. Fast: the outbound (or first) flights, each with the price of the whole trip. Complete trips: each result is a full itinerary (outbound + return, or every flight of the multi-city trip) with its total price, like after picking every flight on Google Flights.",
            "default": "price-only"
          },
          "startUrls": {
            "title": "Google Flights search URLs",
            "type": "array",
            "description": "Results page URLs, e.g. https://www.google.com/travel/flights/search?tfs=...",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Passengers aged 12 and over.",
            "default": 1
          },
          "children": {
            "title": "Children (2-11)",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Passengers aged 2 to 11.",
            "default": 0
          },
          "infantsInSeat": {
            "title": "Infants in seat",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Children under 2 with their own seat.",
            "default": 0
          },
          "infantsOnLap": {
            "title": "Infants on lap",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Children under 2 sitting on an adult's lap.",
            "default": 0
          },
          "cabinClass": {
            "title": "Cabin class",
            "enum": [
              "economy",
              "premium-economy",
              "business",
              "first"
            ],
            "type": "string",
            "description": "Travel class of the searched fares.",
            "default": "economy"
          },
          "maxStops": {
            "title": "Stops",
            "enum": [
              "any",
              "0",
              "1",
              "2"
            ],
            "type": "string",
            "description": "Maximum number of stops per direction.",
            "default": "any"
          },
          "airlines": {
            "title": "Airlines",
            "type": "array",
            "description": "Only these airlines or alliances: 2-letter codes (AF, DL, BA) or Star Alliance, oneworld, SkyTeam.",
            "items": {
              "type": "string"
            }
          },
          "excludeAirlines": {
            "title": "Exclude airlines",
            "type": "array",
            "description": "Never show flights operated by these airlines (2-letter codes or names).",
            "items": {
              "type": "string"
            }
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "integer",
            "description": "Only flights at or below this price (in the selected currency, all passengers)."
          },
          "departureHourFrom": {
            "title": "Departure after (hour)",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Earliest departure hour of the outbound flight, 0-23."
          },
          "departureHourTo": {
            "title": "Departure before (hour)",
            "minimum": 1,
            "maximum": 24,
            "type": "integer",
            "description": "Latest departure hour of the outbound flight, 1-24."
          },
          "arrivalHourFrom": {
            "title": "Arrival after (hour)",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Earliest arrival hour of the outbound flight, 0-23."
          },
          "arrivalHourTo": {
            "title": "Arrival before (hour)",
            "minimum": 1,
            "maximum": 24,
            "type": "integer",
            "description": "Latest arrival hour of the outbound flight, 1-24."
          },
          "carryOnBags": {
            "title": "Carry-on bags",
            "minimum": 0,
            "maximum": 1,
            "type": "integer",
            "description": "Include the fee for a carry-on bag in the price (0 or 1).",
            "default": 0
          },
          "checkedBags": {
            "title": "Checked bags",
            "minimum": 0,
            "maximum": 2,
            "type": "integer",
            "description": "Include the fees for checked bags in the price (0-2).",
            "default": 0
          },
          "lessEmissionsOnly": {
            "title": "Less emissions only",
            "type": "boolean",
            "description": "Only flights with lower CO2 emissions than typical for the route.",
            "default": false
          },
          "maxDurationHours": {
            "title": "Max trip duration (hours)",
            "minimum": 1,
            "type": "integer",
            "description": "Only flights with a total duration up to this number of hours."
          },
          "maxLayoverHours": {
            "title": "Max layover (hours)",
            "minimum": 1,
            "type": "integer",
            "description": "Only flights whose connections last up to this number of hours."
          },
          "avoidConnectingAirports": {
            "title": "Avoid connecting airports",
            "type": "array",
            "description": "Never connect through these airports (3-letter codes).",
            "items": {
              "type": "string"
            }
          },
          "connectOnlyVia": {
            "title": "Connect only via",
            "type": "array",
            "description": "Only flights whose connections are all in these airports (3-letter codes).",
            "items": {
              "type": "string"
            }
          },
          "minLayoverHours": {
            "title": "Min layover (hours)",
            "minimum": 1,
            "type": "integer",
            "description": "Only flights whose connections last at least this number of hours."
          },
          "priceCalendar": {
            "title": "Price calendar",
            "type": "boolean",
            "description": "Also get the cheapest price of each departure date around the searched date (same trip length for round trips), like the date grid of Google Flights. One extra request per search, very cheap. Saved in a separate dataset: open the \"Price calendar\" tab of the run.",
            "default": false
          },
          "priceCalendarDays": {
            "title": "Price calendar: number of days",
            "minimum": 7,
            "maximum": 330,
            "type": "integer",
            "description": "Days covered by the calendar, centred on the departure date (7-330).",
            "default": 60
          },
          "deepSearch": {
            "title": "Include all flights",
            "type": "boolean",
            "description": "By default, Google Flights lists only part of the itineraries for a search: you have to click \"View more flights\" at the bottom of the results to see them all. On: the actor gets the complete list, as if you had clicked that button. The number of extra flights depends on the route: none on some, 2-3x more on others (mostly itineraries with connections). Off: only the first list Google shows.",
            "default": true
          },
          "includeUnpricedFlights": {
            "title": "Include flights without a price",
            "type": "boolean",
            "description": "Google lists some itineraries without a price (\"price unavailable\"). Off: they are left out. On: they are included with an empty price.",
            "default": false
          },
          "bookingOptions": {
            "title": "Include booking options",
            "type": "boolean",
            "description": "For each result: every seller (airline or travel agency) with its fare, price and a direct booking link, like the 'Booking options' page on Google Flights. One or two extra requests per result, so it is only done for the first results of each search (see below). Round trips in fast mode also get the cheapest return flight of each of these results.",
            "default": false
          },
          "bookingOptionsFor": {
            "title": "Booking options for the first N results",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many results of each search get their booking options (1-50).",
            "default": 10
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "CHF",
              "JPY",
              "INR",
              "BRL",
              "MXN",
              "SGD",
              "AED",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "HKD",
              "NZD",
              "ZAR",
              "TRY"
            ],
            "type": "string",
            "description": "Currency of the prices.",
            "default": "USD"
          },
          "country": {
            "title": "Search from country",
            "enum": [
              "US",
              "GB",
              "FR",
              "DE",
              "ES",
              "IT",
              "NL",
              "CA",
              "AU",
              "IN",
              "JP",
              "BR",
              "MX",
              "AE",
              "SG",
              "CH"
            ],
            "type": "string",
            "description": "Airfares can differ by the country you search from. Google Flights is queried from this country.",
            "default": "US"
          },
          "maxResultsPerSearch": {
            "title": "Max results per search",
            "minimum": 0,
            "type": "integer",
            "description": "0 = every result for the search.",
            "default": 0
          },
          "maxItems": {
            "title": "Max results in total",
            "minimum": 0,
            "type": "integer",
            "description": "0 = no limit.",
            "default": 0
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}