Google Flights Scraper avatar

Google Flights Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Google Flights Scraper

Google Flights Scraper

Extract flight data from Google Flights using the Google Flights Scraper. Collect airline names, departure and arrival times, prices, flight durations, and routes automatically. Ideal for travel research, price monitoring, and airline market analysis.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

ScrapAPI

ScrapAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Google Flights Scraper

The Google Flights Scraper is a Playwright-powered web scraping tool that automatically collects structured flight data from Google Flights — including prices, durations, airline details, and route legs — to save hours of manual research. It solves the pain of monitoring fares and itineraries by turning live search results into clean, analytics-ready records, making it a practical Google Flights API alternative for teams that need to scrape Google Flights at scale. Built for marketers, developers, data analysts, and researchers, it enables price monitoring, itinerary comparison, and route intelligence across markets with repeatable workflows.

What data / output can you get?

Below are real dataset fields and nested keys this Google Flights data scraper produces when it streams items to the Apify dataset. Example values are illustrative.

Data typeDescriptionExample value
is_bestMarks whether the result appears in the “Best” sectiontrue
typeTrip type inferred from card content"One way"
priceParsed fare from the card329
currencyCurrency used in the run"USD"
duration_minutesTotal duration extracted from the card (minutes)415
airlineCarrier code from the first leg"AA"
departure_airportIATA of first leg departure"LAX"
arrival_airportIATA of last leg arrival"JFK"
raw_flight_data.total_durationTotal duration in minutes (duplicate of duration_minutes)415
raw_flight_data.carbon_emissions.this_flightEmissions parsed from card text (grams)120000
raw_flight_data.flights[0].flight_numberAirline code and flight number"AA 100"
raw_flight_data.flights[0].airplaneAircraft type detected from text"Boeing 777"
raw_flight_data.airline_logoAbsolute URL to airline logo if available"https://www.gstatic.com/flights/airline_logos/70px/AA.png"
raw_flight_data.departure_tokenStable token derived from card content"TOKEN_18374652"

Notes:

  • The scraper pushes items in real time as it finds them; nested legs are available under raw_flight_data.flights[].
  • Export your dataset as JSON, CSV, or Excel from Apify for downstream analytics and automations.

Key features

  • 🚀 Real-time data streaming Each flight card is parsed and pushed instantly to the dataset with is_best, price, airline, duration_minutes, and more — perfect for dashboards and pipelines.

  • 🧠 Playwright-based scraping engine Uses a headless Chromium session with a realistic user agent and viewport to power reliable Google Flights web scraping.

  • 🌍 Localization controls Configure hl (language) and gl (country) plus currency for localized results — ideal for global price monitoring and regional analyses.

  • 🗺️ Multi-city input support Accepts a multi_city_json string to describe complex itineraries across multiple legs for broader Google Flights itinerary data extraction.

  • 📜 Smart scroll depth Control how many times to click “More flights” with max_pages to expand result coverage.

  • 🛡️ Proxy-ready and retry logic Integrates with Apify Proxy (when enabled) and includes retry attempts to improve resilience on dynamic pages.

  • 🔄 Google Flights price monitoring Capture current fares repeatedly to build your own google flights price scraper workflow and detect changes over time.

  • 🔗 Integration-friendly output Structured JSON makes it easy to plug into BI tools, internal APIs, or automation platforms — a practical Google Flights API alternative.

How to use Google Flights Scraper - step by step

  1. Create an Apify account
    Sign up or log in to Apify.

  2. Open the actor in the Apify Store
    Search for “Google Flights Scraper” and click Try for free.

  3. Configure input parameters

    • departureIATA (string): Single IATA or comma-separated codes (e.g., "LAX" or "LAX,SFO")
    • arrivalIATA (string): Comma-separated IATA codes (e.g., "JFK,BOS")
    • departureDate / arrivalDate (YYYY-MM-DD): Use ISO format
    • multi_city_json (string): JSON like [{"departure_id":"LAX","arrival_id":"JFK","date":"2026-08-01"}, ...]
    • currency (3 letters), hl (language), gl (country) for localization
    • max_pages to control “More flights” expansion
    • proxyConfiguration to enable Apify Proxy if needed
  4. Start the run
    Click Start. The scraper navigates to Google Flights, waits for results, scrolls, and clicks “More flights” based on max_pages.

  5. Watch results stream live
    Items appear in the Dataset with keys like is_best, price, currency, airline, duration_minutes, and raw_flight_data (full details).

  6. Export your data
    Download the dataset in JSON, CSV, or Excel for analysis or feed it into your internal tools.

Pro Tip: For complex itineraries, provide multi_city_json to model multi-leg routes and enrich your google flights data extraction workflows.

Use cases

Use case nameDescription
Travel pricing teams — fare trackingMonitor routes daily to detect price drops and build a google flights price monitoring dashboard with structured outputs.
Market research — airline benchmarkingCompare durations, stops, and carriers across origin–destination pairs to inform airline market analysis.
OTAs & startups — route discoveryCollect itineraries and durations to prioritize inventory and surface competitive options programmatically.
Data engineering — API pipelineTreat the dataset as a Google Flights API alternative by exporting via Apify API into ETL jobs and warehouses.
Content & SEO — deal pagesAutomate fresh deal content with current fares and flight details for destination pages and blogs.
Academic & policy — network studiesExtract route legs and durations to analyze connectivity, emissions mentions, and travel patterns at scale.

Why choose Google Flights Scraper?

Built for precision and reliability, this Google Flights scraping tool combines a headless browser with structured parsing to deliver consistent, production-ready outputs.

  • ✅ Accurate, structured results: Extracts price, airline, duration_minutes, airports, and nested legs for analysis-ready records.
  • 🌐 Multilingual & regional: Control hl and gl for localized SERPs and set currency to match your reporting.
  • 📈 Scalable runs: Expand coverage with max_pages for deeper result sets in a single execution.
  • 💻 Developer-friendly: JSON-first design simplifies integration into pipelines and supports automated google flights web scraping workflows.
  • 🛡️ Safe & robust: Optional Apify Proxy and retries help mitigate volatility and soft blocks on dynamic pages.
  • 💸 Cost-effective automation: Replace manual checks with a repeatable google flights scraping tool that scales with your needs.
  • 🔁 Better than brittle extensions: Avoid flaky browser add-ons; run consistent, server-side jobs on Apify infrastructure.

In short, it’s a dependable google flights scraping bot designed for teams that value clean data and repeatable processes.

Yes — when used responsibly. This tool collects information from publicly available Google Flights pages without logging into accounts.

Guidelines for responsible use:

  • Scrape only public data and respect platform policies.
  • Configure reasonable run frequency and concurrency.
  • Comply with applicable regulations (e.g., GDPR, CCPA) and your organization’s legal guidelines.
  • Do not attempt to access private or authenticated content.

Always verify your specific use case with your legal team.

Input parameters & output format

Example input (JSON)

{
"departureIATA": "LAX",
"arrivalIATA": "JFK",
"departureDate": "2026-07-28",
"arrivalDate": "",
"multi_city_json": "",
"adults": 1,
"children": 0,
"infants": 0,
"seatclass": "1",
"stops": "0",
"alliances": "ALL",
"airlines": "ALL",
"maxPrice": 0,
"currency": "USD",
"hl": "en",
"gl": "us",
"max_pages": 1,
"maximum": 20,
"proxyConfiguration": {
"useApifyProxy": false
}
}

Parameters

  • departureIATA (string) — 3-letter IATA code(s) (e.g., LAX, JFK). Multiple codes supported. Default: "LAX". Required: No.
  • arrivalIATA (string) — List of IATA codes separated by commas (supports bulk input). Use 'london' for LHR, LGW, STN, LTN, LCY. Default: "JFK". Required: No.
  • departureDate (string) — Pick your travel date. Format: YYYY-MM-DD. Default: "2026-07-28". Required: No.
  • departureDateRng (string) — Optional range for departure (e.g., +1, -1). Default: "". Required: No.
  • arrivalDate (string) — Pick your return date (leave empty for one-way). Format: YYYY-MM-DD (optional). Default: "". Required: No.
  • arrivalDateRng (string) — Optional range for return (e.g., +1, -1). Default: "". Required: No.
  • multi_city_json (string) — JSON string for multi-city trips. Format: [{"departure_id":"...","arrival_id":"...","date":"..."}]. Default: "". Required: No.
  • adults (integer) — Number of adult passengers (12+ years). Default: 1. Min: 1, Max: 9. Required: No.
  • children (integer) — Number of children (2-12 years). Default: 0. Min: 0, Max: 9. Required: No.
  • infants (integer) — Number of infants (under 2 years, on lap). Default: 0. Min: 0, Max: 9. Required: No.
  • seatclass (string) — Choose your comfort level. One of "1","2","3","4". Default: "1". Required: No.
  • stops (string) — Filter by number of layovers. One of "0","1","2". Default: "0". Required: No.
  • alliances (string) — Filter by (STAR, SKYTEAM, ONEWORLD). Default: "ALL". Required: No.
  • airlines (string) — Comma-separated airline codes (e.g., AA, DL). Default: "ALL". Required: No.
  • maxPrice (integer) — Set a maximum price (0 for no limit). Default: 0. Required: No.
  • currency (string) — Preferred currency (USD, EUR, BDT, etc.). 3 letters. Default: "USD". Required: No.
  • hl (string) — Language code for results (e.g., 'en', 'fr', 'de', 'es'). Default: "en". Required: No.
  • gl (string) — Country code for results (e.g., 'us', 'uk', 'fr', 'de'). Default: "us". Required: No.
  • max_pages (integer) — How many “More flights” buttons to click. Default: 1 (min 1). Required: No.
  • maximum (integer) — Total number of flights to collect. Default: 20 (min 1, max 100). Required: No.
  • proxyConfiguration (object) — Keep your requests safe and undetected. Default: {"useApifyProxy": false}. Required: No.

Output format

The actor streams each result to the dataset with the following structure:

{
"is_best": true,
"type": "One way",
"price": 329,
"currency": "USD",
"duration_minutes": 415,
"airline": "AA",
"departure_airport": "LAX",
"arrival_airport": "JFK",
"raw_flight_data": {
"flights": [
{
"departure_airport": { "name": "Los Angeles", "id": "LAX", "time": "2026-07-28 07:00" },
"arrival_airport": { "name": "New York", "id": "JFK", "time": "2026-07-28 15:55" },
"airline": "AA",
"flight_number": "AA 100",
"duration": 0,
"airplane": "Boeing 777",
"airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/AA.png",
"travel_class": "Economy",
"legroom": "31 in",
"extensions": ["Nonstop", "Wi-Fi"]
}
],
"total_duration": 415,
"carbon_emissions": {
"this_flight": 120000,
"typical_for_this_route": 0,
"difference_percent": 0
},
"price": 329,
"type": "One way",
"airline_logo": "https://www.gstatic.com/flights/airline_logos/70px/AA.png",
"extensions": ["Checked baggage for a fee"],
"departure_token": "TOKEN_18374652"
}
}

Notes:

  • Some nested fields depend on what’s visible in the card (e.g., airplane, extensions). If unavailable, they may be empty or defaulted.

FAQ

Is there a free trial or pricing plan?

Yes. You can run the actor on Apify and take advantage of the platform’s free trial minutes to evaluate the scraper before upgrading.

Do I need to log in to Google?

No. The scraper navigates public Google Flights pages without account authentication, using a headless browser session to extract data.

Can I use this as a Google Flights API alternative?

Yes. Treat the Apify dataset and API as your google flights scraping tool endpoint — results stream in JSON and can be fetched programmatically.

Does it support Python integrations?

Yes. While the actor runs on Apify, the output is standard JSON. You can pull results into Python scripts for analysis or automation.

How many results can it collect per run?

Coverage depends on the page and max_pages setting, which controls how many times the scraper clicks “More flights.” Larger values expand the result set.

Which data points are included?

Top-level fields include is_best, type, price, currency, duration_minutes, airline, departure_airport, arrival_airport, plus raw_flight_data with legs, emissions, airline_logo, and a departure_token.

Can I monitor prices over time?

Yes. Schedule runs and compare price values between datasets to implement your own google flights price monitoring workflow.

Yes — when you collect public data responsibly and comply with relevant laws and platform terms. Avoid private/authenticated content and consult your legal team for specific use cases.

Final thoughts

The Google Flights Scraper is built to turn live Google Flights pages into structured, analysis-ready data for pricing, research, and travel products. With real-time streaming, localization controls, and integration-friendly JSON, it’s a practical choice for marketers, developers, analysts, and researchers. Use it as a Google Flights API alternative, automate exports via the Apify API, and start extracting smarter itinerary and fare insights at scale.