{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Flights Scraper & Price Monitor: Fare Alerts, Calendar",
    "description": "Scrape Google Flights for many routes and dates in one run. All flights with prices, airlines, stops and CO2, a price calendar up to 11 months ahead, and price-drop alerts that report only fares that changed since the last run. One-way, round trip, multi-city.",
    "version": "0.1",
    "x-build-id": "AWkgYkUg1tvn6SWNo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s_actors~google-flights-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s_actors-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/s_actors~google-flights-scraper/runs": {
      "post": {
        "operationId": "runs-sync-s_actors-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/s_actors~google-flights-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-s_actors-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": {
          "routes": {
            "title": "✈️ Routes",
            "type": "array",
            "description": "One route per line: origin-destination airport codes like \"JFK-LAX\". City codes search all airports of a city: LON, NYC, PAR, TYO, MIL, ROM, CHI, WAS and more, e.g. \"NYC-LON\".",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "📋 What to scrape",
            "enum": [
              "flights",
              "calendar"
            ],
            "type": "string",
            "description": "Flights: every flight for each route and date. Price calendar: the cheapest fare for every day, up to 11 months ahead, in one run.",
            "default": "flights"
          },
          "departureDate": {
            "title": "📅 Departure date",
            "type": "string",
            "description": "First departure date. Pick a fixed date, or a relative one like \"+14 days\" so scheduled runs always look ahead from the day they run (recommended for monitoring). Leave empty for 14 days from today. In calendar mode the calendar starts here."
          },
          "returnAfterDays": {
            "title": "🔁 Return after (days)",
            "minimum": 0,
            "maximum": 330,
            "type": "integer",
            "description": "0 = one-way. 7 = round trip returning 7 days after departure; prices are for the whole round trip.",
            "default": 0
          },
          "numberOfDates": {
            "title": "🗓️ Number of departure dates",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Flights mode: search many dates in one run. 1 = only the date above, 7 = the next 7 dates.",
            "default": 1
          },
          "dateStepDays": {
            "title": "↔️ Days between dates",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Flights mode, with several dates: 1 = every day, 7 = same weekday every week.",
            "default": 1
          },
          "calendarDays": {
            "title": "📆 Calendar length (days)",
            "minimum": 1,
            "maximum": 328,
            "type": "integer",
            "description": "Price calendar mode: how many departure days to cover. Google sells about 11 months ahead (max 328; for round trips the return date must fit too).",
            "default": 90
          },
          "onlyPriceChanges": {
            "title": "🔔 Only report price changes",
            "type": "boolean",
            "description": "For scheduled runs. The first run saves the lowest price of every route and date; later runs return only routes and dates whose lowest price moved by at least the percentage below, with the old price, the new price and the change. No noise, just the alerts.",
            "default": false
          },
          "minChangePercent": {
            "title": "📉 Minimum change (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Report a change only if the lowest fare moved at least this much since it was last reported. 0 = any change.",
            "default": 5
          },
          "targetPrice": {
            "title": "🎯 Target price",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Report a route and date as soon as its lowest fare drops to or below this price, even if the change is smaller than the minimum above."
          },
          "monitorName": {
            "title": "🏷️ Monitor name",
            "type": "string",
            "description": "Prices are remembered under this name. Use a different name for each monitoring task.",
            "default": "default"
          },
          "adults": {
            "title": "👤 Adults",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Prices are for all passengers together.",
            "default": 1
          },
          "children": {
            "title": "🧒 Children (2-11)",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Number of children.",
            "default": 0
          },
          "cabinClass": {
            "title": "💺 Cabin class",
            "enum": [
              "economy",
              "premium_economy",
              "business",
              "first"
            ],
            "type": "string",
            "description": "Travel class.",
            "default": "economy"
          },
          "maxStops": {
            "title": "🛬 Stops",
            "enum": [
              "any",
              "nonstop",
              "max1",
              "max2"
            ],
            "type": "string",
            "description": "Maximum number of stops.",
            "default": "any"
          },
          "airlines": {
            "title": "🏷️ Airlines or alliances",
            "type": "array",
            "description": "Only these airlines: two-letter codes like \"LH\", \"BA\", or alliances STAR_ALLIANCE, ONEWORLD, SKYTEAM. Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "maxPrice": {
            "title": "💲 Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Skip flights more expensive than this, in the selected currency."
          },
          "maxFlightsPerSearch": {
            "title": "🔢 Max flights per route and date",
            "minimum": 0,
            "type": "integer",
            "description": "0 = all flights Google shows (usually 15-40). Best flights first, then by price.",
            "default": 0
          },
          "includePriceInsights": {
            "title": "📊 Price insights",
            "type": "boolean",
            "description": "Flights mode: adds Google's verdict (low / typical / high), the typical price range and the lowest-price history of the last 60 days.",
            "default": true
          },
          "includeReturnFlights": {
            "title": "🔙 Return flights (round trips)",
            "type": "boolean",
            "description": "Round trips: for each of the top flights below, also get every return flight you can combine it with, priced for the whole trip. Charged per outbound flight.",
            "default": false
          },
          "includeBookingOptions": {
            "title": "🛒 Where to book (sellers and fares)",
            "type": "boolean",
            "description": "Every seller for the flight: the airline and online travel agencies (Expedia, Gotogate, Kiwi...), each with its price, fare (e.g. Basic, Main, Extra) and booking link. Shows the cheapest seller. Round trips use the cheapest return flight. Charged per flight.",
            "default": false
          },
          "detailsForTopFlights": {
            "title": "🔝 Details for top N flights",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many flights of each search get return flights and booking options (best flights first).",
            "default": 3
          },
          "multiCityTrips": {
            "title": "🧳 Multi-city trips",
            "type": "array",
            "description": "Flights mode, optional. One trip per line, legs separated by commas: \"RIX-LHR 2026-11-12, LHR-CDG 2026-11-15, CDG-RIX 2026-11-19\". Relative dates like \"+30 days\" work too. Returns options for the first leg with the total price of the whole trip.",
            "items": {
              "type": "string"
            }
          },
          "currency": {
            "title": "💱 Currency",
            "type": "string",
            "description": "ISO code, e.g. USD, EUR, GBP.",
            "default": "USD"
          },
          "language": {
            "title": "🗣️ Language",
            "type": "string",
            "description": "Google interface language (hl), e.g. en, de, fr.",
            "default": "en"
          },
          "country": {
            "title": "🌍 Country",
            "type": "string",
            "description": "Google country (gl), e.g. us, gb, de. Prices can differ by country.",
            "default": "us"
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many requests run at the same time. Keep the default unless you know you need more.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Fallback proxy",
            "type": "object",
            "description": "Requests go direct first. If Google refuses them, the scraper retries through this proxy (datacenter works best for Google Flights).",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}