Skip to content
Built in the EU, for the EU

Browser infrastructure for AI agents. Built in the EU.

Give your agents a real browser that logs in to the supplier portals, banks and government sites your business already runs on. Credentials stay in an encrypted vault and never reach the model.

Start free Read the docs

Runs on EU infrastructure and open standards


  • OVHcloud
  • Nebius
  • Mistral AI
  • Anthropic
  • Chromium / CDP
  • MCP

5 h

Free browser time to start with. No card.

€0.08

Per browser hour, once the free tier runs out.

0

Stealth features. That one is deliberate.

24 h

Default replay retention, then it is deleted.

Connect

Change one line. Keep the script you already have.

Sessions speak the Chrome DevTools Protocol, so Playwright, Puppeteer and Selenium work unchanged. You swap the endpoint, not the code around it.

01

Swap launch() for connect()

One line. Your selectors, your assertions and your error handling all stay exactly as they are.

02

Drop in your token

Five browser hours on the free plan, no card, and nothing to install. If it does not work, you have lost ten minutes.

import { chromium } from 'playwright';
const browser = await chromium.connectOverCDP(
  `wss://browserberg.com/v1/connect?token=${process.env.BB_TOKEN}`);
const page = await browser.contexts()[0].newPage();
await page.goto('https://portal.example.de');

Your model reasons fine. The browser underneath is what fails.

Agent demos work beautifully. Then the login wants a second factor, the session drops halfway through, and a password turns up in a transcript. Those are infrastructure problems, and they are the ones we took on.

Rolling your own

  • ERROR Session dropped at the two-factor prompt
  • ERROR Password ended up in the model transcript
  • ERROR Login state lost, 40 minutes of re-auth
  • ERROR Session data processed in us-east-1

On Browserberg

  • OK Profile restored — cookies, storage, still signed in
  • OK Vault released 2 secrets straight to the page
  • OK Human finished the photoTAN step in 41 seconds
  • OK Ran in Frankfurt, deleted after 24 hours
Platform

Everything a logged-in agent needs, and nothing that helps it hide.

Sessions in seconds


Ask for a browser and get back a URL you can connect to. Locale and timezone are German by default, because that is what the sites you are automating expect to see.

A session list showing three running browser sessions in the Frankfurt region

Profiles that stay signed in


Log in once and keep it. Cookies, local storage and the whole session are encrypted per tenant and restored the next time you start.

A profile card confirming cookies, local storage and the login session have been restored

Credentials the model never sees


Put a placeholder in your script and the vault fills it in on the page itself, only on the site it belongs to. The real secret never enters a prompt, a log or a transcript.

A placeholder in code being resolved into a password field, with the secret never sent to the model

A human can take the wheel


Watch a run live, and step in when the site asks for something an agent cannot do. A single-writer lease means you and the agent are never typing at once.

A live browser view with a takeover banner while a photoTAN prompt waits

Perception that survives a redesign


Describe what you want rather than which div it lives in. Observe the page, act on it, extract structured data — and stop rewriting selectors every time marketing ships.

A page wireframe with four elements identified and labelled, beside observe, act and extract calls

Models, routed inside the EU


Two tiers behind one key: Performance for frontier models on EU endpoints with zero retention, Sovereign for European models end to end. Or bring your own key and skip it entirely.

A routing diagram from an agent through an EU inference gateway to a Performance and a Sovereign tier
Use cases

The work that lives behind a login.

Most of what a business actually needs automated has no API. It has a login, a session that expires, and a form that changes twice a year.

See all use cases

Supplier and procurement portals


A supplier portal order table with one order flagged as needing action

Read new orders, confirm deliveries and upload invoices in the portals your customers insist on. No integration project, no waiting for their IT roadmap.

await page.getByRole('button', { name: 'Bestellung bestätigen' }).click();
Orders Invoices EDI gaps

Banking and insurance


A banking export screen paused on a photoTAN prompt while it waits for a human

Pull statements, reconcile payments and check claim status. The vault handles the password and a person handles the photoTAN, so the run finishes instead of stalling.

await page.fill('#pin', '{{vault:bank-de/pin}}');
Reconciliation TOTP photoTAN

Tax, customs and e-invoicing


A government e-filing form uploading an XML invoice, three of four steps complete

File through the portals that never grew an API. Cookie banners get handled, uploads get confirmed, and every step is recorded so you can show what happened.

await page.setInputFiles('#datei', 'rechnung-2026-08.xml');
ELSTER XRechnung Customs

Marketplace back-offices


A marketplace seller dashboard with three inventory cells just updated

Keep prices and stock in step across seller dashboards, export orders, answer reviews. The sites change often; a profile that stays signed in means you only fix the step that broke.

await page.getByLabel('Bestand').fill(String(stock));
Pricing Inventory Orders

Three calls from nothing to a working agent.

A code chip showing a POST to the sessions endpoint returning a connect URL

01

Create a session

One POST returns a connect URL. Choose the locale, timezone and how long it should live, or take the German defaults.

Playwright, SDK and MCP clients connecting into one session

02

Connect what you already use

Playwright, Puppeteer, Selenium, our SDKs, or an MCP client from inside your editor. It is the same session either way.

A session viewport with a play control and a take-over button

03

Watch it, or take over

Follow the run live, step in when a site asks for something only a person can give, and replay it afterwards.

What teams say

We had a Playwright suite that worked locally and fell over in CI for a year. Moving it here was a one-line change, and the profiles fixed the re-login problem we had stopped trying to solve.
Placeholder Name Design partner — replace before launch
Our procurement team had three people re-keying orders out of portals. The agent does the reading now, and a person only steps in for the two-factor prompt.
Placeholder Name Design partner — replace before launch
Legal asked where the session data goes before they asked what the product did. Being able to answer that in one sentence is why we are here.
Placeholder Name Design partner — replace before launch

Build vs buy: what a browser fleet actually costs

The compute bill is the small number. A model for the real cost of running your own browser infrastructure, and the three cases where building wins.

Read the post

Data residency for AI agents: what reviews really ask

Region settings answer the easy question. The seven questions a European data protection review actually asks about agents, and why one is usually missed.

Read the post

From RPA to agents: what changes when the bot reads

Agents do not replace RPA, they move where the decisions live. What that changes about cost, testing and governance, and what stays exactly the same.

Read the post
FAQ

Questions people actually ask

What do I get for free?

Five browser hours, three concurrent sessions, two profiles and one vault credential, with no card. That is enough to connect a real script and see it run against a real site, which is the only test that tells you anything.

Do I have to rewrite my scripts?

No. Sessions speak the Chrome DevTools Protocol, so Playwright, Puppeteer and Selenium connect as they are. The only line that changes is the one that used to launch a local browser.

Where do sessions actually run, and what is kept?

On our own hardware in the EU. Recordings default to 24 hours and are capped at 72; after that they are deleted. Data residency here is the architecture rather than a region setting on someone else's cloud.

Do you help with bot detection?

No, and we will not. No proxy rotation, no fingerprint spoofing, no CAPTCHA solving. If you need to hide from Cloudflare, we are not your vendor. If you need auditable automation of accounts you already have, that is exactly what this is for.

How do credentials stay out of the model?

You reference a placeholder. The vault resolves it inside the browser, on the site that credential is scoped to, so the value never enters a prompt, a log or a replay. TOTP codes are generated the same way.

What happens when a site asks for a second factor?

The run pauses and you get a live view with a takeover lease. A person completes the photoTAN or TOTP step, hands control back, and the agent carries on from there.

Which languages and tools are supported?

TypeScript and Python SDKs, anything that speaks CDP, and an MCP server so a coding agent can drive a browser directly from your editor.

How is this different from Browserbase or Browserless?

They are US-operated and increasingly sell evasion. We run in the EU, refuse stealth, and put the work into the things authenticated automation actually needs: a credential vault, profiles that stay signed in, and a human who can step in. We keep an honest comparison of each of them in the library.