← Blog

BLOG

Best Cloud Browser: How to Choose One for AI Agents

A practical guide to picking the best cloud browser for AI agents: pricing models, CDP access, stealth, session limits, and how to test before you commit.

October 21, 20269 min readRemote Browser

# Best Cloud Browser: How to Choose One for AI Agents

The best cloud browser for your agent is the one that keeps sessions alive long enough to finish the task, exposes a real CDP endpoint your framework already speaks, and bills in a way you can predict. Everything else — stealth, network controls, live viewers — is a feature you either need or don't. This guide breaks down the criteria that actually separate hosted browser providers, compares the common options on the market, and shows you how to wire one up with Playwright in a few lines of TypeScript.

If you want the short version: evaluate on session lifecycle, CDP compatibility, IP and stealth controls, observability, and cost per browser-hour. Then run your own workload against two or three providers before signing anything. The rest of this post explains how to do that without wasting a week.

What a cloud browser actually is

A cloud browser is a real Chromium instance running on someone else's infrastructure. You create it with an API call, connect to it over the Chrome DevTools Protocol (CDP), drive it with Playwright, Puppeteer, Selenium, or an agent framework, and tear it down when you're done. The provider handles the machine, the browser binary, the network egress, and the lifecycle.

That's the whole product. The differences between providers come down to how they manage that lifecycle and what they put around it:

  • Session management — how fast sessions start, how long they live, whether they can persist across workers.
  • Connection surface — CDP over WebSocket, a REST API, an MCP server, or a CLI.
  • Network controls — datacenter vs. residential IPs, geographic targeting, configurable browser settings.
  • Observability — live viewer, recordings, logs, session replay.
  • Billing — per browser-hour, per session, per credit, or subscription tiers with overage.

If you're new to the category, the remote browser for AI agents overview covers the runtime model in more depth.

The criteria that actually matter

1. Real CDP access, not a wrapper

Some providers give you a proprietary SDK and call it a browser API. That's fine until you want to use a library they don't support, or you need to drop down to raw CDP for something the SDK doesn't expose. Ask one question: can I connect with chromium.connectOverCDP() using a WebSocket URL? If the answer is no, you're locked into their abstraction.

The Chrome DevTools Protocol is the standard here. Playwright's connectOverCDP is the practical test — if it works, your existing automation code ports over with almost no changes.

2. Session lifecycle and persistence

Agents are long-running and stateful. A login flow that takes 40 seconds shouldn't have to repeat on every task. Look for:

  • Persistent profiles so cookies, localStorage, and saved logins survive across sessions.
  • Session reuse so a worker can pick up where another left off.
  • Configurable timeouts so a stuck agent doesn't burn hours of billable time.
  • Graceful teardown so you're not paying for orphaned sessions.

3. Network and stealth controls

Whether you need residential IPs depends entirely on your targets. For internal tools and public data, datacenter IPs are fine and cheaper. For anything behind bot detection, you need residential egress and configurable browser settings — user agent, locale, timezone, viewport. Be skeptical of "undetectable" claims; no provider can guarantee you won't get blocked. What you can evaluate is whether the settings are configurable and whether the provider publishes any independent testing.

4. Observability

When an agent fails at step 14 of a 20-step task, you need to see what the browser saw. A live viewer for debugging in real time, session recordings for post-mortems, and structured logs are not nice-to-haves — they're the difference between a 10-minute fix and a 2-hour investigation.

5. Billing model

This is where providers diverge most. Some charge per browser-hour with no subscription. Others bundle hours into monthly plans with concurrency caps and overage rates. A low monthly plan that includes 100 hours sounds cheap until you're running 50 parallel agents and blow through it in two days. Model your actual usage — concurrent sessions × average session length × tasks per day — before comparing headline prices.

Comparison: common cloud browser options

The table below summarizes how the main providers in this space are typically positioned. Pricing changes frequently, so treat the model column as a shape, not a number, and check each provider's pricing page for current rates.

ProviderBilling modelConnectionNotable strengthsWatch out for
Remote BrowserUsage-based; see /pricingCDP over WebSocket, Playwright/Puppeteer/SeleniumHosted Chromium, live viewer, persistent profiles, configurable browser settingsCheck current limits before scaling
BrowserbaseSubscription tiers + overageCDP, SDKsMature ecosystem, good docs, MCP supportConcurrency caps on lower tiers
BrowserlessUsage-based / self-hostCDP, RESTSelf-hosting option, open-source heritageStealth features less built-in
SteelOpen-source + hostedCDPOpen-source core, good for self-hostingHosted tier less mature
KernelUsage-basedCDP, RESTFast session startupSmaller ecosystem
HyperbrowserUsage-basedCDP, MCPSimple API, MCP serverFewer enterprise controls
AnchorUsage-basedCDPStealth focusNarrower feature set

A few notes on the table. "MCP support" means the provider ships a Model Context Protocol server so agents like Claude can drive the browser without custom glue code — useful if you're building on MCP-native stacks. "Self-hosting" matters if you have data residency requirements or want to avoid per-hour costs at very high volume. Most teams end up on a hosted provider for the first year and revisit self-hosting only when volume justifies the ops burden.

If you're specifically comparing Browserbase plans or Hyperbrowser pricing, the honest answer is that the cheapest headline rate rarely wins. A provider that's 30% cheaper per hour but starts sessions 3× slower will cost you more in wall-clock time and retries.

Connecting with Playwright over CDP

Here's the minimal TypeScript to drive a hosted Chromium session. This pattern works against any provider that exposes a CDP WebSocket URL — swap the endpoint and auth header for your provider.

import { chromium, Browser, Page } from 'playwright';

interface SessionResponse {
  cdpUrl: string;
  sessionId: string;
}

async function createSession(): Promise<SessionResponse> {
  const res = await fetch('https://api.remote-browser.dev/v1/sessions', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.REMOTE_BROWSER_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      // Configurable browser settings — adjust to your target site
      viewport: { width: 1280, height: 800 },
      locale: 'en-US',
      timezone: 'America/New_York',
      // Persistent profile so logins survive across sessions
      profileId: 'agent-profile-01',
    }),
  });

  if (!res.ok) throw new Error(`Session create failed: ${res.status}`);
  return res.json() as Promise<SessionResponse>;
}

async function runTask(): Promise<void> {
  const { cdpUrl, sessionId } = await createSession();
  let browser: Browser | undefined;

  try {
    browser = await chromium.connectOverCDP(cdpUrl);
    const context = browser.contexts()[0];
    const page: Page = context.pages()[0] ?? (await context.newPage());

    await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
    const title = await page.title();
    console.log(`Loaded: ${title}`);

    // Your agent logic goes here — extract, click, fill, etc.
  } finally {
    await browser?.close();
    // Explicit teardown so you stop paying for the session
    await fetch(`https://api.remote-browser.dev/v1/sessions/${sessionId}`, {
      method: 'DELETE',
      headers: { 'Authorization': `Bearer ${process.env.REMOTE_BROWSER_API_KEY}` },
    });
  }
}

runTask().catch(console.error);

Two things to notice. First, connectOverCDP returns a browser object whose contexts and pages are already live — you don't launch anything. Second, the finally block tears down the session explicitly. Orphaned sessions are the single most common source of surprise bills in this category.

For a deeper walkthrough of the connection model, see remote browser online.

How to evaluate providers without wasting a week

Don't benchmark on example.com. Build a small harness that mirrors your real workload:

  1. Pick three representative tasks. One login flow, one multi-page extraction, one form submission. These cover the failure modes that matter.
  2. Run each 20 times per provider. You need enough samples to see variance in session startup and success rate.
  3. Measure four things: time-to-first-page-load, task success rate, p50 and p95 session duration, and cost per successful task. That last metric is the only one that matters for budgeting.
  4. Check failure modes, not just failures. When a task fails, can you see why? A provider with a 5% failure rate and great logs beats one with a 3% failure rate and no visibility.
  5. Test teardown. Kill a session mid-task and confirm you're not billed for the remainder.

Run this over two days, not two weeks. The signal you need shows up fast.

Production considerations beyond the demo

Once you've picked a provider, a few things determine whether it holds up at scale.

Session isolation. Each agent task should get its own browser context at minimum, ideally its own session. Shared state between concurrent agents causes the weirdest bugs — one agent's cookie jar leaking into another's checkout flow.

Concurrency planning. Every provider has limits, whether explicit (plan caps) or implicit (queueing under load). Know yours before you ship. If you're running a batch job with 200 parallel tasks, test what happens at 200, not 20.

Retry semantics. Browser tasks fail for transient reasons — network blips, slow loads, anti-bot challenges. Build retries at the task level, not the session level, and make sure a retry doesn't reuse a poisoned profile.

Cost controls. Set per-task timeouts, cap session duration, and alert on anomalous usage. A runaway agent loop can burn through a month's budget in an afternoon.

Data handling. If your agents touch authenticated sessions or PII, confirm the provider's data retention policy. Zero-retention options exist but aren't universal.

For a fuller treatment of the runtime layer, the remote web browser guide covers session architecture and the remote control browser post goes into live debugging workflows.

When to self-host instead

Hosted cloud browsers win for most teams because the ops burden of running Chromium at scale is real: browser version pinning, memory leaks, zombie processes, IP management, and the endless game of keeping up with bot detection. But self-hosting makes sense if:

  • You have strict data residency requirements that no hosted provider meets.
  • Your volume is high enough that per-hour costs exceed the cost of a dedicated ops engineer.
  • You need deep customization of the browser binary itself.

Browserless and Steel are the usual starting points for self-hosting. Be honest about the maintenance cost — it's not a weekend project.

The bottom line

The best cloud browser is the one that fits your workload's shape. If you're running short, high-volume tasks, optimize for session startup speed and per-hour cost. If you're running long, stateful agent workflows, optimize for persistence, observability, and teardown reliability. If you're behind aggressive bot detection, optimize for network controls and accept that you'll pay more.

Test before you commit. Run your real tasks against two or three providers, measure cost per successful task, and check the failure modes. The provider that wins on your harness is the right answer — not the one with the best landing page.

Remote Browser provides hosted Chromium sessions with CDP access, persistent profiles, a live viewer, and configurable browser settings. Check /pricing for current rates and /documentation for the API reference.