Flight Search — Google Flights Scraper avatar

Flight Search — Google Flights Scraper

Pricing

from $0.002 / per flight result

Go to Apify Store
Flight Search — Google Flights Scraper

Flight Search — Google Flights Scraper

Search flight prices for a single route with optional flex dates. Powered by Google Flights.

Pricing

from $0.002 / per flight result

Rating

0.0

(0)

Developer

bootforge

bootforge

Maintained by Community

Actor stats

1

Bookmarked

7

Total users

3

Monthly active users

13 hours ago

Last modified

Share

Google Flights Scraper

The Google Flights Scraper is an Apify actor that searches flight prices from Google Flights — one route or many in a single run. It returns price, cabin, stops, full segment detail (airline, flight number, aircraft, legroom), carbon emissions, and a bookable Google Flights URL for every itinerary.

Use it to find deals across flexible dates, build a fare dataset, or schedule daily price tracking with drop alerts — exported to JSON, CSV, or Excel.

Table of contents

What the flight scraper does

  • 🔎 Single or bulk routes — search one route or dozens of routes in a single run, one start fee.
  • 💸 Flex-date deal finding — search ±N days around a date, filter by max_price, keep the cheapest.
  • 🔔 Scheduled price tracking — enable track_history to store fares in the key-value store and fire alerts when a price drops.
  • 🛫 Round-trip and one-way — full departure and return itineraries with per-segment airline, flight number, aircraft, and legroom.
  • 🌱 Carbon emissionsemissions_kg per itinerary plus the route's typical average for Google's "% vs typical" comparison.
  • 🧭 Airport fuzzy matching — pass an IATA code or a city name; a bundled OurAirports dataset resolves it.
  • 💱 Major-currency pricing — price results in USD, EUR, GBP, JPY, and other supported currencies (unsupported codes fail loudly rather than silently returning USD).

How to scrape flights

  1. Click Try for free and open the actor.
  2. Enter a single route (origin, destination, departure_date) or paste a searches array for bulk routes.
  3. Optional: add flex_days + max_price for deal finding, or set track_history: true for scheduled monitoring.
  4. Click Start and watch results stream into the dataset.
  5. Export the data as JSON, CSV, or Excel, or pull it from the Apify API.

Single route:

{
"origin": "SGN",
"destination": "HAN",
"departure_date": "2026-05-15",
"return_date": "2026-05-20"
}

Bulk routes:

{
"searches": [
{"origin": "SGN", "destination": "HAN", "departure_date": "2026-05-15"},
{"origin": "SGN", "destination": "DAD", "departure_date": "2026-05-16"}
],
"adults": 2,
"cabin": "economy"
}

Deal finding (±3 days, under $200):

{
"origin": "SGN",
"destination": "HAN",
"departure_date": "2026-05-15",
"flex_days": 3,
"max_price": 200,
"max_results_per_search": 10
}

Price tracking (schedule this daily):

{
"origin": "SGN",
"destination": "HAN",
"departure_date": "2026-05-15",
"track_history": true,
"alert_threshold_pct": 10
}

Flight scraper input

FieldDescription
searchesBulk mode. Array of routes, each {origin, destination, departure_date, return_date?, flex_days?, max_stops?}. If set, the single-route fields below are ignored.
originIATA code or city name (e.g. SGN, Ho Chi Minh City).
destinationIATA code or city name.
departure_dateYYYY-MM-DD. Leave empty to auto-pick ~30 days from today. Must be a future date.
return_dateYYYY-MM-DD, on/after departure. Leave empty for one-way.
flex_daysSearch ±N days around the departure date (0–14). Used for deal finding.
max_stopsMaximum stops (0–3); omit for any.
adults / childrenPassenger counts (adults 1–9, children 0–9).
cabineconomy, premium, business, or first.
currencyISO 4217 code. Supported: USD, EUR, GBP, INR, JPY, CNY, AUD, CAD, CHF, SGD, HKD, AED, SAR, ZAR, BRL, MXN and other major currencies. An unsupported code fails the run rather than silently returning USD-priced results.
max_priceFilter out results above this price (deal finding).
max_results_per_searchLimit results per route (1–200, default 50).
track_historyEnable scheduled price monitoring — stores history in the KV store and fires alerts on drops.
alert_threshold_pctFire a price-alert event when the price drops by this percentage (1–90).
tracking_keyOverride the auto-generated history key (for multiple schedules on one route).
strategy_modeRetry ordering: cost_first (default), speed_first, balanced, stealth_first.
request_delayFixed delay (seconds) inserted between requests.
proxyProxy configuration. Apify Proxy (residential) is prefilled and strongly recommended.

Flight data output

Each itinerary is one dataset row. Sample:

{
"origin": "SGN",
"destination": "HAN",
"departure_date": "2026-05-15",
"return_date": null,
"price": 178.0,
"currency": "USD",
"price_tag": "best",
"booking_url": "https://www.google.com/travel/flights/...",
"departure": {
"stops": 0,
"duration_minutes": 130,
"emissions_kg": 113.0,
"emissions_typical_kg": 111.0,
"arrives_next_day": false,
"segments": [
{
"airline": "Vietnam Airlines",
"airline_code": "VN",
"flight_number": "251",
"from": "SGN",
"to": "HAN",
"departure_time": "2026-05-15T07:00:00",
"arrival_time": "2026-05-15T09:10:00",
"duration_minutes": 130,
"aircraft": "Airbus A321",
"legroom": "31 in"
}
],
"layovers": []
},
"return": null,
"scraped_at": "2026-05-15T00:00:00Z"
}

departure (and return for round-trips) hold the trip detail — segments, stops, duration_minutes, carbon emissions_kg (+ route emissions_typical_kg), and arrives_next_day. Each segment carries aircraft and legroom. price_tag labels the row as best, cheapest, or fastest.

ModeExtra output fields
Round-tripreturn itinerary populated (same shape as departure)
Price trackingprevious_price, price_change, pct_change, alert, checked_at

How much it costs

This actor uses pay-per-event pricing — you pay for what you scrape, not for time.

EventUSD
Actor start$0.02
Per flight result$0.002
Per price alert (tracking mode)$0.01
Typical runCost
1 route × 20 results$0.02 + $0.04 = $0.06
10 routes × 20 results$0.02 + $0.40 = $0.42
Daily tracking × 30 days (1 result/day)30 × ($0.02 + $0.002) = $0.66/month

Apify Proxy usage is billed separately by the platform.

Residential proxies are recommended for Google Flights — datacenter IPs are blocked by many sites and force a slower browser fallback. This actor supports Apify Proxy out of the box: the proxy input is prefilled with the RESIDENTIAL group, and Apify Proxy costs are billed separately by the platform.

If you run your own scrapers (inside or outside Apify) and want reliable residential IPs with per-country targeting and no monthly minimum, we recommend DataImpulse:

👉 Get DataImpulse residential proxies (referral link)

Why this flight scraper

  • One run, many routes — bulk searches scrape N routes on a single start fee, versus one run (and one start fee) per route with single-search actors.
  • Deal finding built inflex_days + max_price sweep dates around your target and keep the cheapest, no post-processing.
  • Scheduled tracking + alertstrack_history persists fares in the KV store and fires a price-alert event only when a drop crosses your threshold.
  • Airport fuzzy matching — a bundled OurAirports dataset resolves IATA codes or city names, so you don't have to look codes up.
  • Truthful currency labels — unsupported currency codes fail the run instead of silently returning USD-priced results mislabeled as another currency.
  • Open source — the underlying google-flight-scraper Python package ships a Typer CLI and a FastAPI server; the Apify wrapper is a thin layer.

FAQ

What is the Google Flights Scraper? It is an Apify actor that searches Google Flights for fares on one or many routes and returns structured itineraries — price, cabin, stops, per-segment airline and aircraft detail, carbon emissions, and a bookable Google Flights URL — as JSON, CSV, or Excel.

How do I scrape multiple routes at once? Pass a searches array where each entry is {origin, destination, departure_date, ...}. All routes run under a single actor start, so bulk scraping N routes costs one start fee plus the per-result charge, instead of N separate runs.

Can I track flight prices over time? Yes. Set track_history: true and schedule the actor to run daily. It stores each fare in the key-value store and, when a price drops by at least alert_threshold_pct, adds price_change, pct_change, and alert: true to the output and fires a billable price-alert event.

Which proxies work best for scraping flights? Residential proxies are recommended because datacenter IPs are widely blocked and slow the run down. This actor supports Apify Proxy (residential) out of the box; for running your own scrapers, DataImpulse (referral link) offers residential IPs with per-country targeting.

Why did my currency fail the run? Google Flights silently falls back to USD for currencies it doesn't recognize, which would make the output's currency label lie. To keep labels truthful, an unsupported ISO 4217 code fails the run instead — use a supported code such as USD, EUR, GBP, JPY, or another major currency.

Is scraping Google Flights legal? This actor collects only publicly available flight and pricing data. You are responsible for complying with Google's terms and applicable laws. Do not use the data in ways that violate those terms.

Rate this actor ⭐

If the flight scraper saved you time, please leave a review on its Apify Store page — ratings help other people find it and tell us what to build next. Hit a bug or missing field? Open an issue or contact us through the actor's Issues tab and we'll fix it fast — recency and reliability are what keep this actor ranking.

Building a full data pipeline? Pair this actor with our other scrapers — same proxy config format, same Pydantic-validated output, all open source.