# Google Flights Scraper for Prices and Times

> Google Flights scraper for your route and dates. Get airlines, times, stops, CO2 and exact prices in your currency. One-way or round trip. No login.

URL: https://cliqtomedia.com/actors/google-flights-scraper/

Category: Real estate, travel & cars · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/google-flights-scraper?fpr=cliqto

Get Google Flights results for a route and dates as a table. Each row is one flight, with price, times and stops. Run it often to see how prices move.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `BKK` in From (airport code). Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Google Flights Scraper searches Google Flights for your route and dates and returns one row per flight: airline, flight numbers, departure and arrival time, duration, stops, layovers, CO₂ and the exact price in your currency.



### Good for

- Compare fares and flight times for one route on one or more dates.
- Find the cheapest departure day in a short date range.
- Collect flight prices on a schedule to see how they change over time.

### Not a good fit

- No booking, no booking links and no airline-site prices: the Actor only reads what Google Flights shows on its results page.
- No price insights (price level, price history graph) and no multi-city trips.
- Round trip: each row is an outbound flight with the round-trip total price, as Google shows it on the first step. Return flights are not listed.
- Searches with children or lap infants: on some routes Google does not put the flights into the page and loads them later in the browser. Such a date gets a free `error` row with `SOURCE_INCOMPLETE`. With children, Google can also show fewer flights than for adults only.
- Prices change often and can differ from the price on the airline website.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Flight search with results | $0.025 (from $0.014 on paid Apify plans) | One route and date searched on Google Flights that listed flights. Includes every flight row up to maxResults. |
| Flight search without results | $0.001 | One route and date searched on Google Flights that listed no flights. Saves one not_found row. Searches that fail are free. |

- One result: about $0.03.
- 1,000 results: about $25.00.
- Every day 100 results, for 30 days: about $75.00 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 24 October 2026. Current price: https://apify.com/cliqtomedia/google-flights-scraper?fpr=cliqto

## Questions

### Is there an official Google Flights API?

No public one. This tool gives you the flight list as data.

### Can I book flights with it?

No. It only reads the results page. There are no booking links.

### Is the price the same as the airline price?

Not always. It is the price Google Flights shows at that time.

### Does it show return flights?

For round trips, each row is an outbound flight with the round-trip total.

### Do I need a Google account, login or API key?

No. The Actor reads the public Google Flights results page, without login or cookies.

### Why do I get fewer flights than in my browser?

The Actor returns the flights Google puts on the first results page, up to `maxResults`. With children, Google can put fewer flights into the page. Booking options for each flight are not part of the output.

## Data fields

- `status` (string): complete (a flight), not_found (Google shows no flights; one row per search) or error. Charges are per search, not per row: a date with flights is one flight-search event, a not_found row is one empty-search event, error rows are free.
- `statusReason` (string): Plain-English reason for not_found and error rows; null for flights.
- `errorCode` (string): Machine code for error rows, e.g. SOURCE_BLOCKED, DEADLINE_REACHED; null otherwise.
- `route` (string): Route as ORIGIN-DESTINATION, e.g. BKK-SIN.
- `origin` (string): Departure airport you searched (IATA).
- `destination` (string): Arrival airport you searched (IATA).
- `tripType` (string): one_way or round_trip.
- `departureDate` (string): Searched departure date (YYYY-MM-DD).
- `returnDate` (string): Searched return date for round trips; null for one-way.
- `cabinClass` (string): Searched cabin class.
- `adults` (integer): Adults in the search.
- `children` (integer): Children in the search.
- `infantsOnLap` (integer): Infants on lap in the search.
- `rank` (integer): Position in Google's list for this date, 1 = first.
- `isBest` (boolean): True when Google lists the flight among its "best" options.
- `airline` (string): Airline name(s) as Google shows them, comma-separated.
- `airlines` (array): Airline names.
- `airlineCodes` (array): IATA codes of the marketing carriers.
- `flightNumbers` (array): Flight numbers of every segment, e.g. ["SQ709"].
- `departureAirport` (string): Departure airport of this flight (IATA).
- `arrivalAirport` (string): Arrival airport of this flight (IATA).
- `departure` (string): Local departure date and time, YYYY-MM-DDTHH:MM (airport time zone).
- `arrival` (string): Local arrival date and time, YYYY-MM-DDTHH:MM (airport time zone).
- `durationMin` (integer): Total travel time in minutes, layovers included.
- `stops` (integer): Number of stops (0 = nonstop).
- `layovers` (array): Layovers: airport, city and duration in minutes.
- `segments` (array): Each flown segment: flight number, airports, times, duration, aircraft, legroom.
- `price` (number): Total price for all passengers in the given currency (round trip: total for both directions). null when Google shows no price.
- `currency` (string): Currency of price (ISO code) as Google returned it.
- `emissionsKg` (integer): Google's CO2 estimate for this flight per passenger, kg.
- `typicalEmissionsKg` (integer): Google's typical CO2 for this route, kg.
- `sourceUrl` (string): Google Flights URL of this search.
- `fetchedAt` (string): When the row was fetched (ISO timestamp, UTC).

## Input settings

- `origin` (string, required): Departure airport as a 3-letter IATA code, e.g. BKK, JFK, LHR.
- `destination` (string, required): Arrival airport as a 3-letter IATA code, e.g. SIN, CDG.
- `departureDate` (string, required): YYYY-MM-DD, or +N for N days from today (e.g. +30). Up to about 330 days ahead.
- `returnDate` (string): Leave empty for one-way. YYYY-MM-DD or +N. For a round trip, each row is an outbound flight with the round-trip total price, as Google Flights shows it on the first step.
- `additionalDepartureDays` (integer): Also search the next N days (0–14) to find the cheapest day. Each day is one search; the return date moves with it.
- `adults` (integer): Adults (12+), 1–9. Prices are the total for all passengers.
- `children` (integer): Children aged 2–11. On some routes Google does not return flights for searches with children or infants; such dates get a free SOURCE_INCOMPLETE row.
- `infantsOnLap` (integer): At most one per adult; 9 passengers in total.
- `cabinClass` (string): Cabin class to search.
- `maxStops` (string): Only flights with at most this many stops.
- `currency` (string): 3-letter ISO code such as USD, EUR, THB. The currency field of each row shows the currency Google really used.
- `country` (string): 2-letter country code Google uses as the point of sale (prices can differ by country).
- `maxResults` (integer): Maximum flight options returned for each departure date, in Google's order (best flights first). One charge per departure date that lists flights, however many rows it returns; a date with no flights costs $0.001 and error rows are free.
- `proxyConfiguration` (object): Leave on "No proxy": the run connects directly and, only if Google refuses, moves to Apify datacenter and then residential proxy automatically (included in the price). Pick a datacenter group only if you need a specific one; the RESIDENTIAL group cannot be chosen by hand.

## Step by step on Apify

1. Open the Input tab.
2. Keep the prefilled route `BKK` → `SIN` and `departureDate` `+30` (30 days from today), or add your own airport codes and date.
3. Click Start.
4. Open the Flights view of the Dataset and check `airline`, `departure`, `price` and `currency`.

## Use cases

| Task | Input | Key fields | Next step |
|---|---|---|---|
| Compare fares for a trip | `origin`, `destination`, `departureDate`, `returnDate` | `airline`, `departure`, `arrival`, `stops`, `price` | Export to CSV or a spreadsheet |
| Find the cheapest day | `additionalDepartureDays` | `departureDate`, `price` (or `cheapestPrice` in `RUN_SUMMARY`) | Sort by `price` |
| Track a route over time | Same input on a schedule | `flightNumbers`, `departure`, `price`, `fetchedAt` | Compare runs by flight number and departure time |
| Travel CO₂ reports | Route and dates | `emissionsKg`, `typicalEmissionsKg`, `durationMin` | Join with your trip list |

## Tips

- Search a date range to find the cheapest day to fly.
- Set the country and currency to match where you buy.
- Schedule the same search to build your own price history.

## Limits



- Up to 15 departure dates per run (`additionalDepartureDays` 0–14) and up to 300 rows per date. This is a limit, not a typical count: in our tests Google listed 10–60 flights per date.
- In our tests a search took about 1–3 seconds; 15 dates with 260 flights took 4.3 seconds.
- Dates can be up to about 330 days ahead, as on Google Flights.

## Sample result

```json
{
  "status": "complete",
  "statusReason": null,
  "errorCode": null,
  "route": "BKK-SIN",
  "tripType": "one_way",
  "departureDate": "2026-11-14",
  "returnDate": null,
  "cabinClass": "economy",
  "adults": 1,
  "rank": 1,
  "isBest": true,
  "airline": "Scoot",
  "airlineCodes": ["TR"],
  "flightNumbers": ["TR625"],
  "departureAirport": "BKK",
  "arrivalAirport": "SIN",
  "departure": "2026-11-14T11:50",
  "arrival": "2026-11-14T15:25",
  "durationMin": 155,
  "stops": 0,
  "layovers": [],
  "segments": [
    {
      "flightNumber": "TR625",
      "airline": "Scoot",
      "operatedBy": null,
      "departureAirport": "BKK",
      "arrivalAirport": "SIN",
      "aircraft": "Boeing 787",
      "legroom": "31 in"
    }
  ],
  "price": 129.05,
  "currency": "USD",
  "emissionsKg": 96,
  "typicalEmissionsKg": 103,
  "sourceUrl": "https://www.google.com/travel/flights?tfs=GhoSCjIwMjYtMTEtMTRqBRIDQktLcgUSA1NJTkABSAGYAQI&hl=en&gl=US&curr=USD",
  "fetchedAt": "2026-10-15T04:36:08.068Z"
}
```

## Use it from code

Actor ID: `cliqtomedia/google-flights-scraper`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/google-flights-scraper").call(run_input={
    "origin": "BKK",
    "destination": "SIN"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~google-flights-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"origin": "BKK", "destination": "SIN"}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/google-flights-scraper")
result = tool.invoke({"run_input": {"origin": "BKK", "destination": "SIN"}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Similar tools

- [99acres & MagicBricks India Property Scraper - No Login](https://cliqtomedia.com/actors/india-property-listings/)
- [Events Scraper: Eventbrite, Meetup & Luma — No Login](https://cliqtomedia.com/actors/events-aggregator/)
- [Redfin & Realtor Listings Scraper (US): Sale, Sold & Rent](https://cliqtomedia.com/actors/us-property-listings/)
