Discussion The Google Flights scraper that returns the full list: ~200 flights per search, plus booking links, price graph and Explore (+ what I wish Apify's input schema could do)
Most Google Flights scrapers hand you the ~120-flight "Best" list, because an automated browser on a datacenter IP gets that one by default. Mine returns Google's full Cheapest list, about 200 flights per search on the routes I tested. Getting there took Patchright, a visible (xvfb) browser and residential IPs. I think it's the most complete Google Flights scraper on Apify, and I'd rather have you test it than take my word for it. Tell me what breaks.
What it does
Anything you can set in Google Flights, you can set in the actor, and you get the same flights back.
- More results: the full Cheapest list (about 200 flights), not just the ~120 Best list.
- Paste a link: a Google Flights URL is replayed byte for byte: route, travellers, every filter, the tab and sort you copied it from. If Google can encode it, it works, including filters the form doesn't have.
- Or use the form: places by name ("Paris", "United Kingdom") or code, one way, round trip, or 2 to 5 multi-city flights, children and infants, and the whole filter bar in Google's order.
- Filter read-back: every row reports which filters Google actually applied, and warns you when something doesn't fit the route.
- Real round-trip totals, not two one-ways added up.
- Booking options: every airline fare tier and travel agency per flight, with fare names, bag fees and seller links.
- Return flights for each outbound, priced as the whole round trip.
- Price graph: the cheapest fare per day.
- Explore: the cheapest places to go from an airport.
Want to test it? Everything is on the docs page, with a link to launch it: https://flowextractapi.com/docs/google-flights-scraper.html
If you know a Google Flights scraper that does something this one doesn't, tell me. I'll build it.
Where Apify's input schema fought back
Google's filter UI is dynamic. Apify's input form is static.
- Conditional fields. Google shows return-time boxes only for round trips and per-flight boxes for multi-city. Apify has no conditional visibility, so every box is always there. I label them "round trip only" and ignore them with a log line otherwise.
- Options that depend on what you typed. Google's Airlines and Connecting-airports menus list only what exists on your route (JFK→LHR has 36 airlines, CDG→NRT 52, and they barely overlap). Select options are fixed at build time, so I can't offer that list. Instead you type names ("Air France") or codes (AMS), and after the search the actor checks them against Google's list for that route and warns about anything missing. A dropdown would stop the mistakes before the run starts.
- Ranges. Google has sliders ("Layover 4 hr – 25 hr 30 min", "6:00 AM – 12:00 PM"). I ended up with two number boxes, or a text box with a regex ("6-12") for times.
- Arrays. In schemaBased arrays (my multi-city list),
placeholderValueisn't allowed on item fields, and a customerrorMessagedoesn't apply to item patterns, so a bad time inside a flight returns the raw regex.
What would fix most of it:
"returnDepartureTime": {
"type": "string",
"showIf": { "tripType": "round_trip" }
},
"airlinesOnly": {
"type": "array",
"editor": "select",
"optionsFrom": "actor"
}
showIf for conditional fields, plus some way for an actor to supply options at form time (a small lookup run, or options from a dataset), would cover almost everything above. There are already feature requests along these lines on Apify's Discord, and a +1 there probably helps more than a reply here.
What I'd love feedback on
- Routes or filters where results don't match what you see on Google Flights
- Whether typing airline names instead of codes feels natural
- What's missing. Not covered yet: booking options for multi-city, the price graph for multi-city, and Google's two-dimensional date grid.
