Each tier has its own per-minute and per-day quota. Exceeding the quota returns 429 with a Retry-After header. Quotas below are the single source of truth — they mirror app/tiers.py exactly.
| Tier | Req / min | Req / day | Scans / day | Keys |
|---|---|---|---|---|
| Free | 30 | 500 | — | 1 |
| Starter | 60 | 5 000 | 25 | 3 |
| Pro | 120 | 25 000 | 250 | 5 |
| Power Collector | 300 | 100 000 | 1 000 | 10 |
| Shop Basic | 500 | 250 000 | 1 000 | 10 |
| Shop Pro | 1 000 | 500 000 | 2 500 | 15 |
| Enterprise | 3 000 | 1 000 000 | 10 000 | 25 |
| Unlimited | ∞ | ∞ | ∞ | 50 |
"Scans / day" = card-recognition POSTs (/api/cards/recognize). Free tier is blocked from recognition; Unlimited has no per-day cap.
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1715342460
/api/search?ids=1,2,3) — the call counts as one request, not N. Always batch when you need ≥ 10 cards.