Developers

Rate limits

How many requests a store can make, and what happens past it.

Limits apply per store, across all of its keys, over a sliding one-minute window. Adding keys doesn't add capacity.

PlanRequests per minuteAPI keys
Pro605
Advanced30020

Every response tells you where you stand:

HeaderMeaning
RateLimit-LimitRequests allowed per window
RateLimit-RemainingRequests left in the current window
RateLimit-ResetSeconds until the window frees up

Past the limit you get 429 with code rate_limited and a Retry-After header in seconds:

if (response.status === 429) {
  const seconds = Number(response.headers.get("Retry-After") ?? 1);
  await new Promise((resolve) => setTimeout(resolve, seconds * 1000));
  // …then retry
}

Staying under the limit

  • Page with limit=100 instead of many small pages.
  • Sync changes with updated_after instead of re-reading everything.
  • Let webhooks tell you what changed instead of polling each record.
  • Spread bulk jobs out, and back off when RateLimit-Remaining gets low.

On this page