> SpecStream is the live web data engine for teams and agents. This is the Markdown copy of https://specstream.ai/blog/x402-browser-sessions. Every page, with what SpecStream does and costs: https://specstream.ai/llms.txt

# x402 browser sessions: pay per session in USDC, with no account

SpecStream

[Agents](https://specstream.ai/blog.md) · Nov 13, 2026 · 5 min read

An agent with a wallet can open a real Chromium browser on SpecStream with one HTTP call, no account and no API key. It costs $0.10 an hour, charged by the second. The agent authorizes the most the session can cost, and only the seconds it ran are taken when it ends. A session that never starts costs nothing.

This page shows the call, the prices by duration, and how the other hosted browsers that take x402 charge for the same thing. Every number about another company is copied from its own docs, read on November 13, 2026.

## What a session costs, by duration

The rate is $0.10 an hour by the second, plus $1 per 1,000 steps for steps sent one at a time over HTTP. Steps your code sends over the connect URL with Playwright or Puppeteer are not charged, so a session driven that way costs its time alone.

| Duration | The most a session can cost (time alone) |
| --- | --- |
| 5 minutes | $0.01 |
| 15 minutes | $0.03 |
| 30 minutes | $0.05 |
| 60 minutes | $0.10 |

A session runs from 1 to 60 minutes, and you can extend it while it runs. The price is public: ask the endpoint with no payment and it answers with the amount.

## Open a session

**1\. Ask for the session.** Send the settings with no key and no payment.

```bash
curl -X POST https://api.specstream.ai/v1/agent/browser/sessions \
  -H "Content-Type: application/json" \
  -d '{"timeout_s": 300, "max_actions": 0}'
```

**2\. Read the price.** The answer is `402 Payment Required`. Its body says the amount in plain words, and its `PAYMENT-REQUIRED` header carries the same offer for an x402 client.

```json
{
  "status": 402,
  "detail": "This browser session costs at most $0.01: 300 seconds and 0 steps. Only what it uses is taken when it ends, and nothing when it never starts."
}
```

**3\. Pay and send the same request again.** The header offers x402's `upto` scheme in USDC on Base, Arbitrum or Polygon. Any x402 v2 client signs a Permit2 authorization for the amount and puts it in `PAYMENT-SIGNATURE`. Nothing moves when you sign.

**4\. Connect.** The answer is `201` with the session, its `connect_url` and a purchase token.

```python
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(connect_url)
    page = browser.contexts[0].new_page()
    page.goto("https://example.com")
    print(page.title())
```

The same `connect_url` works with Puppeteer's `connect`, with browser-use as `cdp_url`, and with Stagehand.

**5\. End it.** With `Authorization: Bearer <token>`, `POST /v1/agent/browser/sessions/{id}/release` ends the session. The seconds it ran are taken from the authorization and the rest is released. `POST /v1/agent/browser/sessions/{id}/extend` buys more time the same way.

An agent with no wallet can pay by card through MPP on the same endpoint. A card payment is at least $1 unless the session cost nothing.

## Steps over HTTP, for an agent with no browser library

An agent that cannot run Playwright drives the session one step at a time: `POST /v1/agent/browser/sessions/{id}/actions`. Each step costs $0.001. Leave `max_actions` out and the authorization covers one step for every 5 seconds of the session, so 5 minutes is at most $0.07: 300 seconds and 60 steps. Set `max_actions` to the number of steps you plan, and the authorization covers that number. Only the steps taken are charged.

## Already wrote a client for Browserbase's x402 endpoint?

SpecStream answers the same routes, so the client works with the address changed to `https://api.specstream.ai`:

-   `POST /x402/browser/session/create` with `{"estimatedMinutes": 5}`
-   `POST /x402/browser/session/{id}/extend` with `{"additionalMinutes": 5}`
-   `GET /x402/browser/session/{id}/status`
-   `POST /x402/browser/session/{id}/terminate`

## How the hosted browsers that take x402 compare

|  | SpecStream | Browserbase | Anchor Browser | Browser Use Cloud |
| --- | --- | --- | --- | --- |
| Price | $0.10 an hour, by the second | $0.12 an hour, sold in blocks of minutes | $0.50 a session | Credits, bought $1.00 at a time by default |
| What is taken | The seconds the session ran | The block you paid for. Unused time "may be eligible for refund" | The session price | The top-up, spent as credits |
| Networks | Base, Arbitrum, Polygon | Base | Base | Base |
| Account or key | None | None | The page describes x402 for when "you have insufficient credits" | None |
| Wallet | Any x402 v2 client | Any EVM wallet | "Currently only Coinbase Wallet is supported" | A wallet with at least $1 of USDC |

Three things differ for an agent that pays its own way.

**You pay for seconds.** Browserbase prints a table of blocks: 5 minutes for $0.01, 60 minutes for $0.12. When a session ends early, its quickstart says unused time may be eligible for a refund. On SpecStream the unused part is never taken: the authorization is a ceiling, and the charge is the seconds the session ran.

**The price fits a short job.** Anchor Browser charges $0.50 USDC for a session. A two minute page read on SpecStream costs $0.01.

**The agent holds no balance with us.** Browser Use Cloud turns each payment into credits, $1.00 by default, and the agent spends them down. On SpecStream each session is its own payment, so an agent that runs one session leaves nothing behind.

## What the agent gets

A real Chromium browser, driven over the Chrome DevTools Protocol or step by step over HTTP. It is the browser SpecStream sells by API key at the same rate: see [the headless browser for AI agents](https://specstream.ai/headless-browser-for-ai-agents.md) for what it does, and [agents.md](https://specstream.ai/agents.md) for every call an agent can pay for with x402, including one search or one page read at a time.

## Questions

**Does the agent need an account, an email address or a key?** No. The wallet's signature is the payment, and the purchase token in the answer is the key for that one session.

**What if the session fails to start?** Nothing is taken. The authorization is released.

**What if the session outlasts the authorization?** It ends. Extend it before then with `POST /v1/agent/browser/sessions/{id}/extend`.

**Which token and networks?** USDC on Base, Arbitrum or Polygon. The `PAYMENT-REQUIRED` header lists all three, and the client picks one.

**Where is the price in machine form?** `GET https://api.specstream.ai/v1/agent/browser/sessions` returns the rate and the steps as JSON, with no key.

## More from the blog

[Every post](https://specstream.ai/blog.md)

[![A list of MCP servers (100 active ones), and why your agent needs a list, not ten pages](https://specstream.ai/blog/covers/list-of-mcp-servers.jpg) ### A list of MCP servers (100 active ones), and why your agent needs a list, not ten pages 100 MCP servers on GitHub with 500+ stars and a push in the last month, from one sentence over MCP Oct 15, 2026 · SpecStream · 6 min read](https://specstream.ai/blog/list-of-mcp-servers.md)[### Ask Claude for a lead list: connect an MCP server that returns rows with their sources Connect Claude, Claude Code or Cursor to SpecStream's MCP server, describe the companies you want in plain words, approve the most the list can cost, and get every match as rows with the page behind each value Nov 12, 2026 · SpecStream · 7 min read](https://specstream.ai/blog/ask-claude-for-a-lead-list.md)[### Competitor monitoring with MCP: a table your agent rechecks on a schedule Connect your agent to SpecStream's MCP server, describe the facts you track for each competitor, and turn the table into a monitor that rechecks every row and sends only what changed Nov 12, 2026 · SpecStream · 7 min read](https://specstream.ai/blog/competitor-monitoring-with-mcp.md)
