{
  "title": "Google Flights Fare & Itinerary Filter Scraper Input",
  "description": "Search Google Flights by route and date. Choose one-way or round-trip, filter fares, fetch return options, or collect a price calendar.",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "mode": {
      "title": "Mode",
      "type": "string",
      "description": "Search flights, or collect the cheapest fare for each date around your departure date.",
      "editor": "select",
      "enum": [
        "search",
        "calendar"
      ],
      "enumTitles": [
        "Search flights",
        "Price calendar"
      ],
      "default": "search",
      "prefill": "search"
    },
    "originAirport": {
      "title": "Origin airport or city",
      "type": "string",
      "description": "Three-letter IATA airport or city code, e.g. JFK, LHR, NYC. One code per search; use `searches` for alternate airports.",
      "editor": "textfield",
      "default": "JFK",
      "prefill": "JFK"
    },
    "destinationAirport": {
      "title": "Destination airport or city",
      "type": "string",
      "description": "Three-letter IATA airport or city code, e.g. LHR, HND, LON. One code per search; use `searches` for alternate airports.",
      "editor": "textfield",
      "default": "LHR",
      "prefill": "LHR"
    },
    "outboundDate": {
      "title": "Departure date",
      "type": "string",
      "description": "Departure date in YYYY-MM-DD format. Leave empty to use 30 days from today (UTC); the chosen date is logged.",
      "editor": "textfield",
      "prefill": "2026-12-10"
    },
    "returnDate": {
      "title": "Return date",
      "type": "string",
      "description": "Return date in YYYY-MM-DD format. Leave empty for a one-way search.",
      "editor": "textfield"
    },
    "adults": {
      "title": "Adults",
      "type": "integer",
      "description": "Travellers aged 12 and over (1-9).",
      "minimum": 1,
      "maximum": 9,
      "default": 1,
      "prefill": 1
    },
    "children": {
      "title": "Children",
      "type": "integer",
      "description": "Travellers aged 2-11 (0-8).",
      "minimum": 0,
      "maximum": 8,
      "default": 0,
      "prefill": 0
    },
    "infants": {
      "title": "Infants on lap",
      "type": "integer",
      "description": "Infants under 2 travelling on an adult lap (0-8). Cannot exceed the number of adults.",
      "minimum": 0,
      "maximum": 8,
      "default": 0,
      "prefill": 0
    },
    "infantsInSeat": {
      "title": "Infants in a seat",
      "type": "integer",
      "description": "Infants under 2 travelling in their own seat (0-8).",
      "minimum": 0,
      "maximum": 8,
      "default": 0,
      "prefill": 0
    },
    "cabinClass": {
      "title": "Cabin class",
      "type": "string",
      "description": "Cabin to search.",
      "editor": "select",
      "enum": [
        "economy",
        "premium_economy",
        "business",
        "first"
      ],
      "enumTitles": [
        "Economy",
        "Premium economy",
        "Business",
        "First"
      ],
      "default": "economy",
      "prefill": "economy"
    },
    "currency": {
      "title": "Currency",
      "type": "string",
      "description": "Currency for every price.",
      "editor": "select",
      "enum": [
        "ALL",
        "DZD",
        "ARS",
        "AMD",
        "AWG",
        "AUD",
        "AZN",
        "BSD",
        "BHD",
        "BYN",
        "BMD",
        "BAM",
        "BRL",
        "GBP",
        "CAD",
        "XPF",
        "CLP",
        "CNY",
        "COP",
        "CRC",
        "CUP",
        "CZK",
        "DKK",
        "DOP",
        "EGP",
        "EUR",
        "GEL",
        "HKD",
        "HUF",
        "ISK",
        "INR",
        "IDR",
        "IRR",
        "ILS",
        "JMD",
        "JPY",
        "JOD",
        "KZT",
        "KWD",
        "LBP",
        "MKD",
        "MYR",
        "MXN",
        "MDL",
        "MAD",
        "TWD",
        "NZD",
        "NGN",
        "NOK",
        "OMR",
        "PKR",
        "PAB",
        "PEN",
        "PHP",
        "PLN",
        "QAR",
        "RON",
        "RUB",
        "SAR",
        "RSD",
        "SGD",
        "ZAR",
        "KRW",
        "SEK",
        "CHF",
        "THB",
        "TRY",
        "UAH",
        "AED",
        "USD",
        "VND"
      ],
      "enumTitles": [
        "Albanian Lek",
        "Algerian Dinar",
        "Argentine Peso",
        "Armenian Dram",
        "Aruban Florin",
        "Australian Dollar",
        "Azerbaijani Manat",
        "Bahamian Dollar",
        "Bahraini Dinar",
        "Belarusian Ruble",
        "Bermudan Dollar",
        "Bosnia-Herzegovina Convertible Mark",
        "Brazilian Real",
        "British Pound",
        "Canadian Dollar",
        "CFP Franc",
        "Chilean Peso",
        "Chinese Yuan",
        "Colombian Peso",
        "Costa Rican Colón",
        "Cuban Peso",
        "Czech Koruna",
        "Danish Krone",
        "Dominican Peso",
        "Egyptian Pound",
        "Euro",
        "Georgian Lari",
        "Hong Kong Dollar",
        "Hungarian Forint",
        "Icelandic Króna",
        "Indian Rupee",
        "Indonesian Rupiah",
        "Iranian Rial",
        "Israeli New Shekel",
        "Jamaican Dollar",
        "Japanese Yen",
        "Jordanian Dinar",
        "Kazakhstani Tenge",
        "Kuwaiti Dinar",
        "Lebanese Pound",
        "Macedonian Denar",
        "Malaysian Ringgit",
        "Mexican Peso",
        "Moldovan Leu",
        "Moroccan Dirham",
        "New Taiwan Dollar",
        "New Zealand Dollar",
        "Nigerian Naira",
        "Norwegian Krone",
        "Omani Rial",
        "Pakistani Rupee",
        "Panamanian Balboa",
        "Peruvian Sol",
        "Philippine Peso",
        "Polish Zloty",
        "Qatari Riyal",
        "Romanian Leu",
        "Russian Ruble",
        "Saudi Riyal",
        "Serbian Dinar",
        "Singapore Dollar",
        "South African Rand",
        "South Korean Won",
        "Swedish Krona",
        "Swiss Franc",
        "Thai Baht",
        "Turkish Lira",
        "Ukrainian Hryvnia",
        "United Arab Emirates Dirham",
        "US Dollar",
        "Vietnamese Dong"
      ],
      "default": "USD",
      "prefill": "USD"
    },
    "language": {
      "title": "Language",
      "type": "string",
      "description": "Language Google Flights uses for airport and airline names.",
      "editor": "select",
      "enum": [
        "af",
        "bs",
        "ca",
        "cs",
        "da",
        "de",
        "et",
        "en-GB",
        "en-US",
        "es",
        "es-419",
        "eu",
        "fil",
        "fr",
        "gl",
        "hr",
        "id",
        "is",
        "it",
        "sw",
        "lv",
        "lt",
        "hu",
        "ms",
        "nl",
        "no",
        "pl",
        "pt-BR",
        "pt-PT",
        "ro",
        "sq",
        "sk",
        "sl",
        "sr-Latn",
        "fi",
        "sv",
        "vi",
        "tr",
        "el",
        "bg",
        "mk",
        "mn",
        "ru",
        "sr",
        "uk",
        "ka",
        "iw",
        "ur",
        "ar",
        "fa",
        "am",
        "ne",
        "mr",
        "hi",
        "as",
        "bn",
        "pa",
        "gu",
        "or",
        "ta",
        "te",
        "kn",
        "ml",
        "si",
        "th",
        "lo",
        "km",
        "ko",
        "zh-HK",
        "ja",
        "zh-CN",
        "zh-TW",
        "en"
      ],
      "enumTitles": [
        "Afrikaans",
        "Bosnian",
        "Catalan",
        "Czech",
        "Danish",
        "German",
        "Estonian",
        "English (United Kingdom)",
        "English (United States)",
        "Spanish (Spain)",
        "Spanish (Latin America)",
        "Basque",
        "Filipino",
        "French",
        "Galician",
        "Croatian",
        "Indonesian",
        "Icelandic",
        "Italian",
        "Swahili",
        "Latvian",
        "Lithuanian",
        "Hungarian",
        "Malay",
        "Dutch",
        "Norwegian",
        "Polish",
        "Portuguese (Brazil)",
        "Portuguese (Portugal)",
        "Romanian",
        "Albanian",
        "Slovak",
        "Slovenian",
        "Serbian (Latin)",
        "Finnish",
        "Swedish",
        "Vietnamese",
        "Turkish",
        "Greek",
        "Bulgarian",
        "Macedonian",
        "Mongolian",
        "Russian",
        "Serbian (Cyrillic)",
        "Ukrainian",
        "Georgian",
        "Hebrew",
        "Urdu",
        "Arabic",
        "Persian",
        "Amharic",
        "Nepali",
        "Marathi",
        "Hindi",
        "Assamese",
        "Bangla",
        "Punjabi",
        "Gujarati",
        "Odia",
        "Tamil",
        "Telugu",
        "Kannada",
        "Malayalam",
        "Sinhala",
        "Thai",
        "Lao",
        "Khmer",
        "Korean",
        "Chinese (Hong Kong)",
        "Japanese",
        "Chinese (Simplified)",
        "Chinese (Traditional)",
        "English"
      ],
      "default": "en",
      "prefill": "en"
    },
    "country": {
      "title": "Country",
      "type": "string",
      "description": "Country whose fares and availability Google should show.",
      "editor": "select",
      "enum": [
        "AF",
        "AL",
        "DZ",
        "AS",
        "AD",
        "AO",
        "AG",
        "AR",
        "AM",
        "AU",
        "AT",
        "AZ",
        "BS",
        "BH",
        "BD",
        "BY",
        "BE",
        "BZ",
        "BJ",
        "BT",
        "BO",
        "BA",
        "BW",
        "BR",
        "BN",
        "BG",
        "BF",
        "BI",
        "KH",
        "CM",
        "CA",
        "CV",
        "CF",
        "TD",
        "CL",
        "CN",
        "CO",
        "CG",
        "CD",
        "CK",
        "CR",
        "CI",
        "HR",
        "CU",
        "CY",
        "CZ",
        "DK",
        "DJ",
        "DM",
        "DO",
        "EC",
        "EG",
        "SV",
        "EE",
        "ET",
        "FJ",
        "FI",
        "FR",
        "GA",
        "GM",
        "GE",
        "DE",
        "GH",
        "GI",
        "GR",
        "GL",
        "GT",
        "GG",
        "GY",
        "HT",
        "HN",
        "HK",
        "HU",
        "IS",
        "IN",
        "ID",
        "IR",
        "IQ",
        "IE",
        "IM",
        "IL",
        "IT",
        "JM",
        "JP",
        "JE",
        "JO",
        "KZ",
        "KE",
        "KI",
        "KW",
        "KG",
        "LA",
        "LV",
        "LB",
        "LS",
        "LY",
        "LI",
        "LT",
        "LU",
        "MG",
        "MW",
        "MY",
        "MV",
        "ML",
        "MT",
        "MU",
        "MX",
        "FM",
        "MD",
        "MN",
        "ME",
        "MA",
        "MZ",
        "MM",
        "NA",
        "NR",
        "NP",
        "NL",
        "NZ",
        "NI",
        "NE",
        "NG",
        "NU",
        "MK",
        "NO",
        "OM",
        "PK",
        "PS",
        "PA",
        "PG",
        "PY",
        "PE",
        "PH",
        "PN",
        "PL",
        "PT",
        "PR",
        "QA",
        "RO",
        "RU",
        "RW",
        "WS",
        "SM",
        "ST",
        "SA",
        "SN",
        "RS",
        "SC",
        "SL",
        "SG",
        "SK",
        "SI",
        "SB",
        "SO",
        "ZA",
        "KR",
        "ES",
        "LK",
        "SH",
        "VC",
        "SR",
        "SE",
        "CH",
        "TW",
        "TJ",
        "TZ",
        "TH",
        "TL",
        "TG",
        "TO",
        "TT",
        "TN",
        "TR",
        "TM",
        "UG",
        "UA",
        "AE",
        "GB",
        "US",
        "UY",
        "UZ",
        "VU",
        "VE",
        "VN",
        "ZM",
        "ZW"
      ],
      "enumTitles": [
        "Afghanistan",
        "Albania",
        "Algeria",
        "American Samoa",
        "Andorra",
        "Angola",
        "Antigua & Barbuda",
        "Argentina",
        "Armenia",
        "Australia",
        "Austria",
        "Azerbaijan",
        "Bahamas",
        "Bahrain",
        "Bangladesh",
        "Belarus",
        "Belgium",
        "Belize",
        "Benin",
        "Bhutan",
        "Bolivia",
        "Bosnia & Herzegovina",
        "Botswana",
        "Brazil",
        "Brunei",
        "Bulgaria",
        "Burkina Faso",
        "Burundi",
        "Cambodia",
        "Cameroon",
        "Canada",
        "Cape Verde",
        "Central African Republic",
        "Chad",
        "Chile",
        "China",
        "Colombia",
        "Congo - Brazzaville",
        "Congo - Kinshasa",
        "Cook Islands",
        "Costa Rica",
        "Côte d’Ivoire",
        "Croatia",
        "Cuba",
        "Cyprus",
        "Czechia",
        "Denmark",
        "Djibouti",
        "Dominica",
        "Dominican Republic",
        "Ecuador",
        "Egypt",
        "El Salvador",
        "Estonia",
        "Ethiopia",
        "Fiji",
        "Finland",
        "France",
        "Gabon",
        "Gambia",
        "Georgia",
        "Germany",
        "Ghana",
        "Gibraltar",
        "Greece",
        "Greenland",
        "Guatemala",
        "Guernsey",
        "Guyana",
        "Haiti",
        "Honduras",
        "Hong Kong",
        "Hungary",
        "Iceland",
        "India",
        "Indonesia",
        "Iran",
        "Iraq",
        "Ireland",
        "Isle of Man",
        "Israel",
        "Italy",
        "Jamaica",
        "Japan",
        "Jersey",
        "Jordan",
        "Kazakhstan",
        "Kenya",
        "Kiribati",
        "Kuwait",
        "Kyrgyzstan",
        "Laos",
        "Latvia",
        "Lebanon",
        "Lesotho",
        "Libya",
        "Liechtenstein",
        "Lithuania",
        "Luxembourg",
        "Madagascar",
        "Malawi",
        "Malaysia",
        "Maldives",
        "Mali",
        "Malta",
        "Mauritius",
        "Mexico",
        "Micronesia",
        "Moldova",
        "Mongolia",
        "Montenegro",
        "Morocco",
        "Mozambique",
        "Myanmar (Burma)",
        "Namibia",
        "Nauru",
        "Nepal",
        "Netherlands",
        "New Zealand",
        "Nicaragua",
        "Niger",
        "Nigeria",
        "Niue",
        "North Macedonia",
        "Norway",
        "Oman",
        "Pakistan",
        "Palestine",
        "Panama",
        "Papua New Guinea",
        "Paraguay",
        "Peru",
        "Philippines",
        "Pitcairn Islands",
        "Poland",
        "Portugal",
        "Puerto Rico",
        "Qatar",
        "Romania",
        "Russia",
        "Rwanda",
        "Samoa",
        "San Marino",
        "São Tomé & Príncipe",
        "Saudi Arabia",
        "Senegal",
        "Serbia",
        "Seychelles",
        "Sierra Leone",
        "Singapore",
        "Slovakia",
        "Slovenia",
        "Solomon Islands",
        "Somalia",
        "South Africa",
        "South Korea",
        "Spain",
        "Sri Lanka",
        "St. Helena",
        "St. Vincent & Grenadines",
        "Suriname",
        "Sweden",
        "Switzerland",
        "Taiwan",
        "Tajikistan",
        "Tanzania",
        "Thailand",
        "Timor-Leste",
        "Togo",
        "Tonga",
        "Trinidad & Tobago",
        "Tunisia",
        "Türkiye",
        "Turkmenistan",
        "Uganda",
        "Ukraine",
        "United Arab Emirates",
        "United Kingdom",
        "United States",
        "Uruguay",
        "Uzbekistan",
        "Vanuatu",
        "Venezuela",
        "Vietnam",
        "Zambia",
        "Zimbabwe"
      ],
      "default": "US",
      "prefill": "US"
    },
    "maxStops": {
      "title": "Maximum stops",
      "type": "string",
      "description": "Largest number of stops allowed on any leg.",
      "editor": "select",
      "enum": [
        "any",
        "nonstop",
        "one_stop",
        "two_or_fewer"
      ],
      "enumTitles": [
        "Any",
        "Nonstop only",
        "One stop or fewer",
        "Two stops or fewer"
      ],
      "default": "any",
      "prefill": "any"
    },
    "airlines": {
      "title": "Only these airlines",
      "type": "array",
      "description": "Two-letter IATA airline codes to keep, e.g. [\"BA\",\"AA\"]. Flights marketed by or codesharing with these airlines are kept. Empty means all airlines.",
      "editor": "stringList",
      "default": [],
      "prefill": []
    },
    "excludeAirlines": {
      "title": "Exclude these airlines",
      "type": "array",
      "description": "Two-letter IATA airline codes to remove, e.g. [\"FR\"].",
      "editor": "stringList",
      "default": [],
      "prefill": []
    },
    "minPrice": {
      "title": "Minimum price",
      "type": "integer",
      "description": "Drop fares below this price, in the chosen currency.",
      "minimum": 0,
      "maximum": 100000
    },
    "maxPrice": {
      "title": "Maximum price",
      "type": "integer",
      "description": "Drop fares above this price, in the chosen currency.",
      "minimum": 0,
      "maximum": 100000
    },
    "maxDurationMinutes": {
      "title": "Maximum total duration (minutes)",
      "type": "integer",
      "description": "Drop itineraries longer than this, including layovers.",
      "minimum": 30,
      "maximum": 4320
    },
    "departureTimeRange": {
      "title": "Departure time",
      "type": "string",
      "description": "Only departures in this local-time window.",
      "editor": "select",
      "enum": [
        "any",
        "00-06",
        "06-12",
        "12-18",
        "18-24"
      ],
      "enumTitles": [
        "Any time",
        "00:00-06:00",
        "06:00-12:00",
        "12:00-18:00",
        "18:00-24:00"
      ],
      "default": "any",
      "prefill": "any"
    },
    "arrivalTimeRange": {
      "title": "Arrival time",
      "type": "string",
      "description": "Only arrivals in this local-time window.",
      "editor": "select",
      "enum": [
        "any",
        "00-06",
        "06-12",
        "12-18",
        "18-24"
      ],
      "enumTitles": [
        "Any time",
        "00:00-06:00",
        "06:00-12:00",
        "12:00-18:00",
        "18:00-24:00"
      ],
      "default": "any",
      "prefill": "any"
    },
    "lessEmissions": {
      "title": "Lower-emission flights only",
      "type": "boolean",
      "description": "Keep itineraries Google marks as producing less CO2 than typical for the route.",
      "default": false,
      "prefill": false
    },
    "sortBy": {
      "title": "Sort results by",
      "type": "string",
      "description": "How to order the returned flights.",
      "editor": "select",
      "enum": [
        "top",
        "cheapest",
        "fastest",
        "earliestDeparture",
        "latestDeparture",
        "lowestEmissions"
      ],
      "enumTitles": [
        "Google's top picks",
        "Cheapest first",
        "Fastest first",
        "Earliest departure",
        "Latest departure",
        "Lowest emissions"
      ],
      "default": "top",
      "prefill": "top"
    },
    "maxResults": {
      "title": "Maximum results",
      "type": "integer",
      "description": "Maximum number of flight or calendar rows to return; in calendar mode it also caps the number of days.",
      "minimum": 1,
      "maximum": 200,
      "default": 61,
      "prefill": 1
    },
    "returnOptionsTop": {
      "title": "Return options for top outbounds",
      "type": "integer",
      "description": "For round trips, fetch return flights for this many top outbound options. 0 turns this off.",
      "minimum": 0,
      "maximum": 20,
      "default": 0,
      "prefill": 0
    },
    "returnOptionsPerOutbound": {
      "title": "Return options per outbound",
      "type": "integer",
      "description": "How many return flights to attach to each selected outbound.",
      "minimum": 1,
      "maximum": 20,
      "default": 5,
      "prefill": 5
    },
    "includePriceInsights": {
      "title": "Include price insights",
      "type": "boolean",
      "description": "Add Google's current, typical and historical price range when available.",
      "default": true,
      "prefill": false
    },
    "priceGraphDays": {
      "title": "Price calendar days",
      "type": "integer",
      "description": "Number of calendar days to return in price-calendar mode (1-61), starting on the departure date; also capped by maxResults.",
      "minimum": 1,
      "maximum": 61,
      "default": 61,
      "prefill": 1
    },
    "priceAlertThreshold": {
      "title": "Price alert threshold",
      "type": "number",
      "description": "When set, add a priceBelowThreshold flag to every fare in the chosen currency.",
      "minimum": 0,
      "maximum": 100000
    },
    "searches": {
      "title": "Additional searches",
      "type": "array",
      "description": "Optional list of searches to run in one go. Each item needs originAirport, destinationAirport, outboundDate and an optional returnDate. Up to 20.",
      "editor": "json",
      "items": {
        "type": "object",
        "properties": {
          "originAirport": {
            "title": "Origin airport or city",
            "type": "string",
            "description": "Origin IATA airport or city code (one per search)."
          },
          "destinationAirport": {
            "title": "Destination airport or city",
            "type": "string",
            "description": "Destination IATA airport or city code (one per search)."
          },
          "outboundDate": {
            "title": "Departure date",
            "type": "string",
            "description": "Departure date YYYY-MM-DD."
          },
          "returnDate": {
            "title": "Return date",
            "type": "string",
            "description": "Return date YYYY-MM-DD; leave empty for one-way."
          }
        },
        "required": [
          "originAirport",
          "destinationAirport"
        ]
      }
    }
  },
  "required": [
    "mode"
  ]
}
