← Blog

BLOG

Browserbase Browserless: Which Hosted Runtime Fits?

Compare Browserbase and Browserless hosted Chromium runtimes for AI agents, session state, and CDP access, and learn how to pick the right one.

October 17, 20268 min readRemote Browser

# Browserbase Browserless: Which Hosted Runtime Fits?

"Browserbase browserless" gets searched by developers who have heard both names and want to know whether they are the same thing, competitors, or complementary. They are not the same. Browserbase is a hosted browser platform built around AI agents and session orchestration. Browserless is a hosted Chromium service that grew out of headless Chrome automation and PDF/screenshot workloads. If you are choosing a runtime for an AI agent, the decision comes down to what your workload actually does: long-lived interactive sessions with state, or short, stateless render and scrape jobs.

This guide compares the two on architecture, session model, agent fit, and production criteria, then shows how to connect a Playwright agent over CDP to a hosted Chromium runtime like Remote Browser. It does not rank them by marketing claims. It gives you the questions that decide the answer.

Browserbase vs Browserless in one paragraph

Browserbase targets agent and automation teams: sessions with live viewing, persistent contexts, proxy configuration, and SDKs that wrap session creation. Browserless targets teams that already write Puppeteer or Playwright code and want a remote endpoint instead of a local Chrome binary — its heritage is /content, /pdf, and /screenshot style REST endpoints plus WebSocket connections for full automation. Both give you Chromium in the cloud. The difference is the abstraction layer: Browserbase abstracts the *session*, Browserless abstracts the *browser process*.

That distinction matters more than any feature checklist, because it determines how much orchestration code you write yourself.

What each runtime actually gives you

Browserbase: session-first

Browserbase's model is: create a session through an API, get back a connection URL, attach your automation library, and optionally watch or replay it. The platform handles browser lifecycle, and its docs emphasize agent-oriented features — live session viewing, session metadata, and integrations with agent frameworks. If your product is an AI agent that needs to open a browser, do work, and hand back a trace, this shape fits.

Browserless: endpoint-first

Browserless exposes a Chromium instance behind HTTP and WebSocket endpoints. You can POST a URL and get a PDF or screenshot back, or connect Puppeteer/Playwright over the WebSocket debugger URL for full control. It is a strong fit for rendering pipelines, PDF generation, and scripted scraping where each job is short and independent. It also offers self-hosting, which is why "self-host browserless" is a common search — teams that want the same API surface on their own infrastructure.

Where AI agents change the calculus

An AI agent is not a scrape job. It makes decisions mid-session, navigates unpredictably, may need to log in, and often needs to resume state across steps. That pushes requirements toward:

  • Persistent profiles so cookies and storage survive across sessions.
  • Live viewer access so a human can intervene or debug a stuck run.
  • Session isolation so one agent's cookies never leak into another's.
  • CDP access so any library — Playwright, Puppeteer, Selenium — can drive the same session.
  • Usage controls so a runaway agent loop does not run up an unbounded bill.

Both Browserbase and Browserless can support parts of this. The question is how much you build versus how much the platform provides.

Comparison table

CriterionBrowserbaseBrowserlessWhat to check for agents
Primary abstractionSession API + connection URLBrowser endpoint (HTTP/WS)Does session creation return a CDP URL directly?
Typical workloadAI agents, interactive automationRendering, PDF, scraping, scripted automationLong-lived interactive vs short stateless
Live session viewingYes, agent-orientedLimited / varies by planCan a human watch and take over?
Persistent stateContexts/profilesDepends on plan and self-host configDo cookies survive across sessions?
Self-hostingNo (managed)YesDo you need the runtime on your own infra?
Library compatibilityCDP-based (Playwright, Puppeteer)Puppeteer, Playwright, REST endpointsDoes your existing code connect unchanged?
Proxy configurationConfigurableConfigurableDatacenter vs other proxy types, per-session
Pricing modelSession/browser-hour basedPlan + unit basedSee /pricing for current Remote Browser rates

Treat this table as a starting frame, not a verdict. Both vendors change plans and features; verify against their current docs before committing.

The production criteria that actually decide it

1. Session lifecycle and state

If your agent needs to log in once and reuse that login for a week, you need persistent profiles with explicit lifecycle control — create, reuse, expire. If every job is a fresh PDF render, you want the cheapest possible cold start and no state at all. Browserless optimizes for the second case. Browserbase and Remote Browser optimize for the first. Read Remote Browser for AI agents for how session state maps to agent steps.

2. Debuggability

Agents fail in ways scripts do not: they click the wrong element, loop, or get blocked by a challenge. You need a live viewer and session recording, not just logs. Ask: can I watch the session in real time? Can I replay it? Can I attach a debugger over CDP mid-session? If the answer is "read the logs," you will spend your week guessing.

3. Connection protocol

Both platforms ultimately speak CDP. That is good news: your Playwright or Puppeteer code is portable. The practical test is whether the platform hands you a ws:// debugger URL you can pass to chromium.connectOverCDP(). If it only gives you REST endpoints, you are locked into that vendor's request shape.

4. Isolation and multi-tenancy

If you run agents for multiple customers, session isolation is non-negotiable. Each session should have its own browser context, storage, and network identity. Verify how the platform scopes cookies and whether profiles can be shared accidentally.

5. Cost shape

Browser-hour pricing rewards short sessions and punishes idle ones. An agent that thinks for 30 seconds between actions is still burning browser time. Model your real workload — average session length, actions per session, retries — before comparing headline rates. Current Remote Browser pricing is on /pricing.

Connecting a Playwright agent over CDP

The portable path works the same against any CDP-compatible hosted runtime. Create a session, get the WebSocket debugger URL, connect, and drive it like a local browser.

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

interface SessionInfo {
  cdpUrl: string; // wss://... provided by the hosted runtime
  sessionId: string;
}

async function runAgentStep(session: SessionInfo, url: string) {
  const browser: Browser = await chromium.connectOverCDP(session.cdpUrl, {
    timeout: 30_000,
  });

  // Reuse the existing context so cookies and storage persist
  const context = browser.contexts()[0] ?? (await browser.newContext());
  const page: Page = context.pages()[0] ?? (await context.newPage());

  try {
    await page.goto(url, { waitUntil: "domcontentloaded", timeout: 45_000 });

    // Agent decision happens here; keep actions idempotent and observable
    const title = await page.title();
    const snapshot = await page.accessibility.snapshot();

    return { title, snapshot };
  } finally {
    // Close the connection, not the remote browser, if the session must persist
    await browser.close();
  }
}

Two details matter in production. First, browser.close() on a CDP connection detaches your client; whether it terminates the remote session depends on the platform — check the docs before relying on it. Second, always set explicit timeouts on goto and on the connection itself, because a hung agent step is indistinguishable from a hung network call.

For the protocol-level details, the Chrome DevTools Protocol documentation is the authoritative reference, and Playwright's connectOverCDP docs cover the client side.

Where Remote Browser fits

Remote Browser is a hosted Chromium runtime for AI agents and browser-use workflows. It provides:

  • Hosted Chromium sessions with CDP access, so Playwright, Puppeteer, and Selenium connect without local Chrome.
  • A live viewer for watching and debugging agent runs.
  • Persistent profiles for state that must survive across sessions.
  • Configurable browser and proxy settings for network identity and access control.
  • Session isolation so concurrent agents do not share cookies or storage.
  • Usage controls so you can bound spend per team or workload.

It is not a rendering API and it is not a self-hosted product. If your workload is "generate 10,000 PDFs," Browserless or a self-hosted Chromium pool is the cheaper answer. If your workload is "an agent that logs in, navigates, and completes a multi-step task," you want a session-oriented runtime. See Remote Browser online for the setup path and /documentation for the API surface.

Common migration mistakes

Treating a session like a browser process. Agents that call browser.close() after every step destroy the state they need. Keep the session alive and detach the client instead.

Ignoring cold start. Session creation latency is part of your agent's latency. Measure it against your task timeout budget.

Skipping the live viewer until something breaks. Wire observability in from day one. A stuck agent with no viewer is a support ticket you cannot debug.

Assuming proxy settings are free. Proxy configuration changes cost and latency. Test with the proxy setup you will actually run in production.

Porting REST calls to CDP without rethinking the flow. A /content call is stateless by design. An agent flow is stateful. Rewrite the orchestration, not just the transport.

Decision checklist

  • Short, stateless, high-volume jobs → Browserless or a self-hosted Chromium pool.
  • Interactive agents with login and multi-step tasks → a session-oriented runtime (Browserbase, Remote Browser).
  • You need self-hosting → Browserless or Steel; managed platforms are out.
  • You need a live viewer and persistent profiles out of the box → compare session features, not just price.
  • You want library portability → confirm CDP WebSocket access before signing up.

The honest answer to "Browserbase browserless" is that they are different tools for different jobs, and the right choice depends on whether your unit of work is a *request* or a *session*. For agent workloads, start with the session model, verify CDP access, and price against your real session length. Everything else is a detail you can change later.