Skip to main content

Rate Limits

Every request counts towards a global limit, some endpoints have an additional, lower limit.

LimitEndpointsRequestsWindow
GlobalAll endpoints10001 hour
Items/v1/items and /v1/sales/history together85 minutes

How requests are counted​

  • With an API key, requests are counted per API key (the Authorization header).
  • Without an API key, requests are counted per network: all IPv4 addresses that only differ in the last block (e.g. 203.0.113.0 to 203.0.113.255) share one limit. If you run your client on a cloud or hosting provider, other customers in the same network may use up your limit. Send your API key to get a limit of your own.
  • The windows are fixed: they start with your first request and reset after 5 minutes (or 1 hour).

When you are rate limited​

Requests over the limit are answered with 429 Too Many Requests:

{
"errors": [
{
"id": "rate_limit_exceeded",
"message": "Your connection is being rate limited."
}
]
}
warning

Every request you send while you are rate limited extends the block by another full window. The limit only resets after a full window (5 minutes for the items limit) without any requests. Do not retry right away.

Best practices​

  • Send your API key with every request.
  • /v1/items and /v1/sales/history are cached for 5 minutes. Requesting them more often returns the same data, so once every 5 minutes per parameter combination (e.g. tradable=0 and tradable=1) is enough.
  • Don't send your requests exactly at the full 5 minutes: wait a little longer (e.g. 5.5 minutes) or add some random delay, so you never hit the end of a window.
  • After a 429, wait at least a full window without any requests before you try again.