Use fast-flights when you can validate the output
Choose fast-flights for prototypes and internal flight searches where you can check itineraries and handle scraper maintenance. Our sandbox established successful local command outcomes, not complete live search results. Before relying on it, compare representative routes with Google Flights and investigate empty or partial responses.
fast-flights is a strongly typed Google Flights scraper implemented in Python. Its README documents queries built from flight legs, passengers, cabin class and trip type. Version 3 uses JavaScript data, while its query encoding is based on Base64-encoded Protobuf. Those capabilities make it worth evaluating for Python search tools, but they do not establish that every returned fare remains available to book.
Our run recorded successful commands and 16 parser-summary passes
Our run on 2026-10-03 at commit 7c105db recorded exit code 0 for the install, build and test steps. The exact checkout was 7c105db4ed5f73fbadbf6b0e9f6bdfd71f352d97. Our sandbox recorded a 31-second install, a 9-second build step and a 25-second test step, with no recorded timeout. The installed dependencies occupied 65 MB across 39 packages.
Our harness records each command's success flag, exit code, elapsed time, timeout status and output tail. It stores parsed test counts separately. The attached stored parser summary records 16 passed, 0 failed, 0 skipped and 0 errors; it does not establish exhaustive unique coverage. The raw footer's separate subtest result is not added to that aggregate. Pytest's own duration also measures a different interval from the harness's test-step duration.
The build and test tails contain a SyntaxWarning about an invalid escape sequence in tests/test_parser.py. The warning did not cause a nonzero command exit. Pip-audit recorded 0 advisories, but scanned-package coverage is unknown because scannedPackages is absent. A zero advisory count is not proof of security.
The supplied record contains no route-by-route comparison with Google Flights, booking exercise or deployment check. No new execution was performed for this correction. The MrKeyoor testing methodology explains how command outcomes and parsed counts reach a review; its current description does not establish which methodology version this older run used.
Filters have units and a search-wide airline restriction
The README says Google applies the first leg's airline filter to the whole search. That matters for multi-leg queries: do not assume each leg's airline setting operates independently. Hours use local airport time, durations and layovers use minutes, and the maximum price uses the selected currency.
Documented per-leg filters include stops, airlines, departure and arrival hours, duration, connecting airports, layover limits and lower-emission results. Search-wide options include price, baggage, hiding separate and self-transfer itineraries, and excluding basic economy. The v3.1.0 release lists extended search parameters and a correction to declared tuple types for dates and times. These are documentation and release facts, not evidence that our sandbox validated every filter against live results.
Maintenance capacity limits the operating promise
The maintainer said they could not update the project every time Google changed something. That statement appears in issue #92 about project maintenance, opened on December 19, 2025. Budget time to reproduce and investigate broken searches rather than assume immediate repairs.
The v3.1.0 release lists contributions from two new contributors, so the maintenance warning does not establish abandonment. Those contributions also do not establish support response times or adoption. For your evaluation, retain the query context and check discrepancies before translating an empty response into a claim that no flights exist. These are recommended checks, not work completed by our sandbox.
Alternatives change the implementation or the data provider
Google Flights Scraper uses Playwright to scrape Google Flights. Its README also documents a CLI. Consider this alternative implementation when browser automation is a requirement. The supplied evidence does not establish better completeness or speed, and our fast-flights run did not test it.
The Amadeus Python SDK requires a developer account and application credentials. It provides access to Amadeus travel APIs, with documented flight-offer search, pricing and order endpoints. Consider it when your application needs that provider's API workflow. It is a different data source, not evidence of equivalent Google Flights inventory. Its default environment is test; production requires separate configuration.
SearchApi can complement fast-flights through its documented integration rather than replace the library's Python interface. The README presents it as a sponsored option and lists price insights and booking options in its result. That description does not establish booking completion or measured consistency. Bright Data and local Playwright are also documented options; our run did not compare these request paths.
Ratings assess a limited evidence scope
The five-point rubric is: 1 for substantial obstacles, 2 for material gaps, 3 for usable functionality with important constraints, 4 for strong evidence within the assessed scope, and 5 for comprehensive evidence with few material gaps. These are editorial judgments, not runtime benchmarks, adoption measurements or guarantees.
Setup ease is 4 because the recorded local commands succeeded, with live operation outside the assessment. Documentation is 4 for query examples, filter semantics and integration guidance. Community is 4 within the narrow scope of documented contribution activity and maintainer discussion; support speed and adoption remain unmeasured. Maturity is 3 because documented functionality and releases coexist with an explicit warning about keeping up with Google changes.

