A full-stack web app that scrapes Kayak.com to find cheap flights.
- Search real-time flight prices from Kayak
- Results sorted by price (cheapest first)
- Direct booking links to Kayak
Frontend: React, CSS Backend: Flask, Selenium, BeautifulSoup Deployment: Docker, Render.com
Flight-Price-Tracker/
├── backend/
│ ├── app.py
│ ├── requirements.txt
│ └── scrapers/
│ ├── kayak_scraper.py
│ ├── scraper_utils.py
│ └── multi_scraper.py
├── frontend/
│ ├── src/
│ │ ├── App.js
│ │ ├── App.css
│ │ └── index.js
│ ├── public/
│ └── package.json
├── Dockerfile
├── render.yaml
└── DEPLOYMENT.md
Backend:
cd backend
pip install -r requirements.txt
python app.pyFrontend:
cd frontend
npm install
npm startFrontend runs on localhost:3000, backend on localhost:5000.
- Push code to GitHub
- Create Web Service on Render (use Docker)
- Create Static Site for frontend
- Set
REACT_APP_API_URLto your backend URL
Full instructions in DEPLOYMENT.md.
- User enters flight info (origin, destination, date)
- Backend scrapes Kayak.com with Selenium
- Parses flight data (airline, price, times)
- Returns sorted results to frontend
- User clicks "Book Flight" to go to Kayak
Dockerfile: Packages Flask backend + Chrome for Selenium into a container render.yaml: Tells Render how to deploy frontend and backend
- Takes 15-20 seconds per search (Selenium is slow)
- May break if Kayak changes their HTML
- Free tier on Render sleeps after 15 min inactivity
For educational use. Respect Kayak's terms of service.
- email system that sends out daily alerts
- scraping more websites (Lots of Captcha so it is hard)
- can use paid apis to do as well
- include feature for round trips in addition to the one ways