金晰數據
開發者文件

方案與速率限制

速率限制以 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: free

429 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