Vision limits and FAQ
Rate, concurrency and size limits for scrapes, crawls and browser sessions in the beta, and answers to common questions about vision.
Limits
Per organization, beta defaults. GET /v1/limits shows yours with current usage.
| Limit | Default |
|---|---|
Scrapes per minute (vision.scrape.rpm) | 60 |
Scrapes at once (vision.scrape.concurrent) | 5 |
Crawls at once (vision.crawl.concurrent) | 1 |
Pages per crawl (vision.crawl.pages_max) | 500 |
Browser sessions at once (vision.sessions.concurrent) | 5 |
Session lifetime (vision.session.timeout_max) | 1,800 seconds |
Per request:
| Request | Limit |
|---|---|
| Scrape | timeout_ms up to 60 seconds; up to 50 browser actions; URL up to 8,192 characters; body up to 1 MiB |
| Map | limit up to 5,000 URLs |
| Batch | Up to 1,000 URLs; body up to 4 MiB |
| Crawl | limit up to 500 pages, max_depth up to 20 |
Session act | Up to 100 actions, timeout_ms up to 60 seconds |
| Profile | State up to 5 MiB, 3,000 cookies and 500 origins; up to 32 domains |
A request over a size limit fails with limit_exceeded or payload_too_large; a rate or concurrency limit returns 429 with Retry-After. See limits.
Retention
Cached pages: 2 days. Crawl and batch records with their pages, and closed sessions: 7 days after they end. Profiles: until you delete them or their expires_at.
FAQ
With engine: "auto", vision starts a browser only when a page needs JavaScript to show its content. Browser actions, a screenshot format and a profile always need one. Set engine: "fetch" to forbid it; pages that build their content with JavaScript may then come back incomplete.
The request had custom headers, a profile or browser actions, or the site set cookies. Those results are fetched fresh and never shared with other organizations.
No. A page the site served with an error status is still a successful scrape; check status_code. A scrape fails when vision cannot fetch or convert the page at all, for example on a timeout or a network error.
No. Vision honors robots.txt and Content Signals by default and the beta has no override. A disallowed URL fails with robots_disallowed, and a crawl lists the URLs it skipped in result.robots_blocked.
No. Every fetch and navigation goes through the B3OS egress guard, and a session's CDP socket refuses browser contexts with their own proxy settings.
A scrape with actions suits one page: act, then capture, then the browser is released. A session suits work across many steps or pages, or anything that needs Playwright or Puppeteer. Sessions bill browser time while open; scrapes bill one page each.
Yes. Grant the sandbox vision:run and call http://127.0.0.1:7700/v1/vision/scrape from inside it, with no key. The call reaches vision over vsock without leaving the node.