# Changelog of Google Flights Scraper — Fares, Routes, Booking Links (`khadinakbar/google-flights-scraper`) Actor

- **URL**: https://apify.com/khadinakbar/google-flights-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/khadinakbar/google-flights-scraper.md

### 0.7 (2026-05-21) — SerpAPI backend. Browser stack stripped.

- Pivot to SerpAPI Google Flights endpoint (the Camoufox direct-scrape path was unrecoverable; Google's flight-search XHR is fingerprint-blocked regardless of proxy).
- Pure HTTP actor: Node 24 + apify SDK only. No Playwright, no Camoufox, no proxy required.
- Memory dropped 2 GB → 512 MB.
- PPE repriced for upstream cost: $0.00005 start + $0.04 per search + $0.003 per flight = ~81% margin at average 20 itineraries/run after Apify 20% commission.
- Brutal-tested 5 routes: LAX-JFK, SFO-NRT, LHR-CDG, HND-LAX, CDG-DXB.

### 0.6 (2026-05-17) — WebShare rotating-residential integration. (DEAD path)

- Added optional WebShare proxy provider as alternative to Apify residential (Apify proxy was triggering Google's silent XHR block).
- New `proxyMode` input: `webshare` (default when WEBSHARE\_USERNAME env var present) | `apify`.
- Credentials referenced via `@webshare_username` / `@webshare_password` Apify secrets — never in code.
- Brutal-tested across 5 diverse routes (LAX-JFK, SFO-NRT, LHR-JFK, HND-LAX, CDG-DXB) to verify the proxy actually unblocks the `/batchexecute` XHR.

### 0.5 (2026-05-16) — Beta. Framework ready; flight-search XHR blocked.

- Direct navigation to `/travel/flights/search?tfs=...` with corrected protobuf (field 1 = 28 — Google's magic constant).
- All anti-bot layers bypassed: Camoufox stealth, consent cookie injection, full form-fill confirmed working via screenshots.
- KNOWN WALL: Google silently blocks the `/batchexecute` flight-data XHR on proxied Camoufox sessions. Page renders, URL transitions, search button clicks — but the actual flight data never arrives.
- Next steps in CLAUDE.md: try alternative residential proxy providers (Bright Data, IPRoyal, mobile), or wrap a paid API (SerpAPI), or reverse-engineer batchexecute directly.

### 0.4 (2026-05-16)

- Form-fill flow: navigate to Flights landing page, type origin/destination/dates into UI, click Search.
- Search button click successful (selector: `button[aria-label="Search"]`).
- URL transitions to `/search?` correctly. Results never load though.

### 0.3 (2026-05-16)

- Camoufox + consent cookie injection. Bypasses reCAPTCHA and GDPR interstitial.

### 0.2 (2026-05-16)

- PlaywrightCrawler pivot — Google Flights is a fully client-side SPA.

### 0.1 (2026-05-16)

- Initial HTTP-only release (deprecated).
- PPE: .00005/start + .005/flight-result.
