browse websites, open a browser, automate a website, navigate to a URL, click buttons, fill forms, and scrape pages using kernel cloud browsers with playwright and CDP.
browse websites, open a browser, automate a website, navigate to a URL, click buttons, fill forms, and scrape pages using kernel cloud browsers with playwright and CDP.
browser automation with kernel
kernel spins up sandboxed cloud browsers in <30ms. connect via CDP with playwright, puppeteer, or any CDP-compatible library.
stealth mode automatically adds a recaptcha solver and residential proxy to your browsers. use it when accessing sites with bot detection (cloudflare, datadome, perimeterx, etc.).
for stronger anti-detection, combine stealth with a dedicated residential or ISP proxy:
proxy quality for bot detection avoidance, best to worst: mobile > residential > ISP > datacenter.
managed auth
managed auth is a standardized way for agents to log in and stay logged in across the internet. kernel securely stores credentials, re-authenticates as needed, and manages authenticated browser sessions.
browser profiles
profiles persist cookies, localStorage, and session data across browser sessions. use them for sites requiring login.
for simple one-off scripts, use execute_playwright_code instead of the full SDK connection. runs playwright/typescript directly against a browser — no local playwright installation needed.
pre-warm browsers for instant acquisition. useful for high-throughput scraping or latency-sensitive workflows.
// create a pool of 5 stealth browsersconst pool = await kernel.pools.create({
name: "scraping-pool",
size: 5,
stealth: true,
});
// acquire a browser instantly (already running)const browser = await kernel.pools.acquire(pool.id);
// use it...const pw = await chromium.connectOverCDP(browser.cdp_ws_url);
// release back to pool when done (browser gets recycled)await kernel.pools.release(pool.id, browser.session_id);
computer use (CUA)
control browsers at the OS level — mouse clicks, keyboard input, screenshots. useful for computer-use agents (anthropic, openai).
// take a screenshotconst screenshot = await kernel.computer.captureScreenshot(browser.session_id);
// click at coordinatesawait kernel.computer.clickMouse(browser.session_id, { x: 100, y: 200 });
// type textawait kernel.computer.typeText(browser.session_id, { text: "hello world" });
// press keysawait kernel.computer.pressKey(browser.session_id, { keys: ["Return"] });
live view
you can view sessions live and record them as mp4s for debugging. live view lets you watch browsers in real time to resolve errors or take human-in-the-loop approval steps.
cleanup
always delete browsers when done. use try/finally to ensure cleanup on errors. set timeout_seconds as a safety net — abandoned browsers auto-delete after the timeout.