Our hotel price data, as plain JSON
The endpoints below are the same ones this site’s own pages call. They are free, read-only, and need no API key. Everything they return describes observed historical prices from our price-observation dataset — not a forecast for a specific stay.
Base URL and machine description
https://www.besttimetobookhotels.comRate limited to 60 requests per minute per IP per endpoint. Exceeding it returns 429 with Retry-After.- /openapi.json — OpenAPI 3.1 description of every endpoint on this page.
- /.well-known/api-catalog — RFC 9727 API catalog listing this API, the MCP server, and the Markdown endpoint.
- /server.json — MCP server descriptor.
- /api/health — service health.
Endpoints
GET /api/booking-advice
Combines a city's price trend with observed booking-date history for one stay. Returns advice: null when the stay has too little observed history to say anything.
curl "https://www.besttimetobookhotels.com/api/booking-advice?citySlug=paris&countrySlug=france&checkIn=2026-09-14&checkOut=2026-09-16"GET /api/hotel-booking-lead-time
Backs the explorer in the booking lead-time guide. Pass exactly one of q (typeahead search across cities and hotels) or id (a record returned by that search).
curl "https://www.besttimetobookhotels.com/api/hotel-booking-lead-time?q=lisbon"GET /api/last-minute-deal-history
The observed median price series behind a published last-minute deal, plus the baseline the deal is discounted against.
curl "https://www.besttimetobookhotels.com/api/last-minute-deal-history?citySlug=dubai&hotelSlug=example-hotel-dubai&checkIn=2026-09-14"GET /api/health
Liveness of the API instance serving the request. It does not probe upstream data stores.
curl "https://www.besttimetobookhotels.com/api/health"Pages as Markdown
Every public page also serves a token-efficient Markdown version of itself to clients that ask for one. Send Accept: text/markdown to the page URL — the URL does not change, so the page URL stays the one to cite.
curl -H "Accept: text/markdown" https://www.besttimetobookhotels.com/cities/paris/llms.txt lists every page that does this.
FAQ
Is there an API key or a paid tier?
No. The rate limit is the only quota. Responses link back to our city and hotel pages, which is how the project sustains itself.
Which endpoints are not documented here?
The live-rate endpoints this site uses for real-time prices call a booking partner on every request, so they are intentionally left out of the public description and may change without notice.
I want conversational access instead.
Use the MCP server. It exposes the same data as tools for Claude, Cursor, ChatGPT, and any other MCP client.