{"name":"fli: Search Google Flights from Python, CLI, and MCP","description":"Fli is a Python library, CLI, and MCP server for searching Google Flights through its public search page. It provides flight and date searches with filters, plus a TypeScript port for JavaScript users.","github":"https://github.com/punitarani/fli","url":"https://osrepos.com/repo/punitarani-fli","source":"osrepos.com","sourceDescription":"This repository profile is provided by osrepos.com, an open source repository discovery platform.","repositoryProfile":"https://osrepos.com/repo/punitarani-fli","generatedFor":"open source discovery and AI-assisted research","markdown":"https://osrepos.com/repo/punitarani-fli.md","json":"https://osrepos.com/repo/punitarani-fli.json","topics":["python","library","cli","mcp-server","google-flights","flight-search","flight-booking"],"keywords":["python","library","cli","mcp-server","google-flights","flight-search","flight-booking"],"stars":null,"summary":"Fli is a Python library, CLI, and MCP server for searching Google Flights through its public search page. It provides flight and date searches with filters, plus a TypeScript port for JavaScript users.","content":"## Overview\n\nFli is a Python library, CLI, and MCP server for programmatic access to Google Flights. Rather than scraping rendered HTML or automating a browser, it sends a request to Google Flights' public search page and extracts results from the page's inline data. A TypeScript port, `fli-js`, provides a parallel API.\n\nIt is aimed at developers and AI assistant users who want flight search in scripts, terminal workflows, or MCP-compatible clients. It supports searches for specific travel dates and flexible date ranges, with filters for cabin, stops, airlines, alliances, and passengers.\n\n## Key Features\n\n- Search one-way and round-trip flights, and find prices across a flexible date range.\n- Filter results by cabin class, stops, departure window, airline, alliance, and layover bounds.\n- Set passenger counts, currency, language, and country for searches.\n- Use the `fli` CLI, Python API, or MCP server over STDIO or streamable HTTP.\n- Use `fli-js`, the TypeScript port, for a corresponding JavaScript or TypeScript API.\n- Apply result sorting, retries, rate limiting, input validation, and error handling.\n\n## Use Cases\n\n- A developer can add Google Flights results to a Python script or application without writing page parsing code.\n- A traveler can compare routes and dates from the terminal, including airline, stop, and cabin preferences.\n- An MCP client user can request flight searches conversationally through an assistant such as Claude Desktop.\n- A team using TypeScript can build flight-search workflows with the `fli-js` package and the same search-page transport.\n\n## Our Take\n\nFli is an actively maintained, MIT-licensed option for integrating Google Flights searches, with a clear trade-off: its page-based transport has meaningful limits compared with Google's gated results APIs.\n\n**Good fit if:**\n- You want Google Flights searches in Python, a CLI, an MCP client, or TypeScript.\n- Your workflow can work within the available page results and supported filters.\n- You value a project with recent commits and releases, and contributions from multiple people rather than dependence on one contributor.\n\n**Look elsewhere if:**\n- You need multi-city results from a single search or booking-option results from Google.\n- Your application depends on emissions, bag, or basic-economy-exclusion filters, which the current transport cannot support.\n- Your search requires reliably complete results for children or infants, or a full calendar grid for date ranges.\n\n## Project Health\n\n| Signal | Value |\n|---|---|\n| Status | **Active**: regular commits and releases |\n| Last commit | 2026-09-20 (1 month ago) |\n| Commits, last 90 days | 35 |\n| Releases, last 12 months | 13 (latest fli-js-v0.0.4, 2026-05-24) |\n| Contributors | 29 (top contributor: 74% of commits) |\n| Issues closed, last 90 days | 22 (typically closed in 70 days) |\n| Pull requests merged, last 90 days | 35 (typically merged in 0 days) |\n| Project age | 22 months |\n\nChecked on 2026-10-24 with the GitHub API.\n\n## Project Facts\n\n- Language: Python\n- License: MIT\n- Stars: 3.3k\n- Forks: 405\n- Topics: api, flights-api, google-flights, google-flights-api, mcp, mcp-server\n- Website: https://deepwiki.com/punitarani/fli\n- Archived: no\n\n## What You Need\n\nDetected in the repository:\n\n- Python >=3.10 (from pyproject.toml)\n- A Dockerfile, so it can run in a container; a Compose file sets up the related services\n- A test suite and automated checks on GitHub Actions\n\n## Getting Started\n\nInstall the Python package and try the CLI:\n\n```bash\npipx install flights\nfli --help\n```\n\nFor MCP use, install the same package and run `fli-mcp`. See the [README](https://github.com/punitarani/fli#readme) for setup, options, and API examples.\n\n## License in Plain Words\n\n**MIT** (permissive).\n\n- Commercial use: yes\n- Modify and redistribute: yes\n- You must keep: the copyright and license notice\n- Share your changes: no\n\nA summary, not legal advice: the LICENSE file is what applies.\n\n## Considerations\n\n- The project is active, with regular commits and releases, and has contributions from 29 people; contributor activity is not concentrated on one person. Recent issue closures and merged pull requests indicate ongoing maintenance, though the reported median issue close time is about ten weeks.\n- The transport reads results from Google's public search page. Multi-city searches are unsupported through the library search API, booking-option lookup is unavailable, and three filters are dropped with a warning.\n- A page search returns fewer itineraries than the former RPC-based approach. Results can be especially sparse for children and infants, and date-range searches fetch each date individually, with a maximum range of 93 dates.\n- Google may return a page without result data or present a consent interstitial in some regions. The README documents retries and the `FLI_SOCS_COOKIE` setting; corporate TLS-intercepting proxies may require a configured CA bundle.\n- The Python package requires Python 3.10 or later. The repository also documents Docker-based development and CI, but end users can start with the package installation above.","metrics":{"detailViews":9,"githubClicks":0},"dates":{"published":null,"modified":"2026-10-24T14:30:21.000Z"}}