Google Flights Scraper | Prices, Email & Business Leads avatar

Google Flights Scraper | Prices, Email & Business Leads

Pricing

from $0.75 / 1,000 google flights results

Go to Apify Store
Google Flights Scraper | Prices, Email & Business Leads

Google Flights Scraper | Prices, Email & Business Leads

Scrape Google Flights prices, routes, schedules and airport data. Find business leads through Google Maps and explore Google Ads creatives. Optionally collect public business emails, phone numbers and reviews with a configurable review limit.

Pricing

from $0.75 / 1,000 google flights results

Rating

0.0

(0)

Developer

Kelopr_bk

Kelopr_bk

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

✈️ Google Flights Scraper — Maps & Ads Intelligence

Search flights, compare fares, discover local businesses, and inspect advertiser creatives from one Actor.

Google Flights is the main workflow. It returns structured flight options with prices, schedules, airlines, stops, aircraft, legroom, emissions, price-history signals, and airport intelligence. Google Maps and Google Ads are included as separate workflows for lead generation and competitor research.

No API key is required.

🚀 Start in three steps

  1. Open the Input tab and choose one option under What do you want to collect?
  2. Enter a flight route, a Maps search, or an advertiser target.
  3. Keep the optional email, phone, and review switches off unless you need those fields, then click Start.

Each completed result appears in the dataset immediately. When the run finishes, open Run summary for the saved count, duration, warnings, enrichment totals, and charge-limit status.

🎯 Three focused workflows

WorkflowUse it forWhat you enterBase event
✈️ Google FlightsFare research, route monitoring, schedules, airlines, airportsOrigin, destination, and travel dateflight-result
📍 Google MapsPlaces, business discovery, local leads, ratingsKeyword + location or exact Maps URLmaps-result
📣 Google AdsCompetitor creatives, advertisers, landing pagesCompany, domain, advertiser ID, or Transparency Center URLads-result

Only the selected workflow runs. A Flights run never starts Maps or Ads collection in the background.

➕ Add only the data you need

The optional enrichment switches are independent and off by default.

SwitchAdded dataCharged event
📧 Find public emailsPublic emails found on relevant official websitesemail-enrichment
☎️ Find phone numbersGoogle business phones and public website phonesphone-enrichment
Fetch review textsIndividual review text and rating detailsreview-enrichment

An enrichment event is charged only when the requested data is actually delivered in that result. Turning on a switch does not guarantee that the source publishes the field, and the Actor never invents a missing email, phone, or review.

Aggregate rating and review count remain part of base data. The review switch controls individual review-level data.

⭐ Choose how many reviews to collect

  1. Turn on Fetch review texts in Optional paid enrichments.
  2. Set Maximum reviews per place / airport / advertiser (maxReviews) immediately below it.
  3. Start the run. Each result contains up to the selected number of public reviews; fewer may be available.
WorkflowLimit applies toSupported maximum
Google MapsEach place100 reviews
Google FlightsEach origin/destination airport, not the flight or airline10 reviews per airport
Google AdsEach confidently matched advertiser business on Google Maps5 reviews

The default is 3. Set 0, or turn off Fetch review texts, to skip review collection and its enrichment charge. This does not change email, phone, or base-data settings. The review event is charged once per result containing delivered review text or ratings, not once per individual review; empty review results are not charged for this enrichment.

For example, collect one Maps place with up to two reviews, without email or phone enrichment:

{
"workflow": "maps",
"mapSearches": [{"query": "coffee shops", "location": "Boston"}],
"maxMapResults": 1,
"includeEmails": false,
"includePhones": false,
"includeReviews": true,
"maxReviews": 2
}

Existing API inputs using airportReviews, mapReviews, or adReviews still work. When both are provided, maxReviews takes priority. Leave it out of existing API requests to keep their original review limit.

✈️ Google Flights workflow

Quick example

{
"workflow": "flights",
"flightSearches": [
{
"origin": "JFK",
"destination": "LAX",
"departureDate": "2030-09-15"
}
],
"cabin": "economy",
"flightSort": "best",
"maxStops": 2,
"maxFlightResults": 50,
"currency": "USD",
"countryCode": "US",
"language": "en-US",
"includeEmails": false,
"includePhones": false,
"includeReviews": false
}

Add returnDate to request a round trip. Dates must use YYYY-MM-DD and cannot be in the past.

Main Flights settings

InputWhat it controls
flightSearchesOne or more origin/destination/date searches
cabinEconomy, premium economy, business, or first class
flightSortBest, cheapest, fastest, earliest departure, or earliest arrival
maxStopsNonstop only, up to one stop, or up to two stops
adults, children, infantsInSeat, infantsOnLapPassenger mix
airlinesOptional two-letter carrier-code filter
maxFlightResultsMaximum saved flight options across the run
currency, countryCode, languagePrice currency and Google market/language

Flight data

Each flight row can include:

  • price, currency, route price range, and observed price-history points;
  • origin, destination, local departure and arrival times;
  • airline names and codes, flight numbers, segments, and layovers;
  • total duration, stop count, aircraft, and legroom;
  • CO₂ values, baggage signals, and quality indicators;
  • carrier support and baggage-policy links;
  • booking token and reproducible Google Flights URL;
  • airport names, addresses, websites, categories, coordinates, ratings, and Maps URLs;
  • optional airport emails, Google phones, website phones, social profiles, and review texts.

Google can return a round-trip page at the outbound-selection stage. Use selectionStage and isCompleteItinerary to distinguish an outbound choice from a complete itinerary.

Abbreviated flight result

{
"recordType": "flight",
"tripType": "one-way",
"selectionStage": "complete",
"isCompleteItinerary": true,
"price": 179,
"currency": "USD",
"origin": "JFK",
"destination": "LAX",
"departureLocal": "2030-09-15T08:05:00",
"arrivalLocal": "2030-09-15T11:08:00",
"airlineNames": ["Example Airline"],
"flightNumbers": ["EA123"],
"totalDurationMinutes": 363,
"stopCount": 0,
"aircraft": ["Airbus A320"],
"co2Grams": 418000,
"googleFlightsUrl": "https://www.google.com/travel/flights?..."
}

📍 Google Maps workflow

Quick example

{
"workflow": "maps",
"mapSearches": [
{
"query": "coffee shops",
"location": "New York"
}
],
"maxMapResults": 50,
"mapImages": 5,
"countryCode": "US",
"language": "en-US",
"includeEmails": true,
"includePhones": true,
"includeReviews": false
}

For exact businesses, paste Google Maps place links into mapUrls. You can combine searches and URLs in one run; maxMapResults remains one hard limit across all inputs.

Main Maps settings

InputWhat it controls
mapSearchesKeyword and optional city, region, or country
mapUrlsExact Google Maps place URLs
maxMapResultsMaximum places saved across every Maps input
mapImagesMaximum public image references per place
maxReviewsMaximum individual reviews per place when reviews are enabled (0–100)
mapContactPagesOfficial website pages checked when contacts are enabled
countryCode, languageRequested Google market and result language

Maps data

Maps results can include:

  • place name, primary category, and category list;
  • full address and address components;
  • latitude, longitude, timezone, and stable Google identifiers;
  • rating, review count, website, opening status, and opening-hours data;
  • descriptions, images, amenities, highlights, local posts, and reservation links;
  • requested and source language/market fields;
  • optional public emails, Google phone, website phones, and individual reviews.

The output keeps requestedLanguage and requestedCountryCode separate from Google's source language. For example, a request using he can truthfully retain Google's legacy source code iw without making the selected language look incorrect.

Quick example

{
"workflow": "ads",
"adTargets": ["example.com"],
"adRegion": "anywhere",
"adFormat": "all",
"maxAdResults": 50,
"includeEmails": true,
"includePhones": true,
"includeReviews": true,
"maxReviews": 3
}

Domains are normally the easiest targets. Company names, advertiser identifiers, and Google Ads Transparency Center URLs are also accepted.

Main Ads settings

InputWhat it controls
adTargetsCompanies, domains, advertiser IDs, or Transparency Center URLs
adRegionAnywhere or one supported delivery region
adFormatAll, image, text, or video creatives
adDateFrom, adDateToOptional active/start-date range
maxAdResultsMaximum creatives saved per target
maxAdvertisersPerTargetMaximum confident advertiser matches for company-name searches
maxReviewsMaximum reviews per matched advertiser business when enabled (0–5)
adContactPagesOfficial website pages checked when contacts are enabled

Ads data

Ads rows can include:

  • advertiser name and ID, creative ID, format, and current status;
  • first and last shown dates;
  • headline, description, call to action, and creative text;
  • landing page, visible URL, preview image, preview scripts, and asset URLs;
  • global and selected-region impression ranges;
  • regional delivery and surface fields;
  • Google Ads Transparency Center URL;
  • optional confidently matched business address, rating, phones, public emails, and review texts.

Business/contact enrichment is attached only when the advertiser match is sufficiently strong. An ambiguous match is reported instead of assigning another company's contacts.

🌐 Languages, markets, and currencies

Flights uses language, market, and currency. Maps uses language and market. Ads uses its separate adRegion selector and preserves the language originally used in the creative.

30 tested interface languages:
en-US, en-GB, es, fr, de, it, pt-BR, pt-PT, nl, pl, cs, da, sv, no, fi, el, tr, ru, uk, ar, he, hi, id, ms, th, vi, ja, ko, zh-CN, zh-TW.

46 markets:
US, GB, CA, AU, NZ, DE, FR, ES, IT, PT, NL, BE, CH, AT, IE, SE, NO, DK, FI, PL, CZ, GR, TR, RU, UA, AE, SA, IL, IN, SG, MY, TH, ID, PH, VN, JP, KR, HK, TW, BR, MX, AR, CL, CO, PE, ZA.

38 Google Flights currencies:
USD, EUR, GBP, CAD, AUD, NZD, JPY, CNY, HKD, SGD, KRW, INR, AED, SAR, ILS, CHF, SEK, NOK, DKK, PLN, CZK, HUF, RON, BGN, TRY, ZAR, BRL, MXN, ARS, CLP, COP, PEN, THB, IDR, MYR, PHP, VND, TWD.

Google localizes its own labels where available. Business names, ad copy, and user-written reviews can remain in their original language. Currency selection applies to flight prices only; the Actor never performs an invented client-side conversion.

📦 Output and export

Open the Output tab after or during a run. It contains five views:

  • All results — every streamed dataset item;
  • Flight options — price and itinerary columns first;
  • Maps places — clean place and business columns;
  • Ads — creative preview and advertiser columns;
  • Contacts & reviews — optional enrichment fields in one place.

Use the dataset export menu to download JSON, CSV, Excel, XML, or RSS. For API access, use the dataset URL returned in OUTPUT.

The Run summary contains:

  • final status: SUCCEEDED, PARTIAL, NO_RESULTS, or invalid_input;
  • saved result count and duration;
  • source warnings with context;
  • requested enrichments, fields found, and charged event totals;
  • charge-limit status, dataset ID, and dataset API URL;
  • the measured 50-results/60-seconds flag for qualifying runs.

💳 Cost control

  • Base events are charged per delivered flight, place, or ad row.
  • Email, phone, and review events are separate and charged only when that data is delivered.
  • One result with several emails creates one email event, not one event per address.
  • Set a Maximum charge per run in Apify when you need a hard budget ceiling.
  • When the limit is reached, already delivered rows remain saved and pending work stops cleanly.

🛡️ Input mistakes do not crash the Actor

Input is validated before collection starts. Missing searches, blank targets, unsupported values, malformed dates, impossible passenger combinations, invalid URLs, and contradictory ranges end normally with an actionable invalid_input message in Run summary.

Invalid input does not create a chargeable dataset row.

⚡ Tested performance

The Actor defaults to 1 GB. A 50-result Apify benchmark with every email, phone, and review switch enabled produced:

WorkflowComplete unique rowsFull platform runtimePeak memory
Google Flights5013.789 s137.2 MB
Google Maps5026.907 s116.5 MB
Google Ads5046.434 s126.9 MB

Locale validation also completed 60/60 successful short Apify runs: all 30 listed languages were checked in both Flights and Maps. The latest release smoke test completed all three workflows successfully with optional enrichments enabled.

These measurements are observations rather than a fixed SLA. Live availability, source throttling, public website speed, and review availability can change runtime and field coverage.

🔧 Troubleshooting

No flights were found
Check the three-letter airport/metro codes and use a future travel date. Some routes are seasonal or unavailable on the selected day.

No Maps places were found
Make the query more specific, add a city or country, or paste an exact Google Maps place URL.

No ads were found
Try the advertiser's domain instead of a company name, select anywhere, remove narrow date/format filters, or retry later.

An email, phone, or review is missing
Confirm its switch was enabled. The field remains absent when the official source or public website does not publish it.

The run succeeded but returned no rows
Open Run summary. It distinguishes invalid input, a clean zero-result search, source warnings, and a charge limit without forcing the run into FAILED.

Responsible use

Use this Actor only for lawful collection of public data. Follow applicable terms, privacy requirements, and marketing regulations. Review extracted contact data before outreach.