Integration
Connect with Playwright
Use Playwright Core to connect to a managed Browserherd Chromium session over CDP. Your existing page navigation, selectors, evaluation, and screenshot code continues to work.
Install Playwright Core
playwright-core contains the automation library without downloading local browser binaries.
TERMINAL
npm install playwright-coreConnect to Browserherd
JAVASCRIPT · PLAYWRIGHT
import { chromium } from "playwright-core";
const query = new URLSearchParams({
token: process.env.BROWSERHERD_API_KEY,
sessionTTL: "900",
region: "us-east-1",
sessionRecording: "true"
});
const browser = await chromium.connectOverCDP(
`wss://connect.browserherd.com?${query}`
);
const context = browser.contexts()[0];
const page = await context.newPage();
await page.goto("https://example.com");
console.log(await page.title());
await browser.close(); Use the first context returned by Browserherd after connecting over CDP.
PYTHON · PLAYWRIGHT
import asyncio
import os
from urllib.parse import urlencode
from playwright.async_api import async_playwright
async def main():
query = urlencode({
"token": os.environ["BROWSERHERD_API_KEY"],
"sessionTTL": 900,
"region": "us-east-1",
"sessionRecording": "true",
})
async with async_playwright() as p:
browser = await p.chromium.connect_over_cdp(
f"wss://connect.browserherd.com?{query}"
)
page = await browser.contexts[0].new_page()
await page.goto("https://example.com")
print(await page.title())
await browser.close()
asyncio.run(main())Practical examples
Navigate and extract content
JAVASCRIPT
const page = await browser.contexts()[0].newPage();
await page.goto("https://example.com", {
waitUntil: "networkidle"
});
const result = await page.evaluate(() => ({
title: document.title,
heading: document.querySelector("h1")?.textContent,
url: location.href
}));
console.log(result);Capture a screenshot
JAVASCRIPT
await page.goto("https://example.com");
await page.screenshot({
path: "example.png",
fullPage: true
});Reuse a persistent profile
Pass a Browserherd profile ID when the workflow needs approved cookies, local storage, or authenticated browser state.
JAVASCRIPT
const query = new URLSearchParams({
token: process.env.BROWSERHERD_API_KEY,
profileId: "profile_customer_demo",
sessionTTL: "1800"
});
const browser = await chromium.connectOverCDP(
`wss://connect.browserherd.com?${query}`
);Close sessions reliably
Always close the remote browser in a finally block. Usage continues while a session remains running, up to its configured TTL.
JAVASCRIPT
let browser;
try {
browser = await chromium.connectOverCDP(endpoint);
await runWorkflow(browser);
} finally {
await browser?.close();
}