Agent skill

google-flights

Search Google Flights for flight prices and schedules using browser automation. Use when user asks to search flights, find airfare, compare prices, check flight availability, or look up routes. Covers ALL airlines including Southwest (which no API can reach). Triggers include "search flights", "find flights", "how much is a flight", "flights from X to Y", "cheapest flight", "flight prices", "airfare", "flight schedule", "nonstop flights", "when should I fly".

Stars 387
Forks 22

Install this agent skill to your Project

npx add-skill https://github.com/borski/travel-hacking-toolkit/tree/main/skills/google-flights

SKILL.md

Google Flights Search

Search Google Flights via agent-browser to find flight prices, schedules, and availability.

Prerequisites

Requires agent-browser CLI:

bash
npm install -g agent-browser && agent-browser install

When to Use

  • User asks to search/find/compare flights or airfare
  • User wants to know flight prices between cities
  • User asks about flight schedules or availability
  • User wants to find the cheapest flight for specific dates
  • Southwest flights: Google Flights is one of the only sources for SW cash prices. No GDS or API returns Southwest.

When NOT to Use

  • Completing purchases: This skill finds flights and extracts booking links, but do not attempt to complete a purchase on a booking site.
  • Hotels/rental cars: Use other tools for non-flight travel searches.
  • Historical price data: Google Flights shows current prices, not historical.

Session Convention

  • Economy + Business comparison (default): --session econ and --session biz
  • Single cabin search: --session flights
  • Interactive fallback: --session flights

Fast Path: URL-Based Search (Preferred)

Construct a URL with a natural language ?q= parameter. Loads results directly. 3 commands total.

URL Template

https://www.google.com/travel/flights?q=Flights+from+{ORIGIN}+to+{DEST}+on+{DATE}[+returning+{DATE}][+one+way][+business+class][+N+passengers][&gl=XX]

Default: Economy + Business Comparison

Run two parallel sessions (economy and business) to show the price delta:

bash
# Launch both in parallel
agent-browser --session econ open "https://www.google.com/travel/flights?q=Flights+from+BKK+to+NRT+on+2026-03-20+returning+2026-03-27" &
agent-browser --session biz open "https://www.google.com/travel/flights?q=Flights+from+BKK+to+NRT+on+2026-03-20+returning+2026-03-27+business+class" &
wait

# Wait for both to load
agent-browser --session econ wait --load networkidle &
agent-browser --session biz wait --load networkidle &
wait

# Snapshot both
agent-browser --session econ snapshot -i
agent-browser --session biz snapshot -i

# Close biz (only needed for delta column); keep econ alive for booking links
agent-browser --session biz close

One Way

Add +one+way to the URL:

bash
agent-browser --session flights open "https://www.google.com/travel/flights?q=Flights+from+LAX+to+LHR+on+2026-04-15+one+way"
agent-browser --session flights wait --load networkidle
agent-browser --session flights snapshot -i

What Works via URL

Feature URL syntax Status
Round trip +returning+YYYY-MM-DD Works
One way +one+way Works
Business class +business+class Works
First class +first+class Works
N passengers +N+passengers Works
Adults + children +2+adults+1+child Works
IATA codes BKK, NRT, LAX Works
City names Bangkok, Tokyo Works
Dates as YYYY-MM-DD 2026-03-20 Works (best)
Market/locale &gl=TH (country code) Works
Premium economy +premium+economy Fails
Multi-city N/A Fails

Reading Results from Snapshot

Each flight appears as a link element with a full description:

link "From 20508 Thai baht round trip total. Nonstop flight with Air Japan.
     Leaves Suvarnabhumi Airport at 12:10 AM on Friday, March 20 and arrives
     at Narita International Airport at 8:15 AM on Friday, March 20.
     Total duration 6 hr 5 min. Select flight"

Parse into a markdown table (see Output Format below).

Market Selection Strategy

Different country markets return different prices for the same route. Always try:

  1. Departure country market first (&gl=US for flights from the US)
  2. Destination country market (&gl=JP for flights to Japan)
  3. Ask the user before trying additional markets

The &gl=XX parameter sets the market. Use ISO 3166-1 alpha-2 country codes.

Booking Options Handoff

After presenting results, offer booking links. When the user picks a flight:

bash
agent-browser --session econ click @eN    # Click the flight's link
agent-browser --session econ wait 3000
agent-browser --session econ snapshot -i  # Shows booking providers with prices and URLs

Output Format

Always use markdown tables for flight results.

Economy + Business comparison (default)

# Airline Stops Duration Depart Arrive Economy Business Delta
1 JAL Nonstop 5h 55m 8:05 AM 4:00 PM $523 $1,490 +185%
2 THAI Nonstop 5h 50m 10:30 PM 6:20 AM+1 $628 $1,675 +166%

Economy only

# Airline Stops Duration Depart Arrive Price
1 JAL Nonstop 5h 55m 8:05 AM 4:00 PM $523

Format rules

  • One row per flight
  • For connections, show stop cities (e.g., "1 stop via ICN")
  • No code blocks around the table
  • After the table, highlight cheapest, fastest, and best value

Interactive Workflow (Fallback)

Use for multi-city, premium economy, or when the URL path fails. See the google-flights skill in ajimix/travel-hacking-toolkit for the full interactive reference with step-by-step commands for form filling, date pickers, and multi-city searches.

Key Rules

Rule Why
Prefer URL fast path 3 commands vs 15+ interactive
wait --load networkidle Smarter than fixed wait 5000
Use fill not type for airports Clears existing text first
Wait 2s after typing airport codes Autocomplete needs API roundtrip
Always CLICK suggestions, never Enter Enter is unreliable for autocomplete
Re-snapshot after every interaction DOM changes invalidate refs
Keep results session alive for booking links Close biz session after capturing delta

Troubleshooting

  • Consent popups: Click "Accept all" or "Reject all" in the snapshot.
  • URL fast path didn't work: Fall back to interactive.
  • Bot detection / CAPTCHA: Inform user. Do NOT solve CAPTCHAs.

Expand your agent's capabilities with these related and highly-rated skills.

borski/travel-hacking-toolkit

chase-travel

387 22
Explore
borski/travel-hacking-toolkit

atlas-obscura

Search Atlas Obscura for weird, wonderful, and hidden gem places near any destination. Find the interesting stuff, not boring plaques. Search by coordinates, get full details with descriptions and images.

387 22
Explore
borski/travel-hacking-toolkit

rapidapi

Search Google Flights Live and Booking.com Live via RapidAPI. Use as a secondary source for flight cash prices and hotel availability/pricing. Triggers on "Booking.com", "booking prices", "RapidAPI", "secondary flight search", "hotel prices on Booking", or when SerpAPI results need a second opinion. Also useful for vacation rental pricing.

387 22
Explore
borski/travel-hacking-toolkit

premium-hotels

Search Amex Fine Hotels & Resorts (FHR), The Hotel Collection (THC), and Chase Sapphire Reserve Hotel Collection (Chase Edit) properties by city. Compare credits, benefits, and stacking opportunities across programs.

387 22
Explore
borski/travel-hacking-toolkit

ignav

Search for flights using the Ignav API. Fast REST API for flight prices and booking links. Use alongside other flight sources for price comparison. Always include in every flight search. Triggers on any flight-related search request.

387 22
Explore
borski/travel-hacking-toolkit

awardwallet

Query AwardWallet loyalty program balances, status, and history. Use when discussing points, miles, travel rewards, airline status, or trip planning on points. Triggers on "how many points", "miles balance", "elite status", "loyalty program", "AwardWallet", "what points do I have", "transfer partners", or any question about points/miles inventory.

387 22
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results