# Google Flights Deals Scraper (`rainminer/google-flights-deals-scraper`) Actor

Scrapes cheap flight deals from Google Flights Deals for a given departure city, returning destination, dates, price, discount, airline, and routing for up to 30 deals.

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

## Pricing

from $1.69 / 1,000 deal founds

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 Deals Scraper](https://i.postimg.cc/nc8HJ91Q/Screenshot-2026-06-03-at-10-59-06-Find-flight-deals-worldwide-book-your-tickets-easily-Google-Fl.png)

### What is Google Flights Deals Scraper?

**Google Flights Deals Scraper** extracts cheap flight deals from [Google Flights Deals](https://www.google.com/travel/flights/deals) for any departure city. Google curates up to **30 discounted round-trip offers** per city — this scraper retrieves all of them in seconds and delivers a clean, structured dataset. No Google Flights API key needed.

For each deal you get: **destination city and country**, **departure and return dates**, **lowest price**, **discount percentage**, **airline**, **stops and duration**, **route code**, and a **direct booking link**.

### What can Google Flights Deals Scraper do? ✈️

- 🗺️ **Scrape up to 30 flight deals per city** — the full set Google shows for any departure point
- 🌍 **75+ supported departure cities** — New York, London, Tokyo, Dubai, São Paulo, Sydney, and more
- 💰 **Price and discount data** — exact fare and the % off vs. typical price
- 📅 **Travel dates included** — departure and return dates for each deal
- 🔗 **Ready-to-use booking URLs** — each deal links directly to the pre-filled Google Flights search
- ⚡ **Fast and lightweight** — no browser, no JavaScript required; most runs complete in under 10 seconds
- 🔄 **Schedule and automate** — run on a daily schedule via the Apify platform to track deal changes over time
- 📦 **Export in any format** — download results as JSON, CSV, Excel, or XML; access via API

### What data can you extract from Google Flights?

| Field             | Description                    | Example                                           |
| ----------------- | ------------------------------ | ------------------------------------------------- |
| `destination`     | Destination city               | `"Rome"`                                          |
| `country`         | Destination country            | `"Italy"`                                         |
| `description`     | Google's destination blurb     | `"Ancient ruins & gelato"`                        |
| `departureDate`   | Outbound flight date           | `"Sun, Aug 30"`                                   |
| `returnDate`      | Return flight date             | `"Sun, Sep 6"`                                    |
| `price`           | Lowest round-trip fare         | `320`                                             |
| `currency`        | Currency code                  | `"USD"`                                           |
| `discountPercent` | Discount vs. typical price     | `58`                                              |
| `stops`           | Number of stops                | `"Nonstop"`                                       |
| `duration`        | Total trip duration            | `"9 hr 15 min"`                                   |
| `route`           | IATA origin–destination        | `"JFK–FCO"`                                       |
| `airline`         | Operating airline              | `"Delta"`                                         |
| `bookingUrl`      | Pre-filled Google Flights link | `"https://www.google.com/travel/flights?tfs=..."` |
| `originCity`      | Departure city of this run     | `"New York"`                                      |

### How to scrape Google Flights deals

1. **Open** [Google Flights Deals Scraper](https://apify.com/rainminer/google-flights-deals-scraper) on Apify Store and click **Try for free**.
2. **Select your departure city** from the dropdown — 75+ major global cities are supported.
3. **Set `maxItems`** to cap how many deals to return (default: 10, max: 30).
4. **Click Start** — the scraper runs and typically finishes in under 10 seconds.
5. **Download your dataset** in JSON, CSV, Excel, or any other format from the Results tab.

### How much does it cost to scrape Google Flights?

Google Flights Deals Scraper uses **consumption-based pricing** on the Apify platform (Compute Units). A typical run costs well under **$0.01** and completes in under 10 seconds. Apify offers **$5 of free credits** every month on the Free plan — that's enough for thousands of runs.

The scraper defaults to Apify datacenter proxies (US exit nodes), which keeps costs minimal — typically well under $0.01 per run.

### Input

| Field                | Type    | Default               | Description                                                                                                 |
| -------------------- | ------- | --------------------- | ----------------------------------------------------------------------------------------------------------- |
| `startingPoint`      | Select  | `"New York"`          | Departure city. Pick from the dropdown of 75+ supported cities.                                             |
| `maxItems`           | Integer | `10`                  | Maximum deals to return (up to 30).                                                                         |
| `proxyConfiguration` | Object  | Apify datacenter (US) | Controls currency. US proxy → USD prices. Set a proxy in your country to get prices in your local currency. |

**Example input:**

```json
{
  "startingPoint": "London",
  "maxItems": 30,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [],
    "apifyProxyCountry": "US"
  }
}
````

### Output example

```json
{
  "destination": "Rome",
  "country": "Italy",
  "description": "Ancient ruins, art & la dolce vita",
  "departureDate": "Sat, Sep 6",
  "returnDate": "Sat, Sep 13",
  "price": 320,
  "currency": "USD",
  "discountPercent": 52,
  "stops": "Nonstop",
  "duration": "9 hr 30 min",
  "route": "JFK–FCO",
  "airline": "Delta",
  "bookingUrl": "https://www.google.com/travel/flights?tfs=...",
  "originCity": "New York"
}
```

You can download the dataset extracted by Google Flights Deals Scraper in JSON, HTML, CSV, or Excel format directly from the Results tab, or access it via the [Apify API](https://docs.apify.com/api/v2).

### FAQ

#### Is scraping Google Flights legal?

This scraper only collects publicly available flight deal data that Google displays to any visitor on [google.com/travel/flights/deals](https://www.google.com/travel/flights/deals) — no login, no personal data, no private user information. We believe using this data for legitimate business purposes is safe. Always ensure your use complies with Google's Terms of Service and applicable regulations in your region. For questions about data protection and GDPR, consult your legal team or read [Apify's blog on web scraping legality](https://blog.apify.com/is-web-scraping-legal/).

#### Why aren't all cities supported?

The scraper relies on Google's internal location identifiers. Only cities whose identifiers have been verified are available in the dropdown. New cities are added regularly — if your city is missing, open an issue and it will be prioritized.

#### How do I get prices in my local currency?

Google returns prices based on the **country of the IP address** making the request, not the departure city. By default the scraper uses US datacenter proxies, so all prices are returned in **USD**.

To get prices in a different currency, set `proxyConfiguration` to use a proxy with an exit node in your target country. For example, a UK proxy will return prices in GBP, a German proxy in EUR. The `currency` field in each result always reflects the currency that was returned.

#### Can I schedule this scraper to run automatically?

Yes. On the Apify platform you can set up a scheduled run to scrape deals daily or weekly for any city, and integrate results with tools like Google Sheets, Slack, or your own API via [Apify integrations](https://apify.com/integrations).

#### How many results can I get?

Google surfaces at most 30 curated deals per departure city per scrape. This is a Google platform limit. Run the scraper for multiple cities in parallel to collect deals across many departure points.

***

### Image Credit

Image credit: [Google Flights](https://www.google.com/travel/flights/deals)

# Actor input Schema

## `startingPoint` (type: `string`):

City to search deals from.

## `maxItems` (type: `integer`):

Maximum number of deals to return. The page shows up to 30 deals.

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

Proxy settings. Defaults to Apify datacenter proxies (US), which return prices in USD. To get prices in your local currency, set a proxy with an exit IP in your country.

## Actor input object example

```json
{
  "startingPoint": "New York",
  "maxItems": 30,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startingPoint": "New York",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/google-flights-deals-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 = {
    "startingPoint": "New York",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": [],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/google-flights-deals-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 '{
  "startingPoint": "New York",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [],
    "apifyProxyCountry": "US"
  }
}' |
apify call rainminer/google-flights-deals-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Flights Deals Scraper",
        "description": "Scrapes cheap flight deals from Google Flights Deals for a given departure city, returning destination, dates, price, discount, airline, and routing for up to 30 deals.",
        "version": "1.0",
        "x-build-id": "f9VnWR4MxaOPWPFlk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rainminer~google-flights-deals-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rainminer-google-flights-deals-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/rainminer~google-flights-deals-scraper/runs": {
            "post": {
                "operationId": "runs-sync-rainminer-google-flights-deals-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/rainminer~google-flights-deals-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-rainminer-google-flights-deals-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": {
                    "startingPoint": {
                        "title": "Departure city",
                        "enum": [
                            "Amsterdam",
                            "Athens",
                            "Auckland",
                            "Atlanta",
                            "Bangkok",
                            "Barcelona",
                            "Beijing",
                            "Berlin",
                            "Bogotá",
                            "Boston",
                            "Brussels",
                            "Bucharest",
                            "Budapest",
                            "Buenos Aires",
                            "Cairo",
                            "Calgary",
                            "Cancún",
                            "Cape Town",
                            "Casablanca",
                            "Chicago",
                            "Copenhagen",
                            "Dallas",
                            "Delhi",
                            "Denver",
                            "Dubai",
                            "Dublin",
                            "Frankfurt",
                            "Helsinki",
                            "Hong Kong",
                            "Istanbul",
                            "Jakarta",
                            "Johannesburg",
                            "Kuala Lumpur",
                            "Las Vegas",
                            "Lima",
                            "Lisbon",
                            "London",
                            "Los Angeles",
                            "Lyon",
                            "Madrid",
                            "Melbourne",
                            "Mexico City",
                            "Miami",
                            "Milan",
                            "Montreal",
                            "Moscow",
                            "Mumbai",
                            "Munich",
                            "Nairobi",
                            "New York",
                            "Oslo",
                            "Osaka",
                            "Paris",
                            "Philadelphia",
                            "Phoenix",
                            "Prague",
                            "Rome",
                            "Santiago",
                            "São Paulo",
                            "Seattle",
                            "Seoul",
                            "Shanghai",
                            "Singapore",
                            "Sofia",
                            "Stockholm",
                            "Sydney",
                            "Taipei",
                            "Tel Aviv",
                            "Tokyo",
                            "Toronto",
                            "Vancouver",
                            "Vienna",
                            "Warsaw",
                            "Washington DC",
                            "Zurich"
                        ],
                        "type": "string",
                        "description": "City to search deals from."
                    },
                    "maxItems": {
                        "title": "Maximum items",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Maximum number of deals to return. The page shows up to 30 deals.",
                        "default": 30
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Defaults to Apify datacenter proxies (US), which return prices in USD. To get prices in your local currency, set a proxy with an exit IP in your country."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
