PokeTrace 2.0 est disponibleVoir les nouveautés
PokeTrace 2.0 est disponibleVoir les nouveautés

Reference

Rate limiting

The API applies two layers of rate limiting to keep usage fair and the service stable. Authenticated limits apply per account, not per API key.

Limit layers

LayerScopeLimitApplies to
BurstPer accountPlan-specific (Free: 1/2s, Pro: 30/10s, Growth: 45/10s, Scale: 60/10s, Business: 300/10s)
Short-term spike protection. Prevents hammering the API with rapid-fire requests.
All API endpoints
DailyPer accountVaries by plan
Resets at midnight UTC. Shared across all API keys on your account.
Authenticated endpoints

Limits by plan

PlanDailyBurstPrice sources
Free1001 / 2seBay, TCGPlayer
Pro10,00030 / 10seBay, TCGPlayer, Cardmarket
Growth50,00045 / 10seBay, TCGPlayer, Cardmarket
Scale100,00060 / 10seBay, TCGPlayer, Cardmarket
Business1,000,000300 / 10seBay, TCGPlayer, Cardmarket

Response headers

Every authenticated response includes rate limit headers so you can track usage in code.

HeaderDescription
X-RateLimit-LimitYour plan's daily request limit
X-RateLimit-RemainingDaily requests remaining
X-RateLimit-ResetISO8601 timestamp when daily limit resets
X-RateLimit-Burst-LimitBurst limit for your plan (1, 30, 45, 60 or 300) — only on 429 responses
X-RateLimit-Burst-RemainingBurst requests remaining — only on 429 responses
Retry-AfterSeconds until you can retry — only on 429 responses
X-PlanYour current plan (Free, Pro, Growth, Scale, Business)

429 responses

Burst limit exceeded
{
  "error": "Too many requests. Slow down.",
  "code": "BURST_RATE_LIMIT_EXCEEDED",
  "retryAfter": 2
}
Daily limit exceeded (Free plan on /v2)
{
  "error": "Daily rate limit exceeded (100 requests per day on /v2 for the Free plan). Resets at 2026-01-18T00:00:00Z",
  "usage": {
    "plan": "Free",
    "daily": {
      "remaining": 0,
      "limit": 100,
      "resetsAt": "2026-01-18T00:00:00Z"
    }
  }
}

Best practices

Handling 429 errors

  • Read the Retry-After header for the wait time in seconds.
  • Use exponential backoff: wait 1s, 2s, then 4s between retries.
  • Tell burst limits (seconds) apart from daily limits (hours).

Making fewer calls

  • Cache responses. Prices update every few hours, not every few seconds.
  • Use the X-RateLimit-Remaining header to pace requests.
  • Batch lookups where possible instead of requesting cards one by one.