{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Flights Scraper: Flight Prices & Price Calendar",
    "description": "Flight prices from Google Flights for any route and date: every flight with legs, layovers and CO2, return flights, multi-city trips, every airline and agency's booking option, a 330-day price calendar and Explore by region.",
    "version": "0.1",
    "x-build-id": "66TpNjL0pdhVemtPH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/famed_bonobo~google-flights-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-famed_bonobo-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/famed_bonobo~google-flights-scraper/runs": {
      "post": {
        "operationId": "runs-sync-famed_bonobo-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/famed_bonobo~google-flights-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-famed_bonobo-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": {
          "searchMode": {
            "title": "What to get",
            "enum": [
              "flights",
              "priceCalendar",
              "explore",
              "multiCity"
            ],
            "type": "string",
            "description": "Flights lists every flight Google shows for the dates. Price calendar gives Google's cheapest price for every departure date from the departure date on, as in its price graph; on round trips, for each trip length you choose, which makes a full date matrix. The calendar is much cheaper and is made for finding the best dates. Explore gives the cheapest flight from each origin to every destination of a region (anywhere, Europe, Asia...) for your dates, as on Google's Explore map; it needs no destination airports. Multi-city takes the flights of a trip in \"Trip flights\" (2 to 10, each with its airports and date) and lists whole trips priced as one, as Google's multi-city search does.",
            "default": "flights"
          },
          "legs": {
            "title": "Trip flights (multi-city)",
            "type": "array",
            "description": "Multi-city only. The flights of the trip in travel order, 2 to 10, each as {\"origin\": \"JFK\", \"destination\": \"LHR\", \"date\": \"2027-03-10\"}. Origins, destinations and the dates above are not used."
          },
          "maxFlightsPerLeg": {
            "title": "Multi-city: flights per later leg",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Multi-city only. For each flight chosen on a leg, how many of the flights Google offers for the next leg to combine it with (best first). 1 gives one whole trip per first-leg flight; 3 on a 3-flight trip gives 9 trips per first-leg flight. Each flight of a trip is charged as one flight.",
            "default": 1
          },
          "origins": {
            "title": "From (airport codes)",
            "type": "array",
            "description": "Departure airports as 3-letter IATA codes, such as JFK or SJO. Every origin is searched against every destination. Not needed for Multi-city.",
            "items": {
              "type": "string"
            }
          },
          "destinations": {
            "title": "To (airport codes)",
            "type": "array",
            "description": "Arrival airports as 3-letter IATA codes, such as LHR or MIA. Not needed for Explore or Multi-city.",
            "items": {
              "type": "string"
            }
          },
          "exploreRegion": {
            "title": "Explore: region",
            "enum": [
              "anywhere",
              "europe",
              "asia",
              "northAmerica",
              "centralAmerica",
              "caribbean",
              "southAmerica",
              "africa",
              "middleEast",
              "oceania"
            ],
            "type": "string",
            "description": "Explore only. Where to look for destinations.",
            "default": "anywhere"
          },
          "departureDate": {
            "title": "Departure date",
            "type": "string",
            "description": "Day of the outbound flight. Leave empty to search 30 days from today."
          },
          "returnDate": {
            "title": "Return date",
            "type": "string",
            "description": "Fill it for a round trip; leave empty for one way. Round-trip prices are for the whole trip, as Google shows them on the outbound list."
          },
          "maxReturnFlightsPerDeparture": {
            "title": "Return flights per outbound flight",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Round trips only. For each outbound flight, the return flights Google offers with it (best first), each with the total price of the pair, as on Google Flights after you pick a departure. 1 makes every row a complete trip; 0 lists only outbound flights priced as round trips. Each return flight is charged as one flight.",
            "default": 1
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Number of adult passengers.",
            "default": 1
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Number of children (2 to 11 years).",
            "default": 0
          },
          "infantsInSeat": {
            "title": "Infants in seat",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Infants under 2 with their own seat.",
            "default": 0
          },
          "infantsOnLap": {
            "title": "Infants on lap",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Infants under 2 traveling on an adult's lap; at most one per adult.",
            "default": 0
          },
          "cabinClass": {
            "title": "Cabin class",
            "enum": [
              "economy",
              "premium_economy",
              "business",
              "first"
            ],
            "type": "string",
            "description": "Cabin to search.",
            "default": "economy"
          },
          "maxStops": {
            "title": "Maximum stops",
            "enum": [
              "any",
              "0",
              "1",
              "2"
            ],
            "type": "string",
            "description": "Limit the number of stops per direction.",
            "default": "any"
          },
          "maxFlightsPerSearch": {
            "title": "Max flights per route",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Stop each route after this many flights. Google usually lists 20 to 150 flights per route.",
            "default": 100
          },
          "includePriceHistory": {
            "title": "Include price history",
            "type": "boolean",
            "description": "Add Google's history of the route's lowest price over the last weeks to the price insights. Google publishes this history only for one-way searches.",
            "default": false
          },
          "includeBookingOptions": {
            "title": "Include booking options and live prices",
            "type": "boolean",
            "description": "For each flight, every seller Google compares (the airline and travel agencies) with today's price, fare name, bag fees, change and refund rules, and booking link, plus the live cheapest price in your cabin. One extra request per flight, charged as a separate event. On a round trip the options are quoted for each outbound and return pair.",
            "default": false
          },
          "calendarDays": {
            "title": "Calendar: departure dates to cover",
            "minimum": 1,
            "maximum": 329,
            "type": "integer",
            "description": "Price calendar only. How many departure dates, starting on the departure date. Google prices dates up to about 330 days ahead; later dates are left out.",
            "default": 60
          },
          "minTripNights": {
            "title": "Calendar: shortest trip (nights)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Price calendar on round trips. Leave empty to use the nights between your departure and return dates."
          },
          "maxTripNights": {
            "title": "Calendar: longest trip (nights)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Price calendar on round trips. Every length from the shortest to the longest is priced for every departure date."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "best",
              "cheapest",
              "departureTime",
              "arrivalTime",
              "duration"
            ],
            "type": "string",
            "description": "Order of the flights, as Google sorts them.",
            "default": "best"
          },
          "airlines": {
            "title": "Only these airlines or alliances",
            "type": "array",
            "description": "2-character airline codes such as DL or BA, or ONEWORLD, SKYTEAM, STAR_ALLIANCE.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeAirlines": {
            "title": "Exclude airlines or alliances",
            "type": "array",
            "description": "2-character airline codes or alliances to leave out.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 1,
            "type": "integer",
            "description": "In the chosen currency, for all passengers."
          },
          "earliestDepartureHour": {
            "title": "Earliest departure hour",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Outbound flight leaves at or after this hour (0-23)."
          },
          "latestDepartureHour": {
            "title": "Latest departure hour",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Outbound flight leaves at or before this hour (0-23)."
          },
          "earliestArrivalHour": {
            "title": "Earliest arrival hour",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Outbound flight lands at or after this hour (0-23)."
          },
          "latestArrivalHour": {
            "title": "Latest arrival hour",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Outbound flight lands at or before this hour (0-23)."
          },
          "maxDurationMinutes": {
            "title": "Maximum duration (minutes)",
            "minimum": 30,
            "type": "integer",
            "description": "Total travel time, layovers included."
          },
          "connectingAirports": {
            "title": "Connect only through",
            "type": "array",
            "description": "3-letter airport codes where connections may happen.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minLayoverMinutes": {
            "title": "Minimum layover (minutes)",
            "minimum": 0,
            "type": "integer",
            "description": "Connections shorter than this are left out."
          },
          "maxLayoverMinutes": {
            "title": "Maximum layover (minutes)",
            "minimum": 0,
            "type": "integer",
            "description": "Connections longer than this are left out."
          },
          "lessEmissionsOnly": {
            "title": "Less emissions only",
            "type": "boolean",
            "description": "Google's lower-emissions filter.",
            "default": false
          },
          "checkedBags": {
            "title": "Checked bags in the price",
            "minimum": 0,
            "maximum": 2,
            "type": "integer",
            "description": "Show prices that include this many checked bags, as Google does when you set bags.",
            "default": 0
          },
          "carryOnBags": {
            "title": "Carry-on bag in the price",
            "minimum": 0,
            "maximum": 1,
            "type": "integer",
            "description": "Show prices that include a carry-on bag.",
            "default": 0
          },
          "excludeBasicEconomy": {
            "title": "Exclude basic economy",
            "type": "boolean",
            "description": "Leave out basic economy fares, as Google does (mostly US airlines).",
            "default": false
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Three-letter currency code for all prices, such as USD, EUR or GBP.",
            "default": "USD"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language of airport and airline names, as a Google language code such as en, es or de.",
            "default": "en"
          },
          "country": {
            "title": "Country of the searcher",
            "type": "string",
            "description": "Two-letter country code Google uses to localize prices, such as us, gb or de.",
            "default": "us"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxies used to reach Google. 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}