Google Flights Scraper & Price Monitor - Airfare API avatar

Google Flights Scraper & Price Monitor - Airfare API

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Google Flights Scraper & Price Monitor - Airfare API

Google Flights Scraper & Price Monitor - Airfare API

Scrape live Google Flights prices, airlines, schedules, stops, connection airports, aircraft and CO2. Search multiple routes or dates, rank cheap fares, and create price alerts. No API key or login.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Group Oject

Group Oject

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Categories

Share

Search Google Flights and export live airfare results as structured JSON, CSV, Excel, or an API response. This Actor collects flight prices, airlines, schedules, stops, connection airports, aircraft, and emissions without a Google API key or login.

Use one run to search a single trip, compare many routes, or scan up to 31 departure dates. Results are ranked by price and enriched with stable itinerary IDs, per-traveler prices, target-price flags, and route-level fare summaries.

Why use this flight scraper?

  • Live airfare search from Google Flights at run time
  • One-way and round-trip flights in economy, premium economy, business, or first class
  • Bulk route search for travel sites, agencies, corporate travel teams, and data pipelines
  • Flexible-date scans to find cheaper departure days
  • Price alerts with belowTargetPrice
  • Direct-flight, stop, airline, and maximum-price filters
  • Detailed segments with airport names, local times, duration, and aircraft when available
  • Route summaries with lowest, median, average, and cheapest direct-flight prices
  • Agent-ready output for MCP, AI travel assistants, n8n, Make, Zapier, and custom applications
  • No Google Flights API key and no Google account required

What data can you extract?

Each flight itinerary includes:

FieldDescription
itineraryIdStable hash for identifying the same itinerary across runs
rankPrice rank within the route search
price / currencyTotal displayed fare and ISO currency
pricePerTravelerTotal fare divided by the passenger count
priceTierlowest, good, typical, or high relative to returned fares
belowTargetPriceWhether the fare meets your configured target
airlinesMarketing or operating airlines shown for the itinerary
airlineCodePrimary airline IATA code when available
departureAt / arrivalAtLocal flight timestamps
durationMinutesSource segment durations plus same-airport connections; excludes a round-trip stay and is null when a transfer cannot be calculated
stops / isDirectConnection count and direct-flight flag
segmentsDetailed airport, schedule, duration, and aircraft data
layoverAirportsConnection airport codes derived from the itinerary
carbonGramsGoogle Flights CO2 estimate when available
carbonVsTypicalPercentDifference from typical emissions for the route
googleFlightsUrlReproducible Google Flights search URL
scrapedAtUTC extraction timestamp

When includeRouteSummary is enabled, the Actor also writes one route_summary record per search. It contains the result count, lowest fare, median fare, average fare, direct-flight count, and cheapest direct fare.

Quick start

Search a one-way economy flight:

{
"origin": "JFK",
"destination": "LAX",
"departureDate": "2026-10-15",
"maxResultsPerSearch": 50
}

Search a round trip:

{
"origin": "JFK",
"destination": "LHR",
"departureDate": "2026-11-10",
"returnDate": "2026-11-17",
"cabinClass": "economy",
"adults": 2,
"currency": "USD"
}

Find the cheapest departure date

Set departureDateEnd to search every day in an inclusive date range:

{
"origin": "CMN",
"destination": "CDG",
"departureDate": "2026-10-01",
"departureDateEnd": "2026-10-07",
"directOnly": true,
"targetPrice": 180,
"maxResultsPerSearch": 30
}

The range is limited to 31 days to keep runs predictable. Every date becomes a separate search and receives its own route summary.

Search multiple flight routes

Use additionalRoutes to compare destinations or maintain a flight-price watchlist:

{
"origin": "JFK",
"destination": "LAX",
"departureDate": "2026-10-15",
"additionalRoutes": [
{
"origin": "JFK",
"destination": "SFO",
"departureDate": "2026-10-15"
},
{
"origin": "BOS",
"destination": "LHR",
"departureDate": "2026-11-10",
"returnDate": "2026-11-17"
}
],
"maxConcurrency": 2
}

You can submit up to 50 additional routes and up to 100 route/date searches per run.

Filter cheap or direct flights

{
"origin": "LAX",
"destination": "MEX",
"departureDate": "2026-10-20",
"directOnly": true,
"maxPrice": 250,
"targetPrice": 200,
"airlines": ["AM", "DL"],
"maxResultsPerSearch": 100
}

maxPrice excludes expensive results. targetPrice keeps all matching results but marks fares at or below the threshold, which is useful for alerts and automations.

Input reference

Route

InputTypeDescription
originstringRequired three-letter origin IATA code
destinationstringRequired three-letter destination IATA code
departureDatestringRequired date in YYYY-MM-DD format
returnDatestringOptional return date for round trips
departureDateEndstringOptional final date for a flexible-date scan
additionalRoutesarrayAdditional origin, destination, departure, and optional return dates

Travelers and filters

InputDefaultDescription
cabinClasseconomyEconomy, premium economy, business, or first
adults1Adult passengers
children0Child passengers
infantsInSeat0Infants occupying seats
infantsOnLap0Lap infants
directOnlyfalseReturn only nonstop flights
maxStopsanyMaximum accepted stops from 0 to 3
airlines[]Optional airline IATA codes
maxPricenoneMaximum total displayed fare
targetPricenoneThreshold used by belowTargetPrice
maxResultsPerSearch100Maximum itinerary rows per route/date search

Locale and reliability

InputDefaultDescription
currencyUSDThree-letter ISO currency code
languageen-USGoogle result language
includeRouteSummarytrueSave fare statistics for every search
maxConcurrency2Parallel searches, maximum 5
requestDelayMs500Delay between search starts
proxyConfigurationdisabledOptional Apify proxy settings for high-volume runs
debugModefalseLog transport and response diagnostics

For recurring bulk monitoring, an Apify residential proxy and conservative concurrency improve resilience.

Example output

{
"recordType": "flight",
"itineraryId": "8aa6a26692678c4b073c",
"rank": 1,
"price": 247,
"currency": "USD",
"pricePerTraveler": 247,
"priceTier": "lowest",
"belowTargetPrice": true,
"airlines": ["Delta"],
"airlineCode": "DL",
"origin": "JFK",
"destination": "LAX",
"departureDate": "2026-10-15",
"returnDate": null,
"departureAt": "2026-10-15T08:10:00",
"arrivalAt": "2026-10-15T11:28:00",
"durationMinutes": 378,
"stops": 0,
"isDirect": true,
"cabinClass": "economy",
"carbonGrams": 412000,
"googleFlightsUrl": "https://www.google.com/travel/flights?...",
"scrapedAt": "2026-09-07T10:00:00.000Z"
}

Fields depend on what Google exposes for a particular itinerary. Optional values may be null or empty.

Flight price monitoring and alerts

  1. Save a task with your routes, dates, cabin, and targetPrice.
  2. Schedule the task hourly, daily, or weekly in Apify Console.
  3. Filter dataset rows where recordType is flight and belowTargetPrice is true.
  4. Send matching rows to Slack, email, a webhook, Make, Zapier, or n8n.
  5. Use itineraryId to compare the same itinerary across runs. IDs no longer include the price as of September 14, 2026; establish a fresh baseline when migrating older snapshots. The same schedule and airlines retain the same ID when the fare changes.

Airfares and availability change frequently. A result represents the fare visible when the Actor ran; it is not a reservation or price guarantee.

Run with the Apify API

cURL

curl -X POST "https://api.apify.com/v2/acts/groupoject~google-flights-price-monitor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"origin": "JFK",
"destination": "LAX",
"departureDate": "2026-10-15",
"targetPrice": 250
}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('groupoject/google-flights-price-monitor').call({
origin: 'JFK',
destination: 'LAX',
departureDate: '2026-10-15',
maxResultsPerSearch: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('groupoject/google-flights-price-monitor').call(run_input={
'origin': 'JFK',
'destination': 'LHR',
'departureDate': '2026-11-10',
'returnDate': '2026-11-17',
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

Use cases

  • Flight fare comparison and travel-search applications
  • Airfare price trackers and price-drop alerts
  • Corporate travel route benchmarking
  • Travel agency and airline market intelligence
  • Flexible-date deal discovery
  • AI travel assistants and MCP workflows
  • Route, airline, duration, and emissions analysis
  • Newsletter or community flight-deal feeds

Reliability and responsible use

This Actor reads publicly accessible Google Flights search data. Google can change its response format, rate limits, available fields, or displayed fares without notice. The Actor retries transient failures and isolates individual route errors so one failed search does not discard successful routes.

Use the data responsibly and comply with applicable website terms, laws, and regulations. Do not treat scraped fare data as a confirmed booking. Travelers must verify current price, availability, baggage rules, visa requirements, and itinerary details with the airline or booking provider before purchasing.

FAQ

Does this require a Google Flights API key?

No. The Actor does not require a Google API key, Google account, or login.

Does it return live flight prices?

Each run performs a fresh search. Prices reflect what Google Flights returned at that moment and may change afterward.

Can it search round-trip flights?

Yes. Add returnDate. The itinerary may contain outbound and return segments depending on the response Google exposes.

Can it find the cheapest travel day?

Yes. Set departureDateEnd to scan every departure date in a range of up to 31 days, then compare route summaries or rank all flight rows by price.

Can I search multiple airports or routes?

Yes. Add up to 50 entries in additionalRoutes. Use airport IATA codes such as JFK, EWR, LGA, LHR, or LGW as separate routes when comparing nearby airports.

Every record includes the reproducible Google Flights search URL. The Actor does not book travel or guarantee a provider checkout URL.

Why did a search return no flights?

Possible causes include invalid or unsupported airport/date combinations, no matching flights, filters that are too strict, temporary throttling, or a changed Google response. Try fewer filters, lower concurrency, or an Apify residential proxy.

How should I schedule fare alerts?

Create an Apify task with a target price, schedule it, and connect successful runs to a webhook or automation platform. Select rows where belowTargetPrice is true.

Support

Open an issue from the Actor page with the route, travel dates, locale, and run ID. Do not include private account credentials or payment details.

Pricing and billing

Base result price checked September 14, 2026: $2.00 per 1,000 dataset items ($0.002 each). 100 result items cost $0.20 in result fees.

The separate Actor start event is $0.01 per billable start unit, with one unit per GB of configured memory and a minimum of one. It applies even when a run returns no results.

Both flight rows and optional route_summary rows are dataset items. A search returning 10 flights plus one summary creates 11 result events. Disable includeRouteSummary when only flight rows are needed.

The live Pricing tab is authoritative for current rates, tier discounts and any separately charged usage. Set a maximum run charge and inspect a small sample before scaling. Charges from an external provider, where used, are not controlled by the Apify run-charge limit.