Compare flight prices across different countries and save up to 30% on your tickets!
Features • Demo • Installation • Usage • Documentation • Contributing
A smart flight price monitoring system that simulates purchases from different countries using VPN, searches across 5 major travel sites, and automatically converts all prices to your local currency (BRL). Perfect for finding the best deals on international flights!
Airlines and travel sites often show different prices based on your location. By checking prices from multiple countries, you can find significantly cheaper tickets - sometimes saving hundreds of dollars on the same flight!
✈️ Animated UI - Beautiful plane animation during search- 🔒 VPN Integration - Automatic VPN switching per country (NordVPN support)
- 🌐 5 Travel Sites - Google Flights, Kayak, Skyscanner, Decolar, Momondo
- 💰 Auto Currency Conversion - Real-time exchange rates with 1-hour cache
- 📊 Smart Comparison - Automatic ranking and savings calculation
- 🎯 Real Web Scrapers - Playwright + BeautifulSoup for actual price data
- 🔄 Auto-restart - Systemd service with automatic recovery
- 📱 Responsive Design - Works on desktop, tablet, and mobile
- 📝 Detailed Logging - Full audit trail of all searches
- 🚀 Background Service - Runs 24/7 with systemd integration
┌────────────────────────────────────────────────┐
│ ✈️ Flight Monitor Multi-Country V3.0 │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│ │
│ ✈️ Animated 🔒 VPN 🌐 5 Sites │
│ Plane Per Country +Momondo! │
│ │
│ Origin: GRU → Destination: LIS │
│ Dates: 15/12 → 22/12 │
│ │
│ Countries: 🇧🇷 Brazil 🇺🇸 USA 🇵🇹 Portugal │
│ │
│ [🚀 SEARCH BEST PRICES] │
└────────────────────────────────────────────────┘
🏆 BEST PRICE FOUND: R$ 2,440.80
From Portugal 🇵🇹
💰 Save R$ 449.20 (15.5%)
┌────────────────────────────────────────────────┐
│ 🥇 🇵🇹 PORTUGAL │
│ EUR 452.00 → R$ 2,440.80 │
│ 🌐 Kayak | ✈️ GRU→LIS | 🔒 VPN: ON │
└────────────────────────────────────────────────┘
┌────────────────────────────────────────────────┐
│ 🥈 🇺🇸 USA (+3%) │
│ USD 505.00 → R$ 2,525.00 │
│ 🌐 Google Flights | ✈️ GRU→LIS │
└────────────────────────────────────────────────┘
- Python 3.8+
- Raspberry Pi / Linux server (or any Unix-like system)
- 512MB RAM minimum
- Internet connection
# 1. Clone repository
git clone https://github.com/yourusername/flight-price-monitor.git
cd flight-price-monitor
# 2. Install dependencies & configure service
chmod +x install_raspberry.sh setup_service.sh
sudo ./install_raspberry.sh
sudo ./setup_service.sh
# 3. Access application
# Open browser: http://localhost:8776That's it! The service now runs 24/7 and starts automatically on boot! 🎉
sudo apt-get update
sudo apt-get install -y \
libxml2-dev \
libxslt-dev \
python3-dev \
build-essential \
libssl-dev \
libffi-devpip3 install --break-system-packages \
Flask \
requests \
beautifulsoup4 \
html5lib \
python-dateutil \
PySockspip3 install --break-system-packages playwright
playwright install chromium# Manual run
python3 app_v3_COMPLETO.py
# Or install as service (recommended)
sudo ./setup_service.sh- Access
http://localhost:8776in your browser - Enter origin (e.g., GRU) and destination (e.g., LIS)
- Select dates
- Choose 3-5 countries to compare
- Click "SEARCH BEST PRICES"
- Wait 30-90 seconds for results
- Compare prices and save money! 💰
./manage_service.sh# Check status
sudo systemctl status flight-monitor
# Restart
sudo systemctl restart flight-monitor
# View logs
sudo journalctl -u flight-monitor -f
# Stop
sudo systemctl stop flight-monitor🇧🇷 Brazil | 🇺🇸 USA | 🇵🇹 Portugal | 🇪🇸 Spain | 🇬🇧 UK | 🇩🇪 Germany
🇫🇷 France | 🇨🇦 Canada | 🇦🇷 Argentina | 🇨🇱 Chile | 🇲🇽 Mexico
🇮🇹 Italy | 🇳🇱 Netherlands | 🇮🇪 Ireland | 🇨🇭 Switzerland | 🇯🇵 Japan
🇦🇺 Australia | 🇹🇷 Turkey
More can be easily added in COUNTRY_MAP!
For real VPN functionality:
- Install NordVPN via Docker
- Edit
app_v3_COMPLETO.pyline ~101 - Uncomment VPN connection code
# Uncomment these lines:
result = subprocess.run([
'docker', 'exec', 'nordvpn_flight',
'nordvpn', 'c', vpn_name
], capture_output=True, text=True, timeout=30)# Edit app
nano app_v3_COMPLETO.py
# Change line (end of file):
port = int(os.environ.get('FLASK_PORT', 8776)) # Change 8776 to desired portEdit COUNTRY_MAP in app_v3_COMPLETO.py:
'new_country': {
'name': 'Country Name',
'flag': '🏴',
'currency': 'USD',
'vpn': 'VPN_Server_Name'
}| Scenario | Time | Results |
|---|---|---|
| 1 country | ~15s | 5 prices |
| 3 countries | ~45s | 15 prices |
| 5 countries | ~75s | 25 prices |
Raspberry Pi 4 (4GB):
- ✅ Runs perfectly
- 💾 RAM usage: ~150MB
- ⚡ Fast response times
- Quick Start Guide - Get started in minutes
- Raspberry Pi Guide - Specific for Raspberry Pi
- Service Guide - Systemd service setup
- Technical Details - Architecture and improvements
- Troubleshooting - Common issues and solutions
┌─────────────────────────────────────────────────────┐
│ Web Interface │
│ (HTML + CSS + JS) │
└────────────────┬────────────────────────────────────┘
│
┌────────────────▼────────────────────────────────────┐
│ Flask API (Python) │
│ • Search endpoint │
│ • Results endpoint │
│ • Health check │
└────────────────┬────────────────────────────────────┘
│
┌────────┴────────┐
│ │
┌───────▼──────┐ ┌──────▼───────┐
│ VPN Manager │ │ Exchange │
│ (NordVPN) │ │ Rate API │
└───────┬──────┘ └──────────────┘
│
┌───────▼─────────────────────────────────────────────┐
│ Web Scrapers │
│ • Playwright (Google Flights) │
│ • BeautifulSoup (Kayak, Decolar, Momondo) │
└─────────────────────────────────────────────────────┘
- Backend: Flask (Python 3.8+)
- Web Scraping: Playwright, BeautifulSoup4
- VPN: NordVPN (Docker)
- Currency API: AwesomeAPI
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Service: systemd
- Platform: Linux (optimized for Raspberry Pi)
Contributions are welcome! Here's how you can help:
- Improve scraper success rate
- Add more travel sites
- Implement price history tracking
- Add email/Telegram notifications
- Create mobile app
- Add ML price prediction
- Support for hotels and car rentals
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Scrapers may fail due to anti-bot protections (fallback to simulated data)
- Playwright requires ~500MB disk space for browser
- VPN requires NordVPN subscription and Docker setup
- Rate limiting may occur with frequent searches
See Issues for known bugs and planned features.
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by the need to find better flight deals
- Built with love for travelers on a budget
- Thanks to all contributors and users!
- 📧 Email: your-email@example.com
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
If this project helped you save money on flights, consider giving it a star! ⭐
- Email notifications
- Price history graphs
- More countries (target: 30)
- Better error handling
- Mobile app (React Native)
- Price prediction ML model
- Hotel comparison
- API for third-party integration
Made with ❤️ by travelers, for travelers