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
| Layer | Scope | Limit | Applies to |
|---|---|---|---|
| Burst | Per account | Plan-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 |
| Daily | Per account | Varies by plan Resets at midnight UTC. Shared across all API keys on your account. | Authenticated endpoints |
Limits by plan
| Plan | Daily | Burst | Price sources |
|---|---|---|---|
| Free | 100 | 1 / 2s | eBay, TCGPlayer |
| Pro | 10,000 | 30 / 10s | eBay, TCGPlayer, Cardmarket |
| Growth | 50,000 | 45 / 10s | eBay, TCGPlayer, Cardmarket |
| Scale | 100,000 | 60 / 10s | eBay, TCGPlayer, Cardmarket |
| Business | 1,000,000 | 300 / 10s | eBay, TCGPlayer, Cardmarket |
Response headers
Every authenticated response includes rate limit headers so you can track usage in code.
| Header | Description |
|---|---|
X-RateLimit-Limit | Your plan's daily request limit |
X-RateLimit-Remaining | Daily requests remaining |
X-RateLimit-Reset | ISO8601 timestamp when daily limit resets |
X-RateLimit-Burst-Limit | Burst limit for your plan (1, 30, 45, 60 or 300) — only on 429 responses |
X-RateLimit-Burst-Remaining | Burst requests remaining — only on 429 responses |
Retry-After | Seconds until you can retry — only on 429 responses |
X-Plan | Your 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-Afterheader 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-Remainingheader to pace requests. - Batch lookups where possible instead of requesting cards one by one.