CLI
Every command and subcommand, with the flags that matter.
booking <command> [arguments] [flags]
Run booking <command> --help for the full flag list on any command. This page
is the map.
Commands
The read commands split across the two reliability tiers. The destination estate is reliable and reads from anywhere. The interactive client is best-effort and can hit a bot wall (exit code 4) from a datacenter.
| Command | Tier | What it does |
|---|---|---|
search <destination> |
best-effort | Search properties by free-text destination. Emits Property cards |
property <ref> |
best-effort | Show one property by id or /hotel/ URL. Emits one Property |
reviews <ref> |
best-effort | List a property's reviews. Emits Review records |
destination <ref> |
reliable | Show one destination node. Emits one Destination |
destinations <ref> |
reliable | List a destination's child nodes. Emits Destination records |
properties <ref> |
reliable | List the properties on a destination landing page. Emits Property records |
suggest <prefix> |
best-effort | Autocomplete destinations and properties for a prefix. Emits Suggestion records |
sitemap <kind> |
reliable | Enumerate a kind's landing pages from Booking's sitemaps. Emits Seed records, the crawl root |
ref id <ref> |
offline | Classify any Booking.com URL, path, or id into its (kind, id). Emits a Ref |
ref url <kind> <id> |
offline | Build the canonical URL for a (kind, id). Emits a Ref |
serve [--addr] |
Serve the operations over HTTP as NDJSON | |
mcp |
Run as an MCP server over stdio | |
version |
Print the version and exit |
For ref url, kind is property, destination, search, or sitemap.
For sitemap, kind is one of country, region, city, district,
landmark, airport, or hotel. Booking publishes a per-kind sitemap index that
lists per-language shards, and each shard enumerates every landing page of that
kind. sitemap walks the index, reads the shards for --locale, and emits a
Seed per page. Each Seed carries the edge into the rest of the graph: a place seed
fills destination, a hotel seed fills property. Because a Seed needs no prior
id, a crawl can start from sitemap alone, fan into every destination and
property, and then follow the record links to reach the rest of the public site.
Reference forms
The commands accept these reference forms:
- Property id:
<cc>/<slug>, for examplegb/the-savoy, or a/hotel/<cc>/<slug>.htmlURL (an optional.<locale>may sit before.html). - Destination ref:
<kind>/<cc>[/<slug>], for examplecountry/us,region/us/florida,city/us/orlando,district/gb/soho-london, or the landing-page URL. - Search: the free-text term, or a
/searchresults.html?ss=<term>URL.
Global flags
These are shared by every operation, so they work the same on every command.
| Flag | Meaning |
|---|---|
-o, --output |
Output format: auto, table, markdown, list, json, jsonl, csv, tsv, url, raw |
--fields |
Comma-separated columns to keep |
--template |
Go text/template applied per record |
--no-header |
Omit the header row in table and csv |
-n, --limit |
Stop after N records (0 means no limit) |
--rate |
Minimum delay between requests |
--retries |
Retry attempts on rate limit or 5xx |
--timeout |
Per-request timeout |
--data-dir |
Override the data directory |
--no-cache |
Bypass on-disk caches |
--db |
Tee every record into a store (e.g. out.db, postgres://...) |
-v, --verbose |
Increase verbosity (repeatable) |
-q, --quiet |
Suppress progress output |
--color |
auto, always, or never |
Booking-specific flags
| Flag | Default | Meaning |
|---|---|---|
--user-agent |
booking-cli/0.1 (+https://github.com/tamnd/booking-cli) |
The User-Agent sent on every request |
--locale |
en-us |
The Booking.com locale |
--currency |
USD |
The currency for prices |
--checkin |
(none) | Check-in date, YYYY-MM-DD |
--checkout |
(none) | Check-out date, YYYY-MM-DD |
--adults |
2 |
Number of adults |
--children |
0 |
Number of children |
--rooms |
1 |
Number of rooms |
--cache-ttl |
24h0m0s |
How long a cached response stays fresh |
--refresh |
Fetch fresh and rewrite the cache, ignoring any hit |
A nightly price is filled only when both --checkin and --checkout are passed.
See output formats for what -o, --fields, and
--template produce, and configuration for
environment variables and defaults.