Docs/Rate limits

Rate limits

Two limits apply to every key: a per-minute request rate that scales with your plan, and your plan's monthly credit quota. The per-minute window is 60 seconds, tracked per endpoint. Hitting the per-minute limit returns 429.

At the monthly quota, free keys stop with a 429 until credits reset. Paid plans keep working: extra credits are billed at your plan's per-1,000 overage rate on a separate invoice when the period closes, capped at one extra month of credits, after which calls return 429. Prefer a hard stop? Switch overage billing off under Plan & Billing and your key stops at the quota instead - nothing extra is ever billed.

Requests per minute

PlanRequests / minCredits / month
Free Developer Access30300
Developer605,000
Growth12030,000
Scale300200,000
Business600Unlimited

Response headers

{
"url": "https://stripe.com",
"selector": "section.hero-section-container",
"autoDetected": true,
"sections": [
{ "selector": "section.hero-section-container", "label": "Financial infrastructure…", "elements": 343 },
{ "selector": "section.business-sizes-section", "label": "Powering businesses of all sizes.", "elements": 604 },

],
"framework": "tailwind",
"code": "<section class=\"relative w-full\">\n <h1 class=\"text-[#000000] …\">…</h1>\n</section>",
"css": null,
"tokens": {
"colors": ["#000000", "#533afd"],
"fontFamilies": ["sohne-var"],
"fontSizes": ["48px", "16px"],
"spacing": ["16px", "24px"],
"radii": ["8px"],
"shadows": ["0 2px 4px rgba(0,0,0,.1)"]
},
"theme": "light",
"assets": { "images": ["https://…/hero.png"], "fonts": [] },
"summary": { "elements": 42, "declarations": 310, "mappedToTailwind": 180, "arbitrary": 44, "styledCoverage": 97, "repeatedGroups": 1, "truncated": false },
"usage": { "creditsSpent": 25, "creditsThisMonth": 25, "monthlyLimit": 100, "remaining": 75, "cached": false }
}
Response headers
  • X-RateLimit-Limit / X-RateLimit-Remaining - your per-minute allowance and what's left of it in the current window.
  • X-RateLimit-Reset - seconds until the window resets.
  • X-Quota-Limit / X-Quota-Remaining - your monthly credit quota and remainder. Omitted on unlimited plans.
  • X-Overage-Credits - present only when a paid key is past its quota: the billed overage credits used this period.
  • X-Cache - HIT when the response came from the 24-hour cache, MISS when it was extracted live, BYPASS when fresh=true skipped the cache.
  • X-Request-Id - unique id for this call, on every response. Errors echo it as data.requestId; include it when reporting a problem.

Successful extractions are cached for 24 hours, shared across the whole platform: if anyone extracted the same URL with the same options (same endpoint, render, framework, selector) in the last day, your call returns in milliseconds and costs 0 credits - it only counts toward the per-minute rate. Only the extraction result is stored, never the fetched page itself, and rows are deleted at TTL. Pass fresh=true when you know the site just changed - it skips the cache, re-extracts the live page (charged normally), and the fresh result replaces the cached copy. There is no Retry-After header - on 429 the statusMessage tells you the seconds until reset (Rate limit exceeded. Retry in 42s.).