Skip to content
Getting started

Rate limits

Limits are applied per API key, per minute, and depend on your plan.

PlanRequests / minute
Pay-as-you-go (no subscription)60
Starter60
Growth120
Scale240

Headers

Every response includes your current window:

  • x-ratelimit-limit requests allowed per minute
  • x-ratelimit-remaining requests left in this window
  • x-ratelimit-reset seconds until the window resets

When you exceed it

You receive 429 rate_limited with a retry-after header. Rate-limited requests are not charged. Back off for the number of seconds given, ideally with jitter:

Retry on 429
async function call(url, key, tries = 4) {
  for (let i = 0; i < tries; i++) {
    const res = await fetch(url, { headers: { "x-api-key": key } });
    if (res.status !== 429) return res;
    const wait = Number(res.headers.get("retry-after") ?? 1) * 1000;
    await new Promise((r) => setTimeout(r, wait + Math.random() * 250));
  }
  throw new Error("Rate limited");
}

Need higher limits? Talk to us.