Airbnb + Booking.com. Total-price ranking. One MCP tool call.
Agent-native stay search for Claude Desktop, Cursor, Windsurf, and any MCP-compatible agent. Search runs server-side at letsbooking.bitscorp.co — no local browsers or scrapers.
# From GitHub
npx -y github:letsbooking/letsbooking-mcp
# Or clone & run
git clone https://github.com/letsbooking/letsbooking-mcp.git
cd letsbooking-mcp && npm install && npm run build
LETSBOOKING_API_KEY=lb_live_… node dist/index.js| Variable | Required | Description |
|---|---|---|
LETSBOOKING_API_KEY |
For live search | Bearer / X-API-Key (lb_live_…) |
LETSBOOKING_BASE_URL |
No | Default https://letsbooking.bitscorp.co |
LETSBOOKING_POLL_TIMEOUT_MS |
No | Default 180000 |
LETSBOOKING_POLL_INTERVAL_MS |
No | Default 2000 |
Request a key at letsbooking.bitscorp.co or with the request_access tool. Without a key, public_search and health still work.
~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"letsbooking": {
"command": "npx",
"args": ["-y", "github:letsbooking/letsbooking-mcp"],
"env": {
"LETSBOOKING_API_KEY": "lb_live_…"
}
}
}
}.cursor/mcp.json:
{
"mcpServers": {
"letsbooking": {
"command": "npx",
"args": ["-y", "github:letsbooking/letsbooking-mcp"],
"env": {
"LETSBOOKING_API_KEY": "lb_live_…"
}
}
}
}~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"letsbooking": {
"command": "npx",
"args": ["-y", "github:letsbooking/letsbooking-mcp"],
"env": {
"LETSBOOKING_API_KEY": "lb_live_…"
}
}
}
}{
"mcpServers": {
"letsbooking": {
"command": "node",
"args": ["/absolute/path/to/letsbooking-mcp/dist/index.js"],
"env": {
"LETSBOOKING_API_KEY": "lb_live_…"
}
}
}
}| Tool | Auth | Description |
|---|---|---|
search_stays |
API key | Search Airbnb + Booking; polls until complete |
start_search |
API key | Start search, return search_id immediately |
get_results |
API key* | One-shot poll for a search_id |
wait_for_results |
API key* | Poll until completed / error / timeout |
public_search |
None | Sandbox/demo search (no key) |
list_sources |
API key | Available sources |
health |
None | Service health |
request_access |
None | Submit API key request |
load_resources |
None | Load stay-search guide |
* Set public: true to use unauthenticated public result endpoints.
search_stays({ query: "Barcelona apartment 2 guests Aug 10-14 2026" })
// or
search_stays({
location: "Lisbon",
check_in: "2026-09-01",
check_out: "2026-09-05",
guests: 2,
sources: ["airbnb", "booking"],
currency: "EUR"
})
Offers are ranked by total stay price (nightly + fees + taxes), not nightly alone.
letsbooking://guide— full workflow guide (also viaload_resources)
┌────────────────────────────────────────────────────────────┐
│ MCP Client (Claude / Cursor / Windsurf / …) │
│ ↕ stdio JSON-RPC │
├────────────────────────────────────────────────────────────┤
│ letsbooking-mcp (this package, on YOUR machine) │
│ └─→ HTTPS → letsbooking.bitscorp.co │
│ POST /api/search → poll /api/results/{id} │
│ Airbnb + Booking.com via server-side Playwright │
└────────────────────────────────────────────────────────────┘
No local browser automation. The MCP server is a thin stdio bridge to the hosted API.
npm install
npm run build
npm testNode.js 18+ required (native fetch).
- Python SDK: letsbooking/letsbooking-python
- JavaScript SDK: letsbooking/letsbooking-js
- API / product: letsbooking.bitscorp.co
MIT