Skip to content

Rate limits

Every call made with a key counts against that key’s limit, per minute on the clock. By default:

Key Calls a minute
Website (publishable) key 600
Secret key 120

The seller, or the marketplace’s team for one key, can set another limit. Every answer to a key’s call carries three headers:

Header Says
RateLimit-Limit The key’s limit this minute
RateLimit-Remaining Calls left this minute
RateLimit-Reset Seconds until the minute ends

Over the limit the answer is 429 RateLimited, with a Retry-After header and retry_after_seconds in the problem.

A few requests are also limited on their own, to stop abuse:

Request Limit, by default
POST /v1/public/auth/sign-in-link 5 links an hour for one email, 20 an hour from one address
POST /v1/public/auth/passkeys/sign-in/options 20 an hour from one address
POST /v1/public/bookings/{ref}/contact-changes 5 an hour for one booking

Past one of these the answer is also 429 RateLimited, with retry_after_seconds: wait that long before trying again, and tell the traveller when they can.

“One address” is the traveller’s IP address. Since your server makes the request, pass the traveller’s address on in X-Forwarded-For, first in the list; otherwise every traveller on your site shares your server’s limit.

  • Cache catalog reads (trips, pages, menus) on your server for a short time; never cache quotes, holds or bookings.
  • Watch RateLimit-Remaining, and slow down before it reaches 0.
  • On a 429, wait as long as Retry-After says, then try again; don’t retry in a tight loop.
  • Spread batch jobs, such as rebuilding a sitemap, over time.