# Booking CLI

> 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.

- Skill: `itamarzand88/booking-cli` (Agent Skill)
- Install (CLI): `npx skillmds@latest add itamarzand88/booking-cli`
- Raw SKILL.md: https://api.skillmd.com/api/skills/itamarzand88/booking-cli/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ItamarZand88 (https://skillmd.com/u/itamarzand88)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/itamarzand88/booking-cli

---


# 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

```bash
# 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.

