Rate limits
The API applies rate limits across keys, IPs, and endpoints. When you exceed a limit, the API returns 429 with a retryAfterSec field.
Limits
| Scope | Window | Max |
|---|---|---|
| Per API key | 1 minute | 60 requests |
| Per API key | 1 hour | 1,200 requests |
| Per source IP | 1 minute | 120 requests |
| Per endpoint (global) | 1 minute | 5,000 requests |
429 response
{
"ok": false,
"error": "Rate limit exceeded. Slow down and retry.",
"retryAfterSec": 42
}Wait at least retryAfterSec seconds before retrying. Do not hammer the endpoint — repeated violations may result in key suspension.
Best practices
- Cache responses — if you do not need fresh data on every request, cache products for 5–15 minutes.
- Use larger pageSize — instead of 50 calls with pageSize=1, use 1 call with pageSize=50.
- Respect 429 — always read
retryAfterSecand wait. - Back off — on repeated errors, use exponential backoff with jitter.
Under load
If your integration is behind a shared IP (NAT, CI runners, cloud functions), you may share the per-IP limit with others. In that case, ask for a dedicated key so the per-key limit applies independently.