pp-booking-com
Every Booking.com workflow, plus offline price history, wishlist drop alerts, and multi-leg planning no other... Trigger phrases: `search booking.com for hotels in`, `what's the cheapest week to stay in`, `track price drops on my booking.com wishlist`, `compare these two hotels`, `are any of my book
By mvanhorn · 408 installs
npx skills add mvanhorn/printing-press-library --skill pp-booking-com
Source repository · Upstream listing
<! GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/travel/booking com/SKILL.md,
regenerated post merge by tools/generate skills/. Hand edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli skills/".
Booking.com — Printing Press CLI
Prerequisites: Install the CLI
This skill drives the booking com pp cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
1. Install via the Printing Press installer. It defaults binaries to $HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:
2. Verify: booking com pp cli version
3. Ensure the reported install directory is on $PATH for the agent/runtime that will invoke this skill.
If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer):
If version reports "command not found" after install, the runtime cannot see the binary directory on $PATH . Do not proceed with skill commands until verification succeeds.
When to Use This CLI
Use this CLI when an agent needs to search Booking.com, drill into hotel detail, compare candidates, or work with a user's logged in Booking account (trips, wishlist, Genius rewards). It is the right choice for cheapest date sweeps, price drop tracking, and multi leg itinerary planning — work that compounds across calls and benefits from local SQLite history. Reach for it instead of generic web scraping tools because it owns Booking's AWS WAF clearance via Surf+Chrome TLS, the CSRF/cookie composition for /dml/graphql, and the Chrome cookie import for authenticated surfaces.
Unique Capabilities
These capabilities aren't available in any other tool for this API.
Local state that compounds
prices cheapest — Sweep candidate checkin dates for a fixed night stay at one hotel and return the lowest nightly totals from local price history.
Reach for this before recommending dates to a user. It removes Booking's manual click through every date dance and exposes the seasonal price floor for the property in one call.
prices cheapest destination — Sweep candidate checkins across a destination's top results and return the cheapest (property, date) pairs under a max price ceiling.
Use when an agent has a flexible date traveler in a flexible property mood. Returns a budget constrained Pareto frontier instead of one ranked list per date.
watch run — Track a set of (hotel, checkin, checkout) tuples and surface only the ones whose latest price dropped a configurable percentage below their trailing median.
Schedule this nightly. Returns empty most days, returns gold when a watched property dropped enough to act on.
destinations price band — Aggregates price history for a destination's synced properties and emits per month median, min, and max nightly rate plus contributing property count.
Use when planning a flexible month trip. Returns the cheapest month + 'avoid this month' signal without manual searching.
search — After sync populates the local property store, FTS5 ranks free text queries over name + description + amenity strings with BM25, no network call.
After repeated sync calls have built a corpus, this lets an agent answer cross destination property questions without re hitting the network.
Agent native plumbing
wishlist drops — Joins the authenticated wishlist with the local price history and surfaces saved properties whose latest observed price is N% below the previous observation.
Use Sunday morning. Returns the small set of wishlist items worth booking now, instead of forcing the user to eyeball 30 40 saved properties.
compare — Fetches detail + reviews for two hotels in parallel and emits a paired struct (price, score, amenity Δ, distance, free cancellation, breakfast, recent review counts).
When an agent has narrowed to two finalists, reach for this instead of re rendering both detail pages and asking the user to read both.
trips deadlines — Walks authenticated upcoming trips, extracts the free cancellation until deadline from each trip detail, and returns trips whose deadline is within a configurable window.
Booking penalizes missed cancellation deadlines. Run this each Monday morning to catch deadlines before they expire.
trips export — Walks authenticated past trip list, opens each trip detail, and emits a deterministic CSV (confirmation, property, checkin, checkout, currency, total, address) ready to paste into expense systems.
Use Monday morning for last week's reimbursements. One call replaces clicking through every past trip.
reviews stats — Local SQL group by over synced reviews; counts and median score per score band, language, and traveler type bucket. Mechanical, no NLP.
Reach for this when an agent is matching property fit to a traveler type. Returns a bucket distribution instead of forcing the agent to read 1000 reviews.
Reachability mitigation
trip plan — Given multiple destination + date legs and a total budget, picks the cheapest property per leg whose summed nightly totals fit the budget, with a bounded combinatorial fallback when greedy busts.
For multi city European itineraries the agent can answer the budget constrained question in one round trip instead of asking the user to iterate per leg.
genius impact — Runs an absorbed search twice — once with the authenticated cookie (Genius rates applied) and once anonymously — and diffs price per property to surface the Genius savings delta.
Use when an agent helps a user evaluate whether a Booking Genius tier is worth chasing. Reports the actual unlocked discount on a real search.
deals mobile rates — Re runs an absorbed search with a Chrome mobile UA on top of the desktop call and diffs to surface mobile only discounts Booking hides from desktop users.
When an agent is hunting savings, reach for this before recommending the desktop quoted rate. Mobile rates can be 5 15 percent lower on the same hotel + dates.
HTTP Transport
This CLI uses Chrome compatible HTTP transport for browser facing endpoints. It does not require a resident browser process for normal API calls.
Discovery Signals
This CLI was generated with browser observed traffic context.
Capture coverage: 1 API entries from 14 total network entries
Protocols: ssr html (95% confidence), rest graphql (70% confidence)
Auth signals: none; cookie — cookies: aws waf token, bkng, bkng sso session, cgumid, bkng prue
Generation hints: requires browser http, requires browser cookie for auth endpoints, has ssr html primary surface, has csrf token for graphql, supports offset pagination
Candidate command ideas: search — SSR /searchresults.html returns 25 property cards parseable from HTML.; hotel get — SSR /hotel/<country /<slug .html returns full hotel JSON LD.; reviews list — /reviewlist.html exists as a separate paginated surface.; destinations autocomplete — Autocomplete dropdown on homepage fires destination resolver.; trips list — secure.booking.com/mytrips.html loaded with cookie auth and rendered user specific UI.; wishlist get — www.booking.com/mywishlist.html?wl id=<id loaded with cookie auth.; rewards get — secure.booking.com/rewards and wallet.html linked from authenticated header.; profile get — secure.booking.com/mysettings.html linked from authenticated header (showed 'Matt Van Horn, Genius Level 3').
Caveats: ssr dominant: All observed user visible pages are server rendered. Initial searches, hotel detail, trips, and wishlist deliver their data in HTML rather than XHR/GraphQL. The /dml/graphql endpoint exists but was not exercised during this capture; it is documented for future map markers and review pagination work.; empty authenticated state: User's trips and wishlist were empty during capture, so response shape for populated cards was not directly observed. Schema fields are inferred from Booking.com documentation, community wrappers, and the empty state markup.
Command Reference
account — Authenticated account/profile page at secure.booking.com/mysettings.html . Returns display name, Genius tier, account email (redacted), language, currency, and country.
booking com pp cli account — Read the authenticated user's display name, Genius tier (e.g. Level 3), preferred language, and preferred currency.
attractions — Attractions, tours, and experiences at www.booking.com/attractions/searchresults/<country /<city .html . Returns activity cards with price, duration, rating, and product slug for detail lookups.
booking com pp cli attractions get — Fetch full attraction detail (description, inclusions, duration options, meeting point, cancellation policy, reviews...
booking com pp cli attractions search — Search attractions in a city. Returns SSR extracted activity cards with price, rating, and product slug. Use...
cars — Car rental landing at www.booking.com/cars/index.html . Booking.com cars is powered by Rentalcars and uses a self posting form for search; deep link results URLs are not supported. This resource exposes the top deals visible on the landing page and supplier landing pages (Hertz, Sixt, Avis, etc.) so agents can recommend pickup locations and known suppliers without claiming results we can't deliver.
booking com pp cli cars — Read the car rental landing page: featured deals, supported suppliers, and supported city level pickup locations....
destinations — Booking.com destination lookup. Resolves a free text destination string (city, region, neighborhood, landmark) to a stable dest id and dest type that other commands can use.
booking com pp cli destinations — Trigger Booking.com's destination resolver by posting a search with ss=<text and parsing the destination context...
flights — Flights search at flights.booking.com/flights/<ORIG <DEST / . Booking's flight search is powered by Etraveli but exposes a clean SSR URL pattern. Returns flight cards with carrier, departure/arrival times, layovers, duration, and price.
booking com pp cli flights <origin <destination — Search flights between two IATA airport codes. Returns SSR extracted flight cards with carrier, times, layovers, and...
hotels — Hotel/property search and detail. hotels list parses the SSR /searchresults.html page (25 cards per page via offset). hotels get parses individual /hotel/<country /<slug .html detail pages including JSON LD Hotel schema.
booking com pp cli hotels get — Fetch full hotel detail for a given country code + property slug. Parses Booking.com's JSON LD Hotel schema for...
booking com pp cli hotels list — Search Booking.com hotels by destination + dates + guests + filters. Returns SSR extracted property cards. Combine...
map — Map view hotel pins for a search result set. Uses Booking.com's internal GraphQL endpoint ( /dml/graphql , operation MapMarkersDesktop ) with the CSRF token extracted from the search results HTML.
booking com pp cli map — Fetch map marker data for a destination + date range: per property latitude, longitude, summary price, and rating....
reviews — Hotel reviews. Booking.com renders the first review batch in the hotel detail HTML; further pages are at /reviewlist.html keyed by hotel slug.
booking com pp cli reviews — Paginated reviews for a hotel. Returns review text, score, traveler type, language, stay date, and reviewer country....
rewards — Authenticated Genius loyalty + Rewards Wallet status at secure.booking.com/rewards and wallet.html . Returns Genius level (1 3), unlocked discount tiers, available credit, and pending vouchers.
booking com pp cli rewards — Get the authenticated user's Genius le