{
  "openapi": "3.0.1",
  "info": {
    "title": "Google Flights Scraper: Fares, Airlines & Times",
    "description": "Search Google Flights and get one row per flight option: fare, airlines, flight numbers, times, airports, stops, layovers, aircraft, legroom and CO2. One-way or round trip, economy/business/first, 1-9 adults, any currency. $2.00 per 1,000 searches.",
    "version": "0.1",
    "x-build-id": "I1paguRzQsP8w8ylC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/subimpact~google-flights-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-subimpact-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/subimpact~google-flights-scraper/runs": {
      "post": {
        "operationId": "runs-sync-subimpact-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/subimpact~google-flights-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-subimpact-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": {
          "searches": {
            "title": "✈️ Searches",
            "type": "array",
            "description": "One object per search. from/to accept a 3-letter airport or city code (KUL, SIN) or a free-text city name (Kuala Lumpur). date and returnDate are YYYY-MM-DD; returnDate null or empty means one way. adults 1-9, cabin economy, business or first. When this list is empty the shortcut fields below are used instead. Leave \"date\" out to search about 30 days from today.",
            "items": {
              "type": "object"
            }
          },
          "from": {
            "title": "🛫 From (shortcut)",
            "type": "string",
            "description": "Used only when Searches is empty. Departure airport or city: a 3-letter code such as KUL or a city name such as Kuala Lumpur."
          },
          "to": {
            "title": "🛬 To (shortcut)",
            "type": "string",
            "description": "Used only when Searches is empty. Arrival airport or city: a 3-letter code such as SIN or a city name such as Singapore."
          },
          "departureDate": {
            "title": "📅 Departure date (shortcut)",
            "type": "string",
            "description": "Used only when Searches is empty. YYYY-MM-DD, today or later, up to 330 days ahead. Empty means about 30 days from today."
          },
          "returnDate": {
            "title": "📅 Return date (shortcut)",
            "type": "string",
            "description": "Used only when Searches is empty. YYYY-MM-DD, on or after the departure date. Leave empty for a one-way search."
          },
          "adults": {
            "title": "👥 Adults",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Number of adult passengers (1-9). Fares are the total for all adults, exactly as Google Flights shows them.",
            "default": 1
          },
          "cabin": {
            "title": "💺 Cabin",
            "enum": [
              "economy",
              "business",
              "first"
            ],
            "type": "string",
            "description": "Cabin class. Every option was verified against live Google Flights pages in October 2026.",
            "default": "economy"
          },
          "currency": {
            "title": "💱 Currency",
            "type": "string",
            "description": "3-letter currency code for the prices, e.g. USD, EUR, MYR, SGD, JPY. Google converts the fare, so the numbers are Google's conversion, not an interbank rate.",
            "default": "USD"
          },
          "language": {
            "title": "🗣️ Interface language (hl)",
            "type": "string",
            "description": "2-letter Google interface language, e.g. en, ms, de. Prices, airline names and dates follow this language.",
            "default": "en"
          },
          "country": {
            "title": "🌍 Country (gl)",
            "type": "string",
            "description": "2-letter Google country code, e.g. us, my, sg, gb. It sets the Google Flights market (which points of sale and fare rules are shown); the currency comes from the Currency field.",
            "default": "us"
          },
          "nonstopOnly": {
            "title": "🚀 Nonstop only",
            "type": "boolean",
            "description": "Only show nonstop flights. Verified: Google returns just the nonstop options and the search shows the nonstop filter as applied.",
            "default": false
          },
          "maxFlightsPerSearch": {
            "title": "💯 Max flight options per search",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "Upper limit of flight rows taken from each search's results page (1-300). A page usually lists 20-60 options that Google has already rendered; extra options are dropped, cheapest-first, and the drop is reported.",
            "default": 50
          },
          "maxSearches": {
            "title": "🧮 Max searches per run",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Cost ceiling: at most this many searches are run (1-200). Every successful search costs $0.002, so the default 25 caps a run at $0.05. Searches above the cap are skipped and listed in RUN_SUMMARY.",
            "default": 25
          },
          "maxConcurrency": {
            "title": "⚙️ Parallel searches",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many searches run at the same time (1-10). Higher is faster and more likely to get a soft rate limit from Google.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "🔌 Proxy configuration",
            "type": "object",
            "description": "Google Flights answers direct requests from Apify's datacenter IPs, so no proxy is used by default and the run costs nothing extra. Enable Apify Proxy (or your own proxy URLs) if you run very large jobs or see empty pages; a failed proxy setup then fails the search instead of quietly going direct.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}