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.

Free, no sign-upNo API keyOpenAPI 3.1

Base URL and machine description

https://www.besttimetobookhotels.com
Rate limited to 60 requests per minute per IP per endpoint. Exceeding it returns 429 with Retry-After.

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.