{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Flights Scraper: Fares, Dates & Returns",
    "description": "Google Flights fares for many routes and dates in one run: every flight listed, with legs, stops and CO2. $0.15 per 1,000 flights. Layovers, price history and return flight pairs.",
    "version": "0.1",
    "x-build-id": "mc9y1zO8QTEDUyaIf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/luzivanlt~google-flights-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-luzivanlt-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/luzivanlt~google-flights-scraper/runs": {
      "post": {
        "operationId": "runs-sync-luzivanlt-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/luzivanlt~google-flights-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-luzivanlt-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": {
          "origins": {
            "title": "From (airports)",
            "type": "array",
            "description": "Where the flights leave from, as 3-letter IATA airport codes, one per line. Put several codes on one line, joined by commas, to search any of those airports at once (e.g. JFK,EWR,LGA for all of New York). Every origin is searched to every destination on every departure date, up to 100 searches in one run. Example: JFK",
            "items": {
              "type": "string"
            }
          },
          "destinations": {
            "title": "To (airports)",
            "type": "array",
            "description": "Where the flights go, as 3-letter IATA airport codes, one per line; several on one line, joined by commas, means any of them (e.g. LHR,LGW). Example: LHR",
            "items": {
              "type": "string"
            }
          },
          "departureDates": {
            "title": "Departure dates",
            "type": "array",
            "description": "The days to fly out, one per line: a date as YYYY-MM-DD, or a number of days from the day the run starts, such as \"30 days\" (handy for a daily schedule). Each date is its own search, so 14 dates price two weeks of departures. Up to 330 days ahead, never in the past. Example: 2026-12-04",
            "items": {
              "type": "string"
            }
          },
          "returnDate": {
            "title": "Return date (round trip)",
            "type": "string",
            "description": "Make every search a round trip coming back on this day: YYYY-MM-DD, or days from the run's day such as \"37 days\". It must not come before a departure date. Leave empty for one-way fares, or use Stay length instead. Example: 2026-12-11"
          },
          "stayDays": {
            "title": "Stay length in days (round trip)",
            "minimum": 0,
            "maximum": 330,
            "type": "integer",
            "description": "Make every search a round trip that comes back this many days after its departure date (0 = the same day). Use it with several departure dates to price the same length of trip on each day. Give this or a return date, not both. Example: 7"
          },
          "returnFlights": {
            "title": "Read return flights too (round trip)",
            "type": "boolean",
            "description": "For a round trip, also read the return flights offered with each outbound flight: one row per outbound and return pair, with its whole-trip price. Off by default, when a round trip gives one row per outbound flight, priced from its cheapest return. This reads one more page per outbound flight, so a search gives many more rows. Example: true",
            "default": false
          },
          "cabinClass": {
            "title": "Cabin",
            "enum": [
              "economy",
              "premium_economy",
              "business",
              "first"
            ],
            "type": "string",
            "description": "The cabin to price: economy, premium economy, business or first, as Google Flights offers it for the route. Economy by default; a cabin an airline does not sell on a route simply lists fewer flights. Example: business",
            "default": "economy"
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Adult passengers (12 and over), from 1 to 9. Every price is for all passengers of the search together, as Google Flights shows it, not per person. At most 9 passengers in all. Example: 2",
            "default": 1
          },
          "children": {
            "title": "Children (2 to 11)",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Children aged 2 to 11, from 0 to 8. They are priced with the adults in each flight's price. At most 9 passengers in all, adults, children and infants together. Example: 1",
            "default": 0
          },
          "infantsInSeat": {
            "title": "Infants in their own seat",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Children under 2 who have a seat of their own, from 0 to 8. Priced with the other passengers in each flight's price. At most 9 passengers in all. Example: 1",
            "default": 0
          },
          "infantsOnLap": {
            "title": "Infants on a lap",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Children under 2 who travel on an adult's lap, at most one per adult. Priced with the other passengers in each flight's price; Google usually adds a small fare for each. Example: 1",
            "default": 0
          },
          "maxStops": {
            "title": "Stops",
            "enum": [
              "any",
              "0",
              "1",
              "2"
            ],
            "type": "string",
            "description": "Only flights with at most this many stops: any number (the default), nonstop only, 1 stop or fewer, or 2 stops or fewer. The same limit applies to the return flights of a round trip. Example: 0",
            "default": "any"
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "The currency every price is shown in, as a 3-letter code such as USD, EUR, GBP, JPY or VND. Google converts the fare itself; prices are whole amounts in that currency. USD by default. Example: EUR",
            "default": "USD"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "The country Google Flights is used from, as a 2-letter code such as us, gb, de or vn. It can change which fares and sellers are offered, as for a traveller in that country. us by default. Example: gb",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "The language of airport, city, airline and notice names, as a language code such as en, de, fr or pt-BR. Times, codes and prices are the same in every language. en by default. Example: de",
            "default": "en"
          },
          "maxFlightsPerSearch": {
            "title": "Max flights per search",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop each search after this many flights, in Google's order (top flights first), from 1 to 1,000 (100 by default). A one-way search usually lists 10 to 40 flights. With return flights on it counts outbound and return pairs, read in no set order: set 1,000 to keep them all. You pay per flight saved ($0.15 per 1,000), so this caps what each search costs. Example: 50",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}