Google Flights from your terminal
curl -fsSL https://raw.githubusercontent.com/dzmbs/crosswind/main/install.sh | bashSearch, compare, and pipe flight data. Positional args, smart dates, structured JSON. For humans and AI agents.
Positional Args
crosswind BEG JFK apr1. No flag soup. Origin, destination, date as natural positional arguments.
Smart Dates
apr1, 4/1, +7, tomorrow, 2026-04-01. Type dates the way you think about them.
Pipe-Aware Output
TTY = styled table. Piped = structured JSON envelope. --json to force. Pipe to jq, feed to agents.
Agent-First Design
Semantic exit codes, structured errors with hints, JSON envelopes with timing. Built for automation.
Filters and Cabin Class
Nonstop only, business class, multiple passengers. --max-stops 0 -c business -p 2.
Multi-Destination
Compare routes in one command. crosswind BEG JFK,LHR,CDG apr1. All results merged and sorted.
CLI
Search, Filter, Pipe
# Basic one-way search
crosswind BEG JFK apr1
# Round-trip, business class
crosswind BEG JFK apr1 -r apr16 -c business
# Nonstop only, JSON output
crosswind LAX JFK tomorrow --max-stops 0 --json
# Compare multiple destinations
crosswind BEG JFK,LHR,CDG apr1 | jq '.data.flights[:3]'
# Open in browser instead
crosswind BEG JFK apr1 --openUnder the Hood
How It Works
Crosswind encodes your search as a Protocol Buffer, fetches the Google Flights page with Chrome TLS fingerprinting, and extracts structured flight data from the embedded JSON payload. No API key needed. No headless browser. Single static binary.
v0.2.0, early release. Google may change their page structure at any time. Limitations.