金晰數據
開發者文件

方案與速率限制

Clarifindata 的速率限制是按 user(而非 key)計算的滑動小時視窗,以 Redis 60 秒 bucket 實作。

方案對照表

Free
600 / hr
NT$0
49 個 Free 資料集
demo / 試玩,不需信用卡
Lite
3,000 / hr
NT$149/月
80 個(Free + Lite)
個人回測
Plus
10,000 / hr
NT$299/月
88+ 個 + AI 加值
團隊 / 商用 / AI agent
Agent (x402)
無月費上限
$0.05–$0.20 / 次
Lite + Plus 資料集
USDC on Base mainnet,不用註冊

速率視窗語意

速率限制是以「滑動視窗」計算:API server 把每分鐘的計數存在 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 和清楚的錯誤說明。Rate-limit header 同樣會出現在 429 回應中。

json
{
  "detail": "rate limit exceeded (605/600 per hour for free tier)",
  "retry_after_seconds": 42
}
建議在請求迴圈中讀取 X-RateLimit-Remaining,在剩餘 < 50 時主動降速,避免 429。遇到 429 時,用隨機 jitter 後退重試(exponential backoff + ±20% 隨機)。
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