Swap launch() for connect()
Add your API key and run. That's the whole change.
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://cdp-lb.axiom.ai/?token=${KEY}`
});
Point puppeteer.connect at our WebSocket and the script you already wrote runs on fresh cloud Chrome. You manage your script. We manage Chrome.
1import puppeteer from "puppeteer";2 3const browser = await puppeteer.connect({4 browserWSEndpoint:5 `wss://cdp-lb.axiom.ai/?token=${process.env.AXIOM_API_KEY}`6});7 8try {9 const page = await browser.newPage();10 await page.goto("https://example.com");11 await page.screenshot({ path: "out.png", fullPage: true });12} finally {13 await browser.close();14}15 The switch
Your script connects to a browser in our cloud instead of launching its own. Nothing else changes.
Explore the Chrome APIAdd your API key and run. That's the whole change.
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://cdp-lb.axiom.ai/?token=${KEY}`
});
Every session gets current cloud Chrome. Nothing to download in CI, nothing to rebuild when Chromium updates.
Up to 20 concurrent sessions in the cloud, unlimited on desktop, and more on request. Parallel work means more connections, not more servers, and runtime only meters while a session is open.
See infrastructureEach cloud session gets its own server with a private Docker container, desktop runs never leave your machine, and we never train AI on anything that passes through either.
Also available
The browser you connected to also takes Step API calls, functions from the engine behind our No-Code Tool. One call scrapes a paginated list, solves a captcha, or walks a date picker, using the selectors you already have.
Explore the Step API1await axiom.browserOpen();2try {3 await axiom.goto("https://example.com/login");4 await axiom.enterText("#email", "user@example.com");5 await axiom.enterText("#password", process.env.PW);6 await axiom.click("button[type=submit]");7 await axiom.wait(2000);8 const rows = await axiom.scrape(null, { hierarchy: ".product-card" }, null, 50, {});9} finally {10 await axiom.browserClose();11}12 1await axiom.goto("https://example.com/apply");2await axiom.enterText("#full-name", row.name);3await axiom.selectList("#country", row.country);4await axiom.click("button[type=submit]");5 1const [[title], [description]] = await axiom.scrapeMetadata([2 { id: "general_metadata_title" },3 { id: "meta_description", value: 'meta[name="description"]' }4]);5const verdict = await axiom.integrateAI({6 aiFunction: "generate",7 prompt: `Product page or category page? ${title} ${description}`8});9 1const targets = await db.query("SELECT url FROM watchlist");2await axiom.browserOpen();3try {4 for (const { url } of targets) {5 await axiom.goto(url);6 const [[price]] = await axiom.scrape(null, { hierarchy: ".price" }, null, 1, {});7 if (Number(price) < 100) await notifySlack(url, price);8 }9} finally {10 await axiom.browserClose();11}12 Get an API key and try the Chrome API for free.
2 free hours of runtime. No card required.