Google Flights Scraper | Prices, Email & Business Leads
Pricing
from $0.75 / 1,000 google flights results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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
- Open the Input tab and choose one option under What do you want to collect?
- Enter a flight route, a Maps search, or an advertiser target.
- 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
| Workflow | Use it for | What you enter | Base event |
|---|---|---|---|
| ✈️ Google Flights | Fare research, route monitoring, schedules, airlines, airports | Origin, destination, and travel date | flight-result |
| 📍 Google Maps | Places, business discovery, local leads, ratings | Keyword + location or exact Maps URL | maps-result |
| 📣 Google Ads | Competitor creatives, advertisers, landing pages | Company, domain, advertiser ID, or Transparency Center URL | ads-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.
| Switch | Added data | Charged event |
|---|---|---|
| 📧 Find public emails | Public emails found on relevant official websites | email-enrichment |
| ☎️ Find phone numbers | Google business phones and public website phones | phone-enrichment |
| ⭐ Fetch review texts | Individual review text and rating details | review-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
- Turn on Fetch review texts in Optional paid enrichments.
- Set Maximum reviews per place / airport / advertiser (
maxReviews) immediately below it. - Start the run. Each result contains up to the selected number of public reviews; fewer may be available.
| Workflow | Limit applies to | Supported maximum |
|---|---|---|
| Google Maps | Each place | 100 reviews |
| Google Flights | Each origin/destination airport, not the flight or airline | 10 reviews per airport |
| Google Ads | Each confidently matched advertiser business on Google Maps | 5 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
| Input | What it controls |
|---|---|
flightSearches | One or more origin/destination/date searches |
cabin | Economy, premium economy, business, or first class |
flightSort | Best, cheapest, fastest, earliest departure, or earliest arrival |
maxStops | Nonstop only, up to one stop, or up to two stops |
adults, children, infantsInSeat, infantsOnLap | Passenger mix |
airlines | Optional two-letter carrier-code filter |
maxFlightResults | Maximum saved flight options across the run |
currency, countryCode, language | Price 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
| Input | What it controls |
|---|---|
mapSearches | Keyword and optional city, region, or country |
mapUrls | Exact Google Maps place URLs |
maxMapResults | Maximum places saved across every Maps input |
mapImages | Maximum public image references per place |
maxReviews | Maximum individual reviews per place when reviews are enabled (0–100) |
mapContactPages | Official website pages checked when contacts are enabled |
countryCode, language | Requested 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.
📣 Google Ads workflow
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
| Input | What it controls |
|---|---|
adTargets | Companies, domains, advertiser IDs, or Transparency Center URLs |
adRegion | Anywhere or one supported delivery region |
adFormat | All, image, text, or video creatives |
adDateFrom, adDateTo | Optional active/start-date range |
maxAdResults | Maximum creatives saved per target |
maxAdvertisersPerTarget | Maximum confident advertiser matches for company-name searches |
maxReviews | Maximum reviews per matched advertiser business when enabled (0–5) |
adContactPages | Official 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, orinvalid_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:
| Workflow | Complete unique rows | Full platform runtime | Peak memory |
|---|---|---|---|
| Google Flights | 50 | 13.789 s | 137.2 MB |
| Google Maps | 50 | 26.907 s | 116.5 MB |
| Google Ads | 50 | 46.434 s | 126.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.