An Evra tool

A real browser, behind one API call.

Browsevra runs managed headless Chromium so you don't have to. Send a URL, get back a screenshot, a PDF, the rendered HTML, or the elements you asked for. No Docker image to babysit, no Chrome flags to discover, no memory limits to tune at 2am.

curl -X POST https://api.browsevra.com/v1/screenshot \
  -H "Authorization: Bearer bv_live_…" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "fullPage": true}' \
  --output shot.png

Four endpoints, one header

Screenshots

Full-page or viewport, PNG or JPEG, at a fixed 1280×900 by default so captures of the same page stay comparable over time.

PDFs

A4, Letter or Legal, portrait or landscape, backgrounds on by default — because a PDF without them is not what the page looks like.

Rendered HTML

The DOM after JavaScript has run. What curl returns for a React app is an empty shell; this is the finished page.

Structured scrapes

Pass CSS selectors, get back the matching elements. One browser visit instead of fetching the page and parsing it yourself.

What it refuses to do, on purpose

Private addresses

Every target is resolved before the browser sees it. Loopback, RFC1918, link-local and cloud-metadata addresses are refused, and a hostname resolving to both a public and a private address is refused too.

Silent overspend

Concurrency and browser minutes are checked in one transaction before anything launches, and a session that would exceed your remaining quota is capped to what is left rather than allowed to run past it.

Guessing

A failed navigation is reported as a failure with a request id, not as an empty result. Nothing is returned that a browser did not actually produce.