{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Flights Explore Scraper",
    "description": "Find everywhere you can fly from one airport and what each destination costs. Just add an origin and a date, and get the city, country, fare, airline, journey time and stops for every destination Google sells, sorted cheapest first.",
    "version": "1.0",
    "x-build-id": "djia2bKesPRHKpgjn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/boncross~google-flights-explore/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-boncross-google-flights-explore",
        "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/boncross~google-flights-explore/runs": {
      "post": {
        "operationId": "runs-sync-boncross-google-flights-explore",
        "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/boncross~google-flights-explore/run-sync": {
      "post": {
        "operationId": "run-sync-boncross-google-flights-explore",
        "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": {
          "origin": {
            "title": "Origin airport or city",
            "type": "string",
            "description": "The airport you would fly from, such as LHR. A city code such as LON covers every airport in that city, and several codes separated by commas search them together. You can also type a place name such as \"Barcelona\" or \"Heathrow\" and it is resolved for you."
          },
          "extraOrigins": {
            "title": "More origins",
            "type": "array",
            "description": "Additional origins, one per line. Each is searched separately and returns its own destinations. You can also type a place name such as \"Barcelona\" or \"Heathrow\" and it is resolved for you.",
            "items": {
              "type": "string"
            }
          },
          "departureDate": {
            "title": "Departure date",
            "type": "string",
            "description": "Roughly when you want to travel, as YYYY-MM-DD. Leave it empty to search 30 days from today. Google suggests its own best dates per destination, so each row carries the dates it priced. Note: Google's Explore map cannot take an exact date and a destination filter at the same time. If you set Interest, Destination region, Travel month or a Bounding box, the actor searches the whole MONTH of your departure date instead of the exact day."
          },
          "maxItems": {
            "title": "Maximum destinations",
            "minimum": 1,
            "type": "integer",
            "description": "A ceiling on the whole run. Nothing past it is fetched or charged for."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 1,
            "type": "integer",
            "description": "Only return destinations at or under this fare."
          },
          "maxStops": {
            "title": "Maximum stops",
            "minimum": 0,
            "maximum": 3,
            "type": "integer",
            "description": "Keep only destinations whose quoted fare has at most this many stops. 0 keeps those whose cheapest fare is already nonstop: unlike Nonstop, which asks Google for nonstop prices."
          },
          "nonstop": {
            "title": "Nonstop only",
            "type": "boolean",
            "description": "Ask Google to price every destination on nonstop flights. A destination whose cheapest fare has a stop can still come back, priced nonstop. Connecting results are removed here too.",
            "default": false
          },
          "maxDurationMinutes": {
            "title": "Maximum journey time",
            "minimum": 30,
            "type": "integer",
            "description": "Longest acceptable one-way journey, in minutes."
          },
          "countries": {
            "title": "Only these countries",
            "type": "array",
            "description": "Keep only destinations in these countries, named as Google names them, such as Spain or Portugal. Leave empty for everywhere.",
            "items": {
              "type": "string"
            }
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Number of adult passengers.",
            "default": 1
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Three letter currency code, such as USD or GBP. Default USD.",
            "default": "USD"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Two letter language code for place names, such as en.",
            "default": "en"
          },
          "interest": {
            "title": "Interest",
            "enum": [
              "",
              "outdoors",
              "beaches",
              "museums",
              "history",
              "skiing"
            ],
            "type": "string",
            "description": "Narrow the map to destinations known for one thing. Leave blank for the popular list. Using this makes the search cover the whole month of your departure date rather than that exact day.",
            "default": ""
          },
          "destinationRegion": {
            "title": "Only this region or country",
            "type": "string",
            "description": "Restrict destinations to one part of the world, named however you like: \"Japan\", \"Italy\" or a Google place id. Leave blank for everywhere. Using this makes the search cover the whole month of your departure date rather than that exact day."
          },
          "travelMonth": {
            "title": "Travel month",
            "minimum": 1,
            "maximum": 12,
            "type": "integer",
            "description": "Restrict to a month, 1 for January through 12 for December. Leave blank for any month in the coming window. Using this makes the search cover the whole month of your departure date rather than that exact day."
          },
          "tripLength": {
            "title": "Trip length",
            "enum": [
              "weekend",
              "week",
              "two-weeks"
            ],
            "type": "string",
            "description": "How long the trip should be. Google prices each destination on the best dates for that length.",
            "default": "two-weeks"
          },
          "boundingBox": {
            "title": "Only inside this map area",
            "type": "array",
            "description": "Restrict destinations to a rectangle on the map, as four numbers: north, east, south, west. For example [49.23, 3.24, 48.48, 1.46] covers the area around Paris. Leave empty for everywhere. Using this makes the search cover the whole month of your departure date rather than that exact day."
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 32,
            "type": "integer",
            "description": "How many requests run at once across the whole run. The default is the fastest level measured clean; lower it only if a run reports refusals or errors.",
            "default": 16
          },
          "restartAttempt": {
            "title": "Restart attempt (internal)",
            "type": "integer",
            "description": "Set by the actor when it restarts itself in a fresh container after capturing nothing. Leave it alone.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}