Replace launch() with one connect line, and your Playwright or Puppeteer script runs in Gologin Cloud Browser as it is. No Chrome or Docker to update. Add a residential or mobile proxy in one API call: every run comes back signed in, from the same IP.
Free to start, no card. Residential IPs included.
The connect line is the only Gologin part; the rest is plain Playwright or Puppeteer. Every tab below ran as shown against Gologin Cloud Browser.
Sign up with Google and copy your key from the dashboard. Free, no card.
One click in the dashboard, or one API call. The profile keeps the device, the IP and the login.
Install the library and run the script below with your token and profile id. Moving your own script? Replace its launch() call with the connect line. More in the getting started guide.
npm install playwright-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node scrape.mjswss://cloudbrowser.gologin.com/connect?token=…&profile=…import { chromium } from "playwright-core";
const token = process.env.GOLOGIN_TOKEN;
const profileId = process.env.GOLOGIN_PROFILE_ID;
const endpoint = `wss://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}`;
const browser = await chromium.connectOverCDP(endpoint);
const page = await browser.contexts()[0].newPage();
await page.goto("http://quotes.toscrape.com/scroll");
await page.waitForSelector(".quote");
for (let i = 0; i < 30; i++) {
const before = await page.locator(".quote").count();
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
try {
await page.waitForFunction(
(n) => document.querySelectorAll(".quote").length > n,
before,
{ timeout: 3000 }
);
} catch {
break;
}
}
const quotes = await page.$$eval(".quote", (els) =>
els.map((el) => ({
text: el.querySelector(".text")?.textContent,
author: el.querySelector(".author")?.textContent,
}))
);
console.log(quotes.length, quotes[0]);
await page.close();
await browser.close();npm install puppeteer-coreGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id node scrape.mjswss://cloudbrowser.gologin.com/connect?token=…&profile=…import puppeteer from "puppeteer-core";
const token = process.env.GOLOGIN_TOKEN;
const profileId = process.env.GOLOGIN_PROFILE_ID;
const endpoint = `wss://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}`;
const browser = await puppeteer.connect({ browserWSEndpoint: endpoint });
const page = await browser.newPage();
await page.goto("http://quotes.toscrape.com/scroll");
await page.waitForSelector(".quote");
for (let i = 0; i < 30; i++) {
const before = await page.$$eval(".quote", (els) => els.length);
await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
try {
await page.waitForFunction(
(n) => document.querySelectorAll(".quote").length > n,
{ timeout: 3000 },
before
);
} catch {
break;
}
}
const quotes = await page.$$eval(".quote", (els) =>
els.map((el) => ({
text: el.querySelector(".text")?.textContent,
author: el.querySelector(".author")?.textContent,
}))
);
console.log(quotes.length, quotes[0]);
await page.close();
await browser.disconnect();pip install playwrightGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id python scrape.pywss://cloudbrowser.gologin.com/connect?token=…&profile=…import os
from playwright.sync_api import sync_playwright, TimeoutError as PlaywrightTimeoutError
token = os.environ["GOLOGIN_TOKEN"]
profile_id = os.environ["GOLOGIN_PROFILE_ID"]
endpoint = f"wss://cloudbrowser.gologin.com/connect?token={token}&profile={profile_id}"
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(endpoint)
page = browser.contexts[0].new_page()
page.goto("http://quotes.toscrape.com/scroll")
page.wait_for_selector(".quote")
for _ in range(30):
before = page.locator(".quote").count()
page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
try:
page.wait_for_function(
"n => document.querySelectorAll('.quote').length > n",
arg=before,
timeout=3000,
)
except PlaywrightTimeoutError:
break
quotes = page.eval_on_selector_all(
".quote",
"els => els.map(el => ({text: el.querySelector('.text')?.textContent, author: el.querySelector('.author')?.textContent}))",
)
print(len(quotes), quotes[0])
page.close()
browser.close()npm install playwrightGOLOGIN_TOKEN=your_token GOLOGIN_PROFILE_ID=your_profile_id npx playwright testwss://cloudbrowser.gologin.com/connect?token=…&profile=…import { chromium, expect, test as base } from "playwright/test";
const endpoint = `wss://cloudbrowser.gologin.com/connect?token=${process.env.GOLOGIN_TOKEN}&profile=${process.env.GOLOGIN_PROFILE_ID}`;
const test = base.extend({
browser: [
async ({}, use) => {
const browser = await chromium.connectOverCDP(endpoint);
await use(browser);
await browser.close();
},
{ scope: "worker" },
],
});
test("quotes load in Gologin Cloud Browser", async ({ page }) => {
await page.goto("http://quotes.toscrape.com/");
await expect(page.locator(".quote").first()).toBeVisible();
});
test("the next page loads too", async ({ page }) => {
await page.goto("http://quotes.toscrape.com/page/2/");
await expect(page.locator(".quote")).toHaveCount(10);
});Pick the library your team already knows. The cloud browser and the connect address are the same for both.
From Microsoft, for Node.js, Python, Java and .NET. Waits for elements on its own and comes with its own test runner. On Gologin: install playwright-core and connect with chromium.connectOverCDP.
From the Chrome team, for Node.js. A smaller library that speaks the Chrome DevTools Protocol directly. On Gologin: install puppeteer-core and connect with puppeteer.connect.
Ready to try your library? Get an API key and follow the getting started guide.
Wherever the script runs today, the move is the connect line. Here is what else you can drop.
Drop the browser image. Install the library without a browser and connect.
No Chromium layer in the package. The function opens one WebSocket.
Add one fixture, as in the Playwright Test tab. The tests stay as they are.
Swap the address for the Gologin connect line. Add a proxy in one API call.
Every plan runs the same browser, with residential IPs included. Plans differ in browser hours and parallel sessions.
$0
No card needed
$4.50/ month
For individual developers
$8/ month
For growing teams
$14/ month
For critical operations
Need more at once? Add parallel sessions to any plan for $2 a month each, as many as you need. Proxy traffic beyond your allowance is $1/GB.
From 4 parallel sessions, with a dedicated account manager, a premium SLA and tailored onboarding.
One account, one proxy network, one ecosystem. Pick the product the job needs.
Both run on Gologin Cloud Browser with the same connect line, so pick the one your team knows. Playwright covers more languages and has its own test runner; Puppeteer is the smaller Node.js library from the Chrome team. On your own machine Playwright also drives Firefox and WebKit; in the cloud both drive the same Chromium-based browser.
Playwright uses chromium.connectOverCDP, Python Playwright uses connect_over_cdp, Puppeteer uses puppeteer.connect with browserWSEndpoint. All three point at wss://cloudbrowser.gologin.com/connect with your token and profile id. The rest of the script stays the same. Collecting data from pages that load as you scroll? See Dynamic scraping.
No. Install playwright-core or puppeteer-core, which come without a browser, and connect to the cloud. There is no Chrome version to pin, no Docker image to rebuild and no browser dependencies on your servers. See Headless browser API.
Yes. The login lives in the profile. Connect with the same profile id and open pages in the profile's own window, browser.contexts()[0] in Playwright, as the scripts above do: the next run starts signed in, from the same residential IP. A page from browser.newPage() opens in a fresh window without that login. Need to finish a 2FA step by hand? See Cloud Browser UI.
Yes. Add a fixture that connects the browser with connectOverCDP, as in the Playwright Test tab above, and every test runs in Gologin Cloud Browser. The tests and their assertions stay as they are, and npx playwright test runs them as before.
One on the free tier and on Professional, 2 on Business, 3 on Enterprise, from 4 on Custom. Add more to any plan for $2 a month each. Each parallel session is one connected browser.
Connect Playwright or Puppeteer to Gologin Cloud Browser and run it with a residential IP and a login that stays.
Free to start, no card. Residential IPs included.