serpapi

GitHub

通过 SerpAPI 抓取 Google Flights、Google Hotels 和 Travel Explore 数据,支持机票比价(含里程与现金对比)、酒店搜索及目的地发现。

plugins/travel-hacking-toolkit/skills/serpapi/SKILL.md borski/travel-hacking-toolkit

Trigger Scenarios

查询航班实时价格 比较里程兑换与现金支付价值 搜索酒店价格 探索旅行目的地

Install

npx skills add borski/travel-hacking-toolkit --skill serpapi -g -y
More Options

Non-standard path

npx skills add https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/serpapi -g -y

Use without installing

npx skills use borski/travel-hacking-toolkit@serpapi

指定 Agent (Claude Code)

npx skills add borski/travel-hacking-toolkit --skill serpapi -a claude-code -g -y

安装 repo 全部 skill

npx skills add borski/travel-hacking-toolkit --all -g -y

预览 repo 内 skill

npx skills add borski/travel-hacking-toolkit --list

SKILL.md

Frontmatter
{
    "name": "serpapi",
    "api_key": "SerpAPI",
    "license": "MIT",
    "summary": "Google Hotels search and destination discovery.",
    "category": "hotels",
    "description": "Google Flights cash prices, Google Hotels, and Google Travel Explore via SerpAPI. Use for award-vs-cash comparison, hotel search, and destination discovery."
}

SerpAPI Skill

Scrape Google Flights, Google Hotels, and Google Travel Explore via SerpAPI. Provides cash flight prices (for Chase/Amex portal comparison), hotel pricing, and destination discovery.

Source: serpapi.com — Free tier available, paid plans for higher volume.

Authentication

SERPAPI_API_KEY is set in .env. All requests use api_key query parameter.

API Base

https://serpapi.com/search

Google Flights (Cash Prices)

Search for flight prices and schedules. Essential for comparing: "Is 88,000 United miles better than paying $900 cash through the Chase portal?" (Chase portal pricing is now dynamic via Points Boost, ~1.5-2.0 cpp on select bookings; verify the actual quote.)

One-Way Search

curl -s "https://serpapi.com/search?engine=google_flights&departure_id=SFO&arrival_id=NRT&outbound_date=2026-08-10&type=2&adults=2&travel_class=1&currency=USD&stops=2&sort_by=2&api_key=$SERPAPI_API_KEY" | jq '{best: [.best_flights[]? | {price: .price, duration: .total_duration, stops: (.layovers | length), flights: [.flights[] | {from: .departure_airport.id, to: .arrival_airport.id, airline: .airline, flight: .flight_number, depart: .departure_airport.time, arrive: .arrival_airport.time}]}], price_insights: .price_insights}'

Parameters

Param Required Description
engine Yes google_flights
departure_id Yes Airport code(s), comma-separated: SFO,PDX
arrival_id Yes Airport code(s), comma-separated: NRT,HND
outbound_date Yes YYYY-MM-DD
return_date Round trip YYYY-MM-DD (required if type=1)
type No 1 = round trip (default), 2 = one way, 3 = multi-city
adults No Default 1
children No Default 0
travel_class No 1 = economy, 2 = premium economy, 3 = business, 4 = first
stops No 0 = any, 1 = nonstop, 2 = 1 stop or fewer, 3 = 2 stops or fewer
sort_by No 1 = top flights, 2 = price, 3 = departure, 4 = arrival, 5 = duration
include_airlines No IATA codes: SK,KL,UA or alliances: STAR_ALLIANCE,SKYTEAM,ONEWORLD
max_price No Maximum ticket price in USD
max_duration No Maximum flight duration in minutes
bags No Number of carry-on bags
deep_search No true for browser-identical results (slower)
currency No Default USD

Multi-City (Open Jaw)

Use type=3 with multi_city_json:

curl -s "https://serpapi.com/search?engine=google_flights&type=3&multi_city_json=%5B%7B%22departure_id%22%3A%22SFO%22%2C%22arrival_id%22%3A%22NRT%22%2C%22date%22%3A%222026-08-05%22%7D%2C%7B%22departure_id%22%3A%22ICN%22%2C%22arrival_id%22%3A%22SFO%22%2C%22date%22%3A%222026-08-26%22%7D%5D&adults=2&travel_class=1&currency=USD&api_key=$SERPAPI_API_KEY" | jq '.'

The JSON value for multi_city_json is URL-encoded. Decoded:

[{"departure_id":"SFO","arrival_id":"NRT","date":"2026-08-05"},{"departure_id":"ICN","arrival_id":"SFO","date":"2026-08-26"}]

Response Fields

Each flight in best_flights[] and other_flights[]:

Field Description
price Cash price in USD
total_duration Total minutes
flights[] Array of legs with airline, flight number, times, airplane, legroom
layovers[] Array with duration and airport for each connection
departure_token Token to get return flight options (round trip)
booking_token Token to get booking options

price_insights includes lowest_price, price_level (low/typical/high), and typical_price_range.

Portal Comparison Math

Chase Sapphire Reserve: dynamic Points Boost pricing, typically 1.5-2.0 cpp on select bookings (not a fixed floor). Verify actual portal price for the specific booking. If cash price is $900, portal cost = 60,000 UR points. If award price is 88,000 United miles, cash via portal is better value.

Amex: typically 1 cpp via portal (worse value, use transfers instead).

Capital One Venture X: 1 cpp via portal, but transfer partners can be better.

Google Hotels

Search hotels and vacation rentals with pricing from multiple OTAs.

curl -s "https://serpapi.com/search?engine=google_hotels&q=hotels+Tokyo+Japan&check_in_date=2026-08-10&check_out_date=2026-08-13&adults=2&currency=USD&sort_by=3&api_key=$SERPAPI_API_KEY" | jq '[.properties[]? | {name: .name, type: .type, rating: .overall_rating, reviews: .reviews, price: .rate_per_night.extracted_lowest, class: .extracted_hotel_class, amenities: .amenities}] | .[0:10]'

Parameters

Param Required Description
engine Yes google_hotels
q Yes Search query: hotels Tokyo Japan
check_in_date Yes YYYY-MM-DD
check_out_date Yes YYYY-MM-DD
adults No Default 2
children No Default 0
sort_by No 3 = lowest price, 8 = highest rating, 13 = most reviewed
min_price / max_price No Price range filter
hotel_class No 2,3,4,5 (comma-separated)
rating No 7 = 3.5+, 8 = 4.0+, 9 = 4.5+
vacation_rentals No Set to true for Airbnb-style results
property_token No Get details for a specific property

Google Travel Explore

Discover destinations and cheapest flights from an origin. Great for "where can I fly cheaply in August?"

curl -s "https://serpapi.com/search?engine=google_travel_explore&departure_id=SFO&outbound_date=2026-08-05&return_date=2026-08-26&adults=2&travel_class=1&currency=USD&api_key=$SERPAPI_API_KEY" | jq '[.destinations[]? | {name: .name, country: .country, airport: .destination_airport.code, price: .flight_price, duration: .flight_duration, stops: .number_of_stops, airline: .airline}] | .[0:15]'

Parameters

Param Required Description
engine Yes google_travel_explore
departure_id Yes Airport code or kgmid
arrival_id No Specific destination
arrival_area_id No Region kgmid (e.g., /m/02j9z for Europe)
outbound_date No YYYY-MM-DD
return_date No YYYY-MM-DD
month No 1-12 for flexible dates
travel_duration No 1 = weekend, 2 = 1 week, 3 = 2 weeks
interest No /g/11bc58l13w = Outdoors, /m/0b3yr = Beaches
include_airlines No Filter by airline or alliance
max_price No Maximum price
stops No Same as Google Flights

Workflow: Compare Award vs Cash

  1. Search cash prices on Google Flights via SerpAPI
  2. Estimate portal cost. Chase uses dynamic "Points Boost" pricing (~1.5-2.0cpp on select bookings, not a flat rate). Amex/Capital One ~1.0cpp. For rough math, run the actual portal quote against the cash price; do not assume a flat cpp on Chase.
  3. Compare with award price from Seats.aero
  4. Lower number wins (accounting for the value you place on each currency)

Notes

  • Cached results are free (1hr cache). Set no_cache=true to force fresh.
  • deep_search=true gives browser-identical results but is slower.
  • Results include price_insights with historical price data and trend.
  • Multi-city supports open jaw itineraries natively.
  • Hotels support vacation rentals mode for Airbnb-style results.

Version History

  • 8c12eda Current 2026-07-25 05:46

Same Skill Collection

plugins/travel-hacking-toolkit/skills/alliances/SKILL.md
plugins/travel-hacking-toolkit/skills/american-airlines/SKILL.md
plugins/travel-hacking-toolkit/skills/amex-travel/SKILL.md
plugins/travel-hacking-toolkit/skills/atlas-obscura/SKILL.md
plugins/travel-hacking-toolkit/skills/award-calendar/SKILL.md
plugins/travel-hacking-toolkit/skills/award-holds/SKILL.md
plugins/travel-hacking-toolkit/skills/award-sweet-spots/SKILL.md
plugins/travel-hacking-toolkit/skills/awardwallet/SKILL.md
plugins/travel-hacking-toolkit/skills/bilt/SKILL.md
plugins/travel-hacking-toolkit/skills/booking-guidance/SKILL.md
plugins/travel-hacking-toolkit/skills/cabin-codes/SKILL.md
plugins/travel-hacking-toolkit/skills/chase-travel/SKILL.md
plugins/travel-hacking-toolkit/skills/compare-flights/SKILL.md
plugins/travel-hacking-toolkit/skills/compare-hotels/SKILL.md
plugins/travel-hacking-toolkit/skills/deutsche-bahn/SKILL.md
plugins/travel-hacking-toolkit/skills/duffel/SKILL.md
plugins/travel-hacking-toolkit/skills/fallback-and-resilience/SKILL.md
plugins/travel-hacking-toolkit/skills/flight-search-strategy/SKILL.md
plugins/travel-hacking-toolkit/skills/getting-started/SKILL.md
plugins/travel-hacking-toolkit/skills/google-flights/SKILL.md
plugins/travel-hacking-toolkit/skills/hotel-chains/SKILL.md
plugins/travel-hacking-toolkit/skills/ignav/SKILL.md
plugins/travel-hacking-toolkit/skills/lessons-learned/SKILL.md
plugins/travel-hacking-toolkit/skills/partner-awards/SKILL.md
plugins/travel-hacking-toolkit/skills/plan-trip/SKILL.md
plugins/travel-hacking-toolkit/skills/points-valuations/SKILL.md
plugins/travel-hacking-toolkit/skills/premium-hotels/SKILL.md
plugins/travel-hacking-toolkit/skills/rapidapi/SKILL.md
plugins/travel-hacking-toolkit/skills/round-the-world/SKILL.md
plugins/travel-hacking-toolkit/skills/scandinavia-transit/SKILL.md
plugins/travel-hacking-toolkit/skills/seatmaps/SKILL.md
plugins/travel-hacking-toolkit/skills/seats-aero/SKILL.md
plugins/travel-hacking-toolkit/skills/southwest/SKILL.md
plugins/travel-hacking-toolkit/skills/status-match/SKILL.md
plugins/travel-hacking-toolkit/skills/stopovers/SKILL.md
plugins/travel-hacking-toolkit/skills/ticketsatwork/SKILL.md
plugins/travel-hacking-toolkit/skills/transfer-bonuses/SKILL.md
plugins/travel-hacking-toolkit/skills/transfer-partners/SKILL.md
plugins/travel-hacking-toolkit/skills/trip-calculator/SKILL.md
plugins/travel-hacking-toolkit/skills/trip-log/SKILL.md
plugins/travel-hacking-toolkit/skills/trip-planner/SKILL.md
plugins/travel-hacking-toolkit/skills/tripadvisor/SKILL.md
plugins/travel-hacking-toolkit/skills/vrbo/SKILL.md
plugins/travel-hacking-toolkit/skills/wheretocredit/SKILL.md
plugins/travel-hacking-toolkit/skills/wikipedia-airports/SKILL.md
plugins/travel-hacking-toolkit/skills/gardening/SKILL.md
plugins/travel-hacking-toolkit/skills/sutochno/SKILL.md

Metadata

Files
0
Version
ffd04a2
Hash
6f8e8f56
Indexed
2026-07-25 05:46

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-22 03:02
浙ICP备14020137号-1 $お客様$