# Google Flights Scraper — Real-Time Prices & Itineraries (`openclawai/google-flights-scraper`) Actor

Live flight prices, airlines, durations, stops, plane types, departure/arrival times, and carbon emissions from Google Flights. One-way, round-trip, multi-city. Economy through First. Adults, children, infants. 30+ languages. No API key, no quotas. Pay per itinerary scraped.

- **URL**: https://apify.com/openclawai/google-flights-scraper.md
- **Developed by:** [Pika Choo](https://apify.com/openclawai) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 itinerary scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 — Real-Time Prices, Itineraries & Carbon Data

Scrape **live Google Flights data** without an API key. Get prices, airlines, durations, layovers, plane types, departure & arrival times, and carbon emissions for any route, any date, any cabin class.

> Built for travel sites, fare aggregators, corporate travel platforms, and anyone tired of paying $1,000/mo for a flight API.

### ⚡ Why this actor

- **Real-time data** — every run hits Google Flights live, not a cached snapshot
- **No API key** — zero setup, zero quota anxiety
- **Full itinerary detail** — multi-segment legs, plane types, exact times, carbon emissions
- **All cabins** — economy, premium economy, business, first
- **All trip types** — one-way, round-trip, multi-city
- **Pay-per-itinerary** pricing — only pay for results you get

### 💰 Use cases

| Buyer | Use case |
|---|---|
| 🏢 Corporate travel | Daily fare monitoring on key routes for policy compliance |
| 📰 Travel media | Build "cheapest day to fly" content & price comparison tables |
| 🤖 AI travel agents | Real-time fare lookup for chatbot/assistant pipelines |
| 📊 Pricing analytics | Track airline pricing strategy & seasonality |
| 💡 Indie SaaS | Power your travel-deal alerts product without a Skyscanner contract |

### 🚀 Quick example

**Input:**
```json
{
    "from_airport": "JFK",
    "to_airport": "LAX",
    "date": "2026-06-15",
    "trip": "one-way",
    "seat": "economy",
    "adults": 1,
    "max_results": 50
}
````

**Output (one itinerary):**

```json
{
    "from_airport": "JFK",
    "to_airport": "LAX",
    "date": "2026-06-15",
    "trip": "one-way",
    "airline_codes": ["B6"],
    "airline_names": ["JetBlue"],
    "price": 149,
    "stops": 0,
    "duration_min_total": 353,
    "departure": "2026-06-15T06:00:00",
    "arrival": "2026-06-15T08:53:00",
    "segments": [
        {
            "from_airport": {"code": "JFK", "name": "John F. Kennedy International Airport"},
            "to_airport": {"code": "LAX", "name": "Los Angeles International Airport"},
            "departure": "2026-06-15T06:00:00",
            "arrival": "2026-06-15T08:53:00",
            "duration_min": 353,
            "plane_type": "Airbus A320"
        }
    ],
    "carbon_emission_g": 407000,
    "carbon_typical_on_route_g": 363000,
    "scraped_at": "2026-04-30T10:18:06.919Z"
}
```

### 🌍 Supported features

| Feature | Supported |
|---|---|
| One-way searches | ✅ |
| Round-trip searches | ✅ |
| Multi-city itineraries | ✅ |
| Economy, Premium, Business, First | ✅ |
| Adults, children, infants (seat & lap) | ✅ |
| 30+ result languages | ✅ |
| Carbon emissions data | ✅ |
| Plane type per segment | ✅ |
| Layover detection | ✅ (via `stops` field) |

### 🛠️ Output fields

| Field | Type | Description |
|---|---|---|
| `airline_codes` | array | IATA airline codes (e.g. `B6`, `DL`, `UA`) |
| `airline_names` | array | Human-readable airline names |
| `price` | number | Total price in displayed currency (typically USD) |
| `stops` | integer | Number of layovers (0 = direct) |
| `duration_min_total` | integer | Total trip time in minutes |
| `departure` / `arrival` | ISO datetime | First-segment departure / last-segment arrival |
| `segments` | array | Per-leg detail with airports, times, plane type |
| `carbon_emission_g` | number | This itinerary's CO₂ emissions (grams) |
| `carbon_typical_on_route_g` | number | Typical CO₂ for the route (compare for greener picks) |

### 💸 Pricing

Pay per scraped itinerary — set the price tier in Apify Console after the actor is published.

### 🔍 SEO keywords

google flights scraper, flight price scraper, airfare scraper, flight data api, scrape flights without api, real-time flight prices, fare aggregator data, multi-city flight scraper, google flights api alternative, airline price tracker, flight scraping tool, carbon emissions flight data, jfk lax flights scraper, business class scraper, premium economy scraper

### ⚠️ Compliance

This actor extracts publicly available data from Google Flights search results. No login or paid API is involved. Use the data in compliance with applicable laws and Google's terms of service. Intended for research, monitoring, and analytics workflows.

# Actor input Schema

## `from_airport` (type: `string`):

Three-letter departure airport code. Examples: JFK, LAX, LHR, CDG, NRT.

## `to_airport` (type: `string`):

Three-letter destination airport code.

## `date` (type: `string`):

Outbound date in YYYY-MM-DD format. If left empty, defaults to today + 30 days.

## `return_date` (type: `string`):

Return date in YYYY-MM-DD. Leave empty for one-way trips.

## `trip` (type: `string`):

One-way, round-trip, or multi-city itinerary.

## `seat` (type: `string`):

Cabin class for the search.

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

Adult passengers (age 18+).

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

Children (ages 2–11).

## `infants_in_seat` (type: `integer`):

Infants under 2 with their own seat.

## `infants_on_lap` (type: `integer`):

Infants under 2 held on adult's lap.

## `language` (type: `string`):

Two-letter ISO language for results: en, es, fr, de, ja, zh-TW, etc.

## `max_results` (type: `integer`):

Maximum itineraries to return. Google Flights typically surfaces 30–80 per query.

## Actor input object example

```json
{
  "from_airport": "JFK",
  "to_airport": "LAX",
  "trip": "one-way",
  "seat": "economy",
  "adults": 1,
  "children": 0,
  "infants_in_seat": 0,
  "infants_on_lap": 0,
  "language": "en",
  "max_results": 25
}
```

# Actor output Schema

## `itineraries` (type: `string`):

No description

# 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 = {
    "from_airport": "JFK",
    "to_airport": "LAX"
};

// Run the Actor and wait for it to finish
const run = await client.actor("openclawai/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 = {
    "from_airport": "JFK",
    "to_airport": "LAX",
}

# Run the Actor and wait for it to finish
run = client.actor("openclawai/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 '{
  "from_airport": "JFK",
  "to_airport": "LAX"
}' |
apify call openclawai/google-flights-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Flights Scraper — Real-Time Prices & Itineraries",
        "description": "Live flight prices, airlines, durations, stops, plane types, departure/arrival times, and carbon emissions from Google Flights. One-way, round-trip, multi-city. Economy through First. Adults, children, infants. 30+ languages. No API key, no quotas. Pay per itinerary scraped.",
        "version": "1.0",
        "x-build-id": "YHgGvdpuegxIfqFw3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/openclawai~google-flights-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-openclawai-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/openclawai~google-flights-scraper/runs": {
            "post": {
                "operationId": "runs-sync-openclawai-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/openclawai~google-flights-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-openclawai-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",
                "required": [
                    "from_airport",
                    "to_airport"
                ],
                "properties": {
                    "from_airport": {
                        "title": "🛫 From (IATA code)",
                        "pattern": "^[A-Z]{3}$",
                        "type": "string",
                        "description": "Three-letter departure airport code. Examples: JFK, LAX, LHR, CDG, NRT."
                    },
                    "to_airport": {
                        "title": "🛬 To (IATA code)",
                        "pattern": "^[A-Z]{3}$",
                        "type": "string",
                        "description": "Three-letter destination airport code."
                    },
                    "date": {
                        "title": "📅 Departure Date",
                        "type": "string",
                        "description": "Outbound date in YYYY-MM-DD format. If left empty, defaults to today + 30 days."
                    },
                    "return_date": {
                        "title": "🔁 Return Date",
                        "type": "string",
                        "description": "Return date in YYYY-MM-DD. Leave empty for one-way trips."
                    },
                    "trip": {
                        "title": "🧭 Trip Type",
                        "enum": [
                            "one-way",
                            "round-trip",
                            "multi-city"
                        ],
                        "type": "string",
                        "description": "One-way, round-trip, or multi-city itinerary.",
                        "default": "one-way"
                    },
                    "seat": {
                        "title": "💺 Cabin Class",
                        "enum": [
                            "economy",
                            "premium-economy",
                            "business",
                            "first"
                        ],
                        "type": "string",
                        "description": "Cabin class for the search.",
                        "default": "economy"
                    },
                    "adults": {
                        "title": "🧑 Adults",
                        "minimum": 1,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Adult passengers (age 18+).",
                        "default": 1
                    },
                    "children": {
                        "title": "🧒 Children",
                        "minimum": 0,
                        "maximum": 8,
                        "type": "integer",
                        "description": "Children (ages 2–11).",
                        "default": 0
                    },
                    "infants_in_seat": {
                        "title": "👶 Infants in seat",
                        "minimum": 0,
                        "maximum": 8,
                        "type": "integer",
                        "description": "Infants under 2 with their own seat.",
                        "default": 0
                    },
                    "infants_on_lap": {
                        "title": "🤱 Infants on lap",
                        "minimum": 0,
                        "maximum": 8,
                        "type": "integer",
                        "description": "Infants under 2 held on adult's lap.",
                        "default": 0
                    },
                    "language": {
                        "title": "🌐 Language",
                        "type": "string",
                        "description": "Two-letter ISO language for results: en, es, fr, de, ja, zh-TW, etc.",
                        "default": "en"
                    },
                    "max_results": {
                        "title": "🔢 Max Itineraries",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum itineraries to return. Google Flights typically surfaces 30–80 per query.",
                        "default": 25
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
