cli-web-booking
Read-only Booking.com search: property search, property detail, destination autocomplete. AWS WAF protection is handled via stored cookies (auth login); autocomplete works without them.
Install: pip install "cli-web-booking[auth]", then playwright install chromium.
Commands
search find DESTINATION — search properties. Options: --checkin YYYY-MM-DD (default: tomorrow), --checkout YYYY-MM-DD (default: +3 days), --adults N (default 2), --rooms N (default 1), --children N, --sort [popularity|price|review_score|distance], --page N (25 results/page)
get SLUG — property detail by URL slug (format {country}/{name}.html, e.g. fr/lesenatparis.html). Options: --checkin, --checkout, --adults, --rooms
autocomplete QUERY — resolve a destination name to IDs. Options: --limit N (default 5). No auth needed
auth login / auth status / auth logout — manage WAF cookies
Examples
# Cheapest hotels in Paris for specific dates
cli-web-booking search find "Paris" --checkin 2026-07-01 --checkout 2026-07-04 --sort price --json
# Search → detail on top result
SLUG=$(cli-web-booking search find "Rome" --json | python3 -c "import json,sys; print(json.load(sys.stdin)['properties'][0]['slug'])")
cli-web-booking get "$SLUG" --json
# Resolve a destination to dest_id/dest_type (city, district, airport, region, landmark)
cli-web-booking autocomplete "Tokyo" --json
JSON output
Add --json for structured output. Envelopes:
search find: {"success": true, "destination", "checkin", "checkout", "count", "properties": [{title, slug, score, score_label, review_count, price, price_amount, address, distance, property_type}]}
get: {"success": true, "property": {name, description, score, review_count, full_address, country, postal_code, property_type, image_url, url, amenities}}
autocomplete: {"success": true, "query", "results": [{dest_id, dest_type, title, label}]}
- Errors:
{"error": true, "code": "...", "message": "..."}
Auth
Search and property detail need an aws-waf-token cookie. Run cli-web-booking auth login once — it opens a browser to solve the WAF challenge and saves cookies. Check with auth status, clear with auth logout. If search starts failing with WAF errors, re-run auth login.
Utilities
cli-web-booking doctor [--json] diagnoses local setup (install, auth, dependencies). cli-web-booking mcp-serve exposes the commands as MCP tools over stdio.
Agent tips
- Prices come back in the locale's currency;
address may be empty for some properties.
- Read-only: search, detail, and destination lookup only — no reservations.
1---2name: booking-cli3description: Searches Booking.com from the terminal via cli-web-booking — find hotels, apartments, and hostels by destination, dates, and guests; get property details by slug; resolve destination names to IDs. Use when the user asks about Booking.com, hotel search, accommodation prices, property ratings, or comparing places to stay. Prefer cli-web-booking over fetching the Booking.com website.4---56# cli-web-booking78Read-only Booking.com search: property search, property detail, destination autocomplete. AWS WAF protection is handled via stored cookies (`auth login`); autocomplete works without them.9Install: `pip install "cli-web-booking[auth]"`, then `playwright install chromium`.1011## Commands1213- `search find DESTINATION` — search properties. Options: `--checkin YYYY-MM-DD` (default: tomorrow), `--checkout YYYY-MM-DD` (default: +3 days), `--adults N` (default 2), `--rooms N` (default 1), `--children N`, `--sort [popularity|price|review_score|distance]`, `--page N` (25 results/page)14- `get SLUG` — property detail by URL slug (format `{country}/{name}.html`, e.g. `fr/lesenatparis.html`). Options: `--checkin`, `--checkout`, `--adults`, `--rooms`15- `autocomplete QUERY` — resolve a destination name to IDs. Options: `--limit N` (default 5). No auth needed16- `auth login` / `auth status` / `auth logout` — manage WAF cookies1718## Examples1920```bash21# Cheapest hotels in Paris for specific dates22cli-web-booking search find "Paris" --checkin 2026-07-01 --checkout 2026-07-04 --sort price --json2324# Search → detail on top result25SLUG=$(cli-web-booking search find "Rome" --json | python3 -c "import json,sys; print(json.load(sys.stdin)['properties'][0]['slug'])")26cli-web-booking get "$SLUG" --json2728# Resolve a destination to dest_id/dest_type (city, district, airport, region, landmark)29cli-web-booking autocomplete "Tokyo" --json30```3132## JSON output3334Add `--json` for structured output. Envelopes:35- `search find`: `{"success": true, "destination", "checkin", "checkout", "count", "properties": [{title, slug, score, score_label, review_count, price, price_amount, address, distance, property_type}]}`36- `get`: `{"success": true, "property": {name, description, score, review_count, full_address, country, postal_code, property_type, image_url, url, amenities}}`37- `autocomplete`: `{"success": true, "query", "results": [{dest_id, dest_type, title, label}]}`38- Errors: `{"error": true, "code": "...", "message": "..."}`3940## Auth4142Search and property detail need an `aws-waf-token` cookie. Run `cli-web-booking auth login` once — it opens a browser to solve the WAF challenge and saves cookies. Check with `auth status`, clear with `auth logout`. If search starts failing with WAF errors, re-run `auth login`.4344## Utilities4546`cli-web-booking doctor [--json]` diagnoses local setup (install, auth, dependencies). `cli-web-booking mcp-serve` exposes the commands as MCP tools over stdio.4748## Agent tips4950- Prices come back in the locale's currency; `address` may be empty for some properties.51- Read-only: search, detail, and destination lookup only — no reservations.