BrowserGateway is the OpenRouter for cloud browsers.

    If you build with headless browsers, you already know the problem: every provider has strengths and weaknesses. Browserless is fast on connect, Steel handles anti-bot well, Browserbase has the best dashboard, BrowserCat has generous pricing, and self-hosted Chrome is free but hard to scale. BrowserGateway is an MIT-licensed router that sits in front of all of them so you write one connection URL and swap providers without changing a line of app code. Same API surface, different upstream. Priority, round-robin, least-connections, weighted, latency-optimized routing — you pick.

    The AI-agent boom pushed the browser-as-a-service category into a real market. Every serious agent framework needs a browser somewhere. But picking one provider locks you into their outage schedule, their pricing changes, their captcha capability, their region coverage. That's exactly why OpenRouter (the LLM aggregator) works — write once, route across every provider you already use. We're doing the same shape for browsers.

    OpenRouter vs BrowserGateway

    OpenRouter (LLMs)BrowserGateway (browsers)
    Aggregates100+ LLM providersBrowserless, Steel, Browserbase, BrowserCat, browserserve, local Chrome, any CDP endpoint
    LicenseClosedMIT, fully self-hostable
    RoutingMultiple strategiesPriority, round-robin, least-connections, weighted, latency-optimized
    WalletPrepaid credits + provider passthroughPrepaid credits + provider passthrough
    FailoverAutoAuto
    Client-side changeNone (same OpenAI API surface)None (same Puppeteer / Playwright / CDP API surface)
    Hostedopenrouter.aibrowsergateway.com
    Self-hostedNoYes — npm install -g browser-gateway

    One connection URL

    import puppeteer from 'puppeteer-core';
    
    // Connect once. Route to Browserless, Steel, Browserbase, or your
    // self-hosted Chrome — decided at BrowserGateway's routing layer.
    const browser = await puppeteer.connect({
      browserWSEndpoint: 'wss://cdp.browsergateway.io/v1/connect?token=YOUR_TOKEN'
    });
    
    const page = await browser.newPage();
    await page.goto('https://en.wikipedia.org/');

    What's actually happening

    BrowserGateway is a byte-level router in front of your browser providers. When Puppeteer or Playwright connects, we pick which upstream to route to based on:

    • Your priority ordering
    • Real-time capacity per provider (least-connections)
    • Latency observed on the last N sessions
    • Weight (Nginx-style smooth weighted round-robin)
    • Which providers can serve the profile you asked for

    Failure on one provider fails over to the next without your code noticing. Profile state (cookies, localStorage) captures on session end and replays across providers on the next connect. Session recording captures CDP screencast frames and encodes to MP4 in the background. All of it is MIT-licensed and self-hostable.

    When you'd use BrowserGateway

    • You already pay for more than one browser provider (or want to).
    • You want to swap providers without redeploying app code.
    • You need per-tenant browser profiles that survive provider changes.
    • You need session replay for debugging agent runs.
    • You want an MIT license, not a proprietary SaaS lock-in.

    When you wouldn't

    • You're doing one-off scripts against a single Browserless account. Use their SDK directly.
    • You need built-in anti-bot / stealth as a first-class product. Bring your own residential proxy provider — we don't ship stealth.
    • You want a fully-managed browser fleet that we run for you. We route to browsers, we don't operate them.

    FAQ

    Is there an open-source OpenRouter for browsers?

    Yes. browser-gateway is MIT-licensed. npm install -g browser-gateway or docker run ghcr.io/browser-gateway/server:latest.

    How is BrowserGateway different from Browserless?

    Browserless operates browsers. BrowserGateway routes to them. We sit in front of Browserless, Steel, Browserbase, BrowserCat, browserserve, or your self-hosted Chrome — as a layer, not as a replacement.

    How is BrowserGateway different from BrowserCat?

    BrowserCat is a browser provider you connect to directly. BrowserGateway is a router that can connect to BrowserCat AND every other provider you use. Neighbouring layers of the stack; not the same product.

    Does BrowserGateway support Puppeteer and Playwright?

    Yes. Any CDP-compatible client works — the same connection URL, no library changes.

    Can I self-host the entire thing?

    Yes. The gateway is a single Docker container or npm install. Everything the hosted service does — routing, profiles, replay, MCP, REST API, dashboard — is in the OSS package.

    What does it cost?

    Free for self-host, always. Hosted at browsergateway.com is credit-based: pay-as-you-go for metered features (session recording $0.007/min, observability broadcast $0.05/1k events), free BYOK routing up to 10,000 sessions/mo.

    Related: OpenRouter (LLMs) — same shape, different domain. Providers we route to: Browserless, Steel, Browserbase, BrowserCat.