Docs/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.
Authorization: Bearer mm_live_…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.).