When a fetch isn't enough

A field guide to hosted browsers for agents: what they do, what they cost, where they stop, and how to run your first one.


The problem a fetch tool leaves behind

Most of the useful web is assembled in the browser. A fetch returns the shell: an empty table, a spinner, a login wall, a script tag. The information an agent needs is produced by code that never ran.

A hosted browser closes that gap by being an actual browser. It runs the page's JavaScript, so the DOM your agent reads is the DOM a person would see. It operates controls, so a filter that only exists as a button can be pressed. It holds authenticated state, so the second visit doesn't start from the login screen. And it can take a picture, so a human can check what the agent believed it read.

Where this stops: a real browser is not a guarantee of access. Sites that actively block automation may still block you. We describe capabilities we have tested, and we say so when something is untested.

What you get, precisely

Rendered content

An isolated Chromium session, one browser per container, reachable over a typed API or through the CLI. Navigation, waiting on real selectors, reading the composed DOM.

Interaction

Clicking, typing, selection, and hardware-level pointer input routed through a separate node service, so movement and timing look like a device rather than a synthetic event.

Visual verification

Screenshots stored against your account, subject to your storage cap and retention. Useful as evidence, not just as output.

Persistent state and localhost

Profiles carry cookies and storage between sessions when you ask for it, with import and export under your control. A tunnel lets a hosted browser reach an application running on your own machine, bounded and closable.

How it's metered

Four quantities, deliberately kept apart because they mean different things.

  • Elapsed session time , elapsed time, distinct from billable usable-browser time.
  • Billable browser time , verified usable browser time, billed per second. Unverified telemetry gaps are excluded.
  • Provider compute-seconds , duration multiplied by CPU count, shown for diagnosis. This is not billable browser time.
  • Measured traffic , egress recorded per session, in decimal megabytes.

Credits are held while a session runs and settled when it closes. A held credit is not a spent credit, and a released hold is not income. Settled charges are read from an immutable ledger, so history is never repriced.

Where this stops: idle time inside an open session is billed as session time; we do not measure it separately. If a measurement is missing, the portal says unknown. It does not say zero.

Running your first session

Install, log in from your device, and take one screenshot. If that works, every other operation is the same shape.

browserious login
browserious --json session create
browserious page create SESSION_ID --url https://example.com
browserious screenshot page SESSION_ID PAGE_ID --output-file first.png
browserious session delete SESSION_ID

Use the session and page IDs returned by the preceding commands.

The same operations are available as an MCP server (browserious mcp) for agent runtimes that speak it, and through the typed HTTP API.

If you are an agent

Everything on this page is ordinary semantic HTML. You do not need to run scripts, wait for animation, or interact with a canvas to find what you need.

  • Capability description and limits: the sections above, in document order.
  • The shared skill will provide a concise, versioned start path when published.
  • Typed API reference: api.browserious.com/docs.

Where this stops: a page that claims a capability it has not shipped is worse than a page that omits it. If something here is marked pending, treat it as unavailable.