{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Flights API & Scraper · Live Fares · $3.00/1k",
    "description": "Live Google Flights prices as an API: one run returns the fares for a route and date as JSON, with airline, stops, a booking link and Google's low / typical / high verdict. A round trip is one request. By FlightPowers. $3.00 per 1,000 lookups. It does not book.",
    "version": "0.1",
    "x-build-id": "fWkwzJvev4XSm0sJ4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mtnrabi~google-flights-real-time-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mtnrabi-google-flights-real-time-api",
        "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/mtnrabi~google-flights-real-time-api/runs": {
      "post": {
        "operationId": "runs-sync-mtnrabi-google-flights-real-time-api",
        "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/mtnrabi~google-flights-real-time-api/run-sync": {
      "post": {
        "operationId": "run-sync-mtnrabi-google-flights-real-time-api",
        "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",
        "required": [
          "endpoint",
          "departure_date",
          "from_airport",
          "to_airport"
        ],
        "properties": {
          "endpoint": {
            "title": "Search type",
            "enum": [
              "oneway",
              "roundtrip"
            ],
            "type": "string",
            "description": "One-way searches a single date. Round-trip searches both directions and returns paired itineraries with a combined total price.",
            "default": "oneway"
          },
          "from_airport": {
            "title": "From airport",
            "type": "string",
            "description": "Departure airport IATA code. New York is JFK, London is LHR, Tel Aviv is TLV. To search several airports in one run, separate them with commas, for example TLV,ATH: up to 4 per side and up to 8 airport pairs in total. Each airport pair searched is charged as one flight lookup."
          },
          "to_airport": {
            "title": "To airport",
            "type": "string",
            "description": "Destination airport IATA code. Several airports also work here, separated with commas, for example LHR,CDG (up to 4 per side, up to 8 pairs). On a round trip with several airports, list the airports, not a city code: LHR,LGW works, LON is refused."
          },
          "departure_date": {
            "title": "Departure date",
            "type": "string",
            "description": "Date of the outbound flight, in YYYY-MM-DD format."
          },
          "return_date": {
            "title": "Return date",
            "type": "string",
            "description": "Date of the return flight, in YYYY-MM-DD format. Required when search type is Round-trip. Ignored for one-way searches."
          },
          "departure_date_to": {
            "title": "Search every date up to (optional)",
            "type": "string",
            "description": "Leave empty to search one date. Fill it to search every departure date from Departure date to this date in one run, up to 31 dates, in YYYY-MM-DD format. On a round trip every search keeps the same trip length as your Departure and Return dates: 2027-02-05 to 2027-02-12 with this set to 2027-02-09 searches 5-12, 6-13, and so on up to 9-16 February. Each date is charged as one flight lookup per airport pair, and a date whose search does not complete is not charged. Every row carries its own departure_date and return_date."
          },
          "limit": {
            "title": "Number of results",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many flights to return. Each flight is one result. A search with several airports takes 1 to 20 and returns one ranked list across all its airport pairs.",
            "default": 10
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "usd",
              "eur",
              "gbp",
              "ils",
              "cad",
              "aud",
              "chf",
              "jpy",
              "inr",
              "brl",
              "mxn",
              "aed",
              "sgd",
              "try",
              "pln",
              "sek",
              "nok",
              "dkk",
              "zar",
              "thb"
            ],
            "type": "string",
            "description": "Currency for all returned prices.",
            "default": "usd"
          },
          "seat_type": {
            "title": "Cabin class",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Enter 1 for Economy or 3 for Business.",
            "default": 1
          },
          "passengers": {
            "title": "Passengers",
            "type": "array",
            "description": "One entry per traveller. 1 is an adult, 2 is a child, 3 is an infant on lap, 4 is an infant in seat. Two adults and one child is [1, 1, 2]. Leave as is for a single adult.",
            "items": {
              "type": "integer"
            }
          },
          "max_price": {
            "title": "Max price",
            "minimum": 1,
            "type": "integer",
            "description": "Only return flights at or below this price, in the currency selected above."
          },
          "sort_type": {
            "title": "Sort by",
            "enum": [
              "Overall",
              "Price",
              "Duration"
            ],
            "type": "string",
            "description": "Google's own ranking. Overall balances price against duration. Price follows Google's ordering rather than a strict numeric sort, so sort on price_as_number yourself if you need exact price order.",
            "default": "Overall"
          },
          "use_fallback": {
            "title": "Try Google's own search call early",
            "type": "boolean",
            "description": "Leave this off. Off (the default) already lets a search that Google's page cannot list, such as a round trip longer than 32 nights, fall back to Google's own search call before it gives up. On also tries that call early, whenever a page comes back empty, which can make a run slower; multi-airport searches refuse it.",
            "default": false
          },
          "max_stops": {
            "title": "Max stops",
            "minimum": 0,
            "type": "integer",
            "description": "0 for nonstop only, 1 for up to one stop, and so on."
          },
          "airline_codes": {
            "title": "Only these airlines",
            "type": "array",
            "description": "Airline IATA codes to include, for example LH for Lufthansa or BA for British Airways. Leave empty for all airlines.",
            "items": {
              "type": "string"
            }
          },
          "exclude_airline_codes": {
            "title": "Exclude these airlines",
            "type": "array",
            "description": "Airline IATA codes to leave out of the results.",
            "items": {
              "type": "string"
            }
          },
          "departure_time_min": {
            "title": "Earliest departure hour",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23. Set 6 to skip flights leaving before 6 AM."
          },
          "departure_time_max": {
            "title": "Latest departure hour",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "arrival_time_min": {
            "title": "Earliest arrival hour",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "arrival_time_max": {
            "title": "Latest arrival hour",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23. Set 22 to avoid landing after 10 PM."
          },
          "max_departure_stops": {
            "title": "Max stops, outbound leg",
            "minimum": 0,
            "type": "integer",
            "description": "0 for nonstop only on the way out."
          },
          "max_return_stops": {
            "title": "Max stops, return leg",
            "minimum": 0,
            "type": "integer",
            "description": "0 for nonstop only on the way back."
          },
          "departure_airline_codes": {
            "title": "Only these airlines, outbound",
            "type": "array",
            "description": "Airline IATA codes to include on the outbound leg.",
            "items": {
              "type": "string"
            }
          },
          "departure_exclude_airline_codes": {
            "title": "Exclude these airlines, outbound",
            "type": "array",
            "description": "Airline IATA codes to leave out of the outbound leg.",
            "items": {
              "type": "string"
            }
          },
          "return_airline_codes": {
            "title": "Only these airlines, return",
            "type": "array",
            "description": "Airline IATA codes to include on the return leg.",
            "items": {
              "type": "string"
            }
          },
          "return_exclude_airline_codes": {
            "title": "Exclude these airlines, return",
            "type": "array",
            "description": "Airline IATA codes to leave out of the return leg.",
            "items": {
              "type": "string"
            }
          },
          "departure_departure_time_min": {
            "title": "Earliest departure hour, outbound",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "departure_departure_time_max": {
            "title": "Latest departure hour, outbound",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "departure_arrival_time_min": {
            "title": "Earliest arrival hour, outbound",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "departure_arrival_time_max": {
            "title": "Latest arrival hour, outbound",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "return_departure_time_min": {
            "title": "Earliest departure hour, return",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "return_departure_time_max": {
            "title": "Latest departure hour, return",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "return_arrival_time_min": {
            "title": "Earliest arrival hour, return",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "return_arrival_time_max": {
            "title": "Latest arrival hour, return",
            "minimum": 0,
            "maximum": 23,
            "type": "integer",
            "description": "Hour of day from 0 to 23."
          },
          "use_ext_proxy": {
            "title": "Route through a residential proxy",
            "type": "boolean",
            "description": "On by default. Reduces the chance of Google blocking the search. Turn it off for slightly lower latency on easy routes.",
            "default": true
          },
          "strict": {
            "title": "Fail the run if the search does not complete",
            "type": "boolean",
            "description": "Off by default, which keeps today's behaviour. Google sometimes serves a consent wall or a bot check instead of results, and the search then finishes with an empty dataset that looks exactly like \"there are no flights on this route\". Turn this on to have such a run fail loudly instead -- useful when the run feeds a pipeline that would otherwise record \"no flights\" as a fact. A failed search is not charged. Either way, the run's status message and the SEARCH_OUTCOME record in the key-value store say which case it was.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}