Rate limit
Scopri come funziona il rate limiting, l’accesso ai dati in base al piano e come gestire le risposte 429.
GET /api/v1/limits per controllare il tuo piano e i tuoi limiti in modo programmatico.| Piano | Richieste / min | Burst / sec |
|---|---|---|
| Builder (inclusa la prova gratuita di 3 giorni) | 250 | 12 |
| Pro | 750 | 40 |
| Enterprise | Personalizzato | Personalizzato |
Il limite al minuto usa una finestra mobile. Il burst usa un token bucket.
Sul piano Builder, inclusa la prova gratuita di 3 giorni che è Builder per intero, l’accesso è limitato ai mercati più recenti. I piani Pro ed Enterprise hanno accesso illimitato a tutti i mercati e gli snapshot.
| Tipo di mercato | Builder | Pro / Enterprise |
|---|---|---|
| 5m | 4,100 | Illimitato |
| 15m | 1,400 | Illimitato |
| 1hr | 350 | Illimitato |
| 4hr | 85 | Illimitato |
| 24hr | 14 | Illimitato |
Quando una query di elenco supera il limite del tuo piano, il limit della risposta viene ridotto e viene incluso un campo warning.
Il numero di chiavi API attive che puoi avere dipende dal tuo piano. Le chiavi revocate o scadute non contano ai fini del limite.
Ogni risposta include gli header del rate limit, così puoi monitorare il tuo utilizzo in tempo reale.
X-RateLimit-Limit: 250
X-RateLimit-Remaining: 237
X-RateLimit-Reset: 1740800060Gestire le risposte 429
Quando superi il tuo rate limit, l’API restituisce un codice di stato 429 con un header Retry-After che indica quanti secondi aspettare. Il body della risposta include i campi error, message e retry_after.
import time
import requests
def fetch_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code == 429:
wait = int(response.headers.get("Retry-After", 2 ** attempt))
time.sleep(wait)
continue
return response
raise Exception("Rate limit exceeded after retries")Se provi ad accedere a un mercato o ai suoi snapshot che ricadono fuori dalla finestra di dati del tuo piano, l’API restituisce 403 Forbidden. Passa a un piano superiore o accedi a un mercato più recente.
{
"error": "Forbidden",
"message": "Your builder plan only includes the most recent markets for this type. Upgrade for full access.",
"tier": "builder"
}