# Google Flights Scraper - Most Comprehensive (`kaix/google-flights-scraper`) Actor

🔥 ~$0.1/1K flights 🔥 Scrape Google Flights for flight search results, calendar prices, and booking details

- **URL**: https://apify.com/kaix/google-flights-scraper.md
- **Developed by:** [Kai](https://apify.com/kaix) (community)
- **Categories:** E-commerce, Lead generation, Travel
- **Stats:** 4 total users, 3 monthly users, 90.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.09 / 1,000 flights

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Google Flights Scraper

Scrape Google Flights for flight search results, calendar prices, and booking details. Supports batch searches with full filter control.

### Why use this scraper?

- Fast: lightweight requests without browser overhead
- Batch searches: run multiple route queries in a single actor run
- Full filter control: stops, price, duration, airlines/alliances, departure/arrival time windows
- Calendar prices: get cheapest-price-per-day across ~60 days via three calendar modes
- Booking details: fare info and booking links from multiple providers
- Structured output: typed FlightResult records with segments, layovers, CO2 emissions

### Use cases

- Monitor flight prices across routes and dates
- Build fare databases for travel analytics
- Compare prices across airlines and alliances
- Feed calendar price data into alerting pipelines
- Track cheapest nonstop options on specific corridors

### How to use

#### Basic one-way search

```json
{
  "searches": [
    { "origin": "SFO", "destination": "LAX", "departureDate": "2026-06-15" }
  ]
}
````

#### Round-trip

```json
{
  "searches": [
    { "origin": "SFO", "destination": "NRT", "departureDate": "2026-07-01", "returnDate": "2026-07-15" }
  ]
}
```

#### Batch searches

```json
{
  "searches": [
    { "origin": "SFO", "destination": "LAX", "departureDate": "2026-06-15" },
    { "origin": "JFK", "destination": "MIA", "departureDate": "2026-06-20" },
    { "origin": "ORD", "destination": "DEN", "departureDate": "2026-06-25" }
  ]
}
```

#### With filters

```json
{
  "searches": [
    { "origin": "SFO", "destination": "LAX", "departureDate": "2026-06-15" }
  ],
  "maxStops": "0",
  "maxPrice": 200,
  "airlines": ["UA", "AA"],
  "departureTimeEarliest": "08:00",
  "departureTimeLatest": "18:00",
  "sortBy": "cheapest"
}
```

#### With calendar prices

```json
{
  "searches": [
    { "origin": "SFO", "destination": "LAX", "departureDate": "2026-06-15" }
  ],
  "includeCalendarPrices": true,
  "calendarMode": "graph"
}
```

#### Explore cheapest destinations (flexible dates)

```json
{
  "exploreOrigin": "DAD",
  "tripDuration": "1-week"
}
```

#### Business class with multiple passengers

```json
{
  "searches": [
    { "origin": "SFO", "destination": "NRT", "departureDate": "2026-07-01", "returnDate": "2026-07-15" }
  ],
  "cabinClass": "business",
  "adults": 2,
  "children": 1
}
```

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `exploreOrigin` | string | | IATA airport code to explore cheapest destinations (e.g. `SFO`) |
| `tripDuration` | enum | `1-week` | Trip duration for explore: `weekend`, `1-week`, `2-weeks` |
| `searches` | array | | List of `{ origin, destination, departureDate, returnDate? }` |
| `tripType` | enum | inferred | `one-way`, `round-trip`, `multi-city` |
| `cabinClass` | enum | `economy` | `economy`, `premium-economy`, `business`, `first` |
| `adults` | integer | `1` | Adult passengers (1-9) |
| `children` | integer | `0` | Child passengers (0-9) |
| `infantsOnLap` | integer | `0` | Infants on lap (0-9) |
| `infantsInSeat` | integer | `0` | Infants in seat (0-9) |
| `maxStops` | enum | any | `0` (nonstop), `1` (1 or fewer), `2` (2 or fewer) |
| `maxPrice` | integer | | Maximum price in your currency |
| `maxDuration` | integer | | Maximum total duration in minutes |
| `airlines` | string\[] | | Airline IATA codes or alliance names (e.g. `UA`, `ONEWORLD`) |
| `departureTimeEarliest` | string | | Earliest departure (HH:MM, e.g. `08:00`) |
| `departureTimeLatest` | string | | Latest departure (HH:MM, e.g. `18:00`) |
| `arrivalTimeEarliest` | string | | Earliest arrival (HH:MM) |
| `arrivalTimeLatest` | string | | Latest arrival (HH:MM) |
| `sortBy` | enum | `best` | `best`, `cheapest`, `fastest`, `departure-time`, `arrival-time` |
| `showAllResults` | boolean | `false` | Return all results instead of top ~30 |
| `includeCalendarPrices` | boolean | `false` | Fetch cheapest price per day |
| `calendarMode` | enum | `graph` | `graph` (~60 days), `picker` (~6 weeks), `grid` (±3 days) |
| `includeBookingDetails` | boolean | `false` | Fetch booking links per flight |
| `proxyConfiguration` | object | | Proxy settings. Residential proxies recommended |

### Output

#### Explore output (live data — Da Nang, 1-week trips)

When using `exploreOrigin`, one record per destination:

```json
{
  "city": "Hạ Long Bay",
  "country": "Vietnam",
  "airport": "HAN",
  "departureDate": "2026-10-02",
  "returnDate": "2026-10-18",
  "price": 52,
  "cheapestPrice": 27,
  "airline": "Vietjet",
  "airlineCode": "VJ",
  "stops": 0,
  "duration": 80
}
```

#### Flight search output (live data — Da Nang to Tokyo)

```json
{
  "origin": "DAD",
  "destination": "NRT",
  "departureDate": "2026-05-15",
  "returnDate": null,
  "tripType": "one-way",
  "cabinClass": "economy",
  "price": 291,
  "currency": "USD",
  "pricePerPassenger": null,
  "totalDuration": 855,
  "stops": 1,
  "airlines": ["T'Way Air"],
  "airlineCodes": ["TW"],
  "outbound": {
    "duration": 855,
    "stops": 1,
    "segments": [
      {
        "airline": "T'Way Air",
        "airlineCode": "TW",
        "flightNumber": "TW14",
        "aircraft": "Boeing 737",
        "departureAirport": "DAD",
        "arrivalAirport": "ICN",
        "departureTime": "2026-05-15T01:25:00",
        "arrivalTime": "2026-05-15T08:15:00",
        "duration": 290,
        "layover": {
          "airport": "ICN",
          "duration": 405
        }
      },
      {
        "airline": "T'Way Air",
        "airlineCode": "TW",
        "flightNumber": "TW245",
        "aircraft": "Boeing 737MAX 8 Passenger",
        "departureAirport": "ICN",
        "arrivalAirport": "NRT",
        "departureTime": "2026-05-15T15:00:00",
        "arrivalTime": "2026-05-15T17:40:00",
        "duration": 160,
        "layover": null
      }
    ]
  },
  "return": null,
  "co2Emissions": 355138,
  "bookingToken": "CjRI...",
  "calendarPrices": [
    { "date": "2026-05-15", "price": 291 },
    { "date": "2026-05-16", "price": 256 },
    { "date": "2026-05-17", "price": 237 },
    { "date": "2026-05-18", "price": 266 },
    { "date": "2026-05-19", "price": 291 }
  ]
}
```

#### Output fields

**Explore destination** (when using `exploreOrigin`): `city`, `country`, `airport`, `departureDate`, `returnDate`, `price`, `cheapestPrice`, `airline`, `airlineCode`, `stops`, `duration`

**Flight** (when using `searches`): `origin`, `destination`, `departureDate`, `returnDate`, `tripType`, `cabinClass`, `price`, `currency`, `pricePerPassenger`, `totalDuration`, `stops`, `airlines`, `airlineCodes`, `outbound`, `return`, `co2Emissions`, `co2EmissionsLabel`, `bookingToken`, `fareClass`

**Leg**: `duration`, `stops`, `segments[]`

**Segment**: `airline`, `airlineCode`, `flightNumber`, `aircraft`, `departureAirport`, `arrivalAirport`, `departureTime`, `arrivalTime`, `duration`, `layover` (`airport`, `duration`)

**Calendar prices** (when `includeCalendarPrices` is true, attached to first result): `date`, `price`

**Booking details** (when `includeBookingDetails` is true): `baggageAllowance`, `fareRules`, `bookingLinks[]` (`airline`, `url`)

# Actor input Schema

## `searches` (type: `array`):

List of specific flight searches to run.

## `tripType` (type: `string`):

Trip type. If omitted, inferred from returnDate presence.

## `exploreOrigin` (type: `string`):

IATA airport code to explore destinations from (e.g. SFO). Uses flexible dates to find cheapest destinations. Leave empty to use specific searches instead.

## `tripDuration` (type: `string`):

How long the trip should be when exploring destinations.

## `exploreMonth` (type: `string`):

Which month to explore. 'next-6-months' searches across all upcoming months.

## `cabinClass` (type: `string`):

Cabin class preference.

## `adults` (type: `integer`):

Number of adult passengers.

## `children` (type: `integer`):

Number of child passengers.

## `infantsOnLap` (type: `integer`):

Number of infant passengers on lap.

## `infantsInSeat` (type: `integer`):

Number of infant passengers in seat.

## `maxStops` (type: `string`):

Maximum number of stops.

## `maxPrice` (type: `integer`):

Maximum price in your currency.

## `maxDuration` (type: `integer`):

Maximum total flight duration in minutes.

## `airlines` (type: `array`):

Filter by airline IATA codes or alliance names (e.g. UA, AA, ONEWORLD).

## `departureTimeEarliest` (type: `string`):

Earliest departure hour.

## `departureTimeLatest` (type: `string`):

Latest departure hour.

## `arrivalTimeEarliest` (type: `string`):

Earliest arrival hour.

## `arrivalTimeLatest` (type: `string`):

Latest arrival hour.

## `sortBy` (type: `string`):

How to sort results.

## `showAllResults` (type: `boolean`):

Return all results instead of top ~30.

## `includeCalendarPrices` (type: `boolean`):

Fetch cheapest price per day over a date range.

## `calendarMode` (type: `string`):

Which calendar view to use. Graph gives ~60 days of prices, Picker gives ~6 weeks (round-trip optimized), Grid gives a narrow ±3 day window.

## `includeBookingDetails` (type: `boolean`):

Fetch detailed fare info and booking links per flight result (one extra request per result).

## `proxyConfiguration` (type: `object`):

Proxy configuration. Residential proxies recommended.

## Actor input object example

```json
{
  "searches": [
    {
      "origin": "SFO",
      "destination": "LAX",
      "departureDate": "2026-06-01"
    }
  ],
  "tripType": "one-way",
  "tripDuration": "1-week",
  "exploreMonth": "next-6-months",
  "cabinClass": "economy",
  "adults": 1,
  "children": 0,
  "infantsOnLap": 0,
  "infantsInSeat": 0,
  "sortBy": "best",
  "showAllResults": false,
  "includeCalendarPrices": false,
  "calendarMode": "graph",
  "includeBookingDetails": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searches": [
        {
            "origin": "SFO",
            "destination": "LAX",
            "departureDate": "2026-06-01"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kaix/google-flights-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searches": [{
            "origin": "SFO",
            "destination": "LAX",
            "departureDate": "2026-06-01",
        }] }

# Run the Actor and wait for it to finish
run = client.actor("kaix/google-flights-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searches": [
    {
      "origin": "SFO",
      "destination": "LAX",
      "departureDate": "2026-06-01"
    }
  ]
}' |
apify call kaix/google-flights-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kaix/google-flights-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Flights Scraper - Most Comprehensive",
        "description": "🔥 ~$0.1/1K flights 🔥 Scrape Google Flights for flight search results, calendar prices, and booking details",
        "version": "0.1",
        "x-build-id": "SFPqFWgop6y264vJf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kaix~google-flights-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kaix-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/kaix~google-flights-scraper/runs": {
            "post": {
                "operationId": "runs-sync-kaix-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/kaix~google-flights-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-kaix-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": "Flight Searches",
                        "type": "array",
                        "description": "List of specific flight searches to run.",
                        "items": {
                            "type": "object",
                            "required": [
                                "origin",
                                "destination",
                                "departureDate"
                            ],
                            "properties": {
                                "origin": {
                                    "title": "Origin Airport",
                                    "type": "string",
                                    "description": "IATA airport code (e.g. SFO, JFK, LAX).",
                                    "editor": "textfield"
                                },
                                "destination": {
                                    "title": "Destination Airport",
                                    "type": "string",
                                    "description": "IATA airport code (e.g. LAX, NRT, LHR).",
                                    "editor": "textfield"
                                },
                                "departureDate": {
                                    "title": "Departure Date",
                                    "type": "string",
                                    "description": "Departure date in YYYY-MM-DD format.",
                                    "editor": "textfield"
                                },
                                "returnDate": {
                                    "title": "Return Date",
                                    "type": "string",
                                    "description": "Return date in YYYY-MM-DD format (optional, for round trips).",
                                    "editor": "textfield"
                                }
                            }
                        }
                    },
                    "tripType": {
                        "title": "Trip Type",
                        "enum": [
                            "one-way",
                            "round-trip",
                            "multi-city"
                        ],
                        "type": "string",
                        "description": "Trip type. If omitted, inferred from returnDate presence.",
                        "default": "one-way"
                    },
                    "exploreOrigin": {
                        "title": "Explore From (airport)",
                        "type": "string",
                        "description": "IATA airport code to explore destinations from (e.g. SFO). Uses flexible dates to find cheapest destinations. Leave empty to use specific searches instead."
                    },
                    "tripDuration": {
                        "title": "Trip Duration",
                        "enum": [
                            "weekend",
                            "1-week",
                            "2-weeks"
                        ],
                        "type": "string",
                        "description": "How long the trip should be when exploring destinations.",
                        "default": "1-week"
                    },
                    "exploreMonth": {
                        "title": "Month",
                        "enum": [
                            "next-6-months",
                            "january",
                            "february",
                            "march",
                            "april",
                            "may",
                            "june",
                            "july",
                            "august",
                            "september",
                            "october",
                            "november",
                            "december"
                        ],
                        "type": "string",
                        "description": "Which month to explore. 'next-6-months' searches across all upcoming months.",
                        "default": "next-6-months"
                    },
                    "cabinClass": {
                        "title": "Cabin Class",
                        "enum": [
                            "economy",
                            "premium-economy",
                            "business",
                            "first"
                        ],
                        "type": "string",
                        "description": "Cabin class preference.",
                        "default": "economy"
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Number of adult passengers.",
                        "default": 1
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Number of child passengers.",
                        "default": 0
                    },
                    "infantsOnLap": {
                        "title": "Infants (on lap)",
                        "minimum": 0,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Number of infant passengers on lap.",
                        "default": 0
                    },
                    "infantsInSeat": {
                        "title": "Infants (in seat)",
                        "minimum": 0,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Number of infant passengers in seat.",
                        "default": 0
                    },
                    "maxStops": {
                        "title": "Max Stops",
                        "enum": [
                            "0",
                            "1",
                            "2"
                        ],
                        "type": "string",
                        "description": "Maximum number of stops."
                    },
                    "maxPrice": {
                        "title": "Max Price",
                        "type": "integer",
                        "description": "Maximum price in your currency."
                    },
                    "maxDuration": {
                        "title": "Max Duration (minutes)",
                        "type": "integer",
                        "description": "Maximum total flight duration in minutes."
                    },
                    "airlines": {
                        "title": "Airlines",
                        "type": "array",
                        "description": "Filter by airline IATA codes or alliance names (e.g. UA, AA, ONEWORLD).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "departureTimeEarliest": {
                        "title": "Departure Time (earliest)",
                        "enum": [
                            "0",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "7",
                            "8",
                            "9",
                            "10",
                            "11",
                            "12",
                            "13",
                            "14",
                            "15",
                            "16",
                            "17",
                            "18",
                            "19",
                            "20",
                            "21",
                            "22",
                            "23"
                        ],
                        "type": "string",
                        "description": "Earliest departure hour."
                    },
                    "departureTimeLatest": {
                        "title": "Departure Time (latest)",
                        "enum": [
                            "0",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "7",
                            "8",
                            "9",
                            "10",
                            "11",
                            "12",
                            "13",
                            "14",
                            "15",
                            "16",
                            "17",
                            "18",
                            "19",
                            "20",
                            "21",
                            "22",
                            "23"
                        ],
                        "type": "string",
                        "description": "Latest departure hour."
                    },
                    "arrivalTimeEarliest": {
                        "title": "Arrival Time (earliest)",
                        "enum": [
                            "0",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "7",
                            "8",
                            "9",
                            "10",
                            "11",
                            "12",
                            "13",
                            "14",
                            "15",
                            "16",
                            "17",
                            "18",
                            "19",
                            "20",
                            "21",
                            "22",
                            "23"
                        ],
                        "type": "string",
                        "description": "Earliest arrival hour."
                    },
                    "arrivalTimeLatest": {
                        "title": "Arrival Time (latest)",
                        "enum": [
                            "0",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "7",
                            "8",
                            "9",
                            "10",
                            "11",
                            "12",
                            "13",
                            "14",
                            "15",
                            "16",
                            "17",
                            "18",
                            "19",
                            "20",
                            "21",
                            "22",
                            "23"
                        ],
                        "type": "string",
                        "description": "Latest arrival hour."
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "best",
                            "cheapest",
                            "fastest",
                            "departure-time",
                            "arrival-time"
                        ],
                        "type": "string",
                        "description": "How to sort results.",
                        "default": "best"
                    },
                    "showAllResults": {
                        "title": "Show All Results",
                        "type": "boolean",
                        "description": "Return all results instead of top ~30.",
                        "default": false
                    },
                    "includeCalendarPrices": {
                        "title": "Include Calendar Prices",
                        "type": "boolean",
                        "description": "Fetch cheapest price per day over a date range.",
                        "default": false
                    },
                    "calendarMode": {
                        "title": "Calendar Mode",
                        "enum": [
                            "graph",
                            "picker",
                            "grid"
                        ],
                        "type": "string",
                        "description": "Which calendar view to use. Graph gives ~60 days of prices, Picker gives ~6 weeks (round-trip optimized), Grid gives a narrow ±3 day window.",
                        "default": "graph"
                    },
                    "includeBookingDetails": {
                        "title": "Include Booking Details",
                        "type": "boolean",
                        "description": "Fetch detailed fare info and booking links per flight result (one extra request per result).",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy configuration. Residential proxies recommended."
                    }
                }
            },
            "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
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
