開發者文件
方案與速率限制
速率限制以 user 計算,不以 key 計算。視窗為一小時滑動視窗,由 Redis 的 60 秒 bucket 組成。
方案對照表
Free
600 / hr
NT$0
49 個 Free 資料集
測試與探索,無需信用卡
Lite
3,000 / hr
NT$149/月
80 個(Free + Lite)
個人研究與回測
Plus
10,000 / hr
NT$299/月
82 個資料集 + AI
團隊 / 商用 / AI agent
Agent (x402)
無月費上限
$0.05–$0.20 / 次
Lite + Plus 資料集
Base mainnet USDC,無需註冊
速率視窗語意
每分鐘的呼叫數會存入獨立 Redis bucket。每次檢查時加總最近 60 個 bucket,即為過去一小時的呼叫次數。視窗不會在整點歸零,而是隨時間持續滑動。
每個回應都會包含 X-RateLimit-Remaining header,可用於確認目前視窗的剩餘呼叫次數。
bash
# Check headers on any response
curl -I -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.clarifindata.com/v1/key/info"
# Example response headers:
# X-RateLimit-Limit: 600
# X-RateLimit-Remaining: 597
# X-RateLimit-Window: 3600
# X-RateLimit-Tier: free429 Too Many Requests
超過上限時會回傳 HTTP 429。Body 會包含 retry_after_seconds 與錯誤訊息,429 回應也會包含 rate-limit header。
json
{
"detail": "rate limit exceeded (605/600 per hour for free tier)",
"retry_after_seconds": 42
}✓
建議在請求迴圈中監控 X-RateLimit-Remaining;低於 50 時先降低呼叫頻率。若收到 429,請使用指數退避重試,並加入 ±20% jitter,避免重試集中在同一時間。
python
import time, random, requests
def request_with_retry(url, headers, params, max_retries=5):
backoff = 1.0
for attempt in range(max_retries):
resp = requests.get(url, headers=headers, params=params)
if resp.status_code != 429:
return resp
retry_after = resp.json().get("retry_after_seconds", backoff)
jitter = retry_after * (0.8 + 0.4 * random.random())
time.sleep(jitter)
backoff *= 2
return resp