Skip to main content
Gologin Cloud Browser lets you run a browser session in the cloud and control it from your automation tool (Puppeteer / Playwright) using a single connection URL.

Connection URL

Use this URL in your automation library as a remote browser endpoint:
https://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}
  • token — your Gologin dev token.
  • profileprofile ID (optional):
    • if provided, Gologin will run this profile in the cloud;
    • if omitted, Gologin will create a new profile for the session.
Note: This URL is used as a WebSocket connection endpoint by automation libraries (for example browserWSEndpoint in Puppeteer).
Generate your token in the GoLogin dashboard: Personal Area → API Token.
Screenshotat Mar0514 27 28

Managing profiles (proxy, fingerprint, etc.)

Cloud Browser is only the connection layer (remote browser session).
To create/update profiles, attach proxies, configure fingerprint, tags, and other profile settings, use the Gologin REST API:

Examples

import puppeteer from 'puppeteer-core';

const token = process.env.GL_API_TOKEN || 'your dev token here';
const profileId = 'profile ID';

const CLOUD_BROWSER_URL = `https://cloudbrowser.gologin.com/connect?token=${token}&profile=${profileId}`;
const STOP_PROFILE_URL = `https://api.gologin.com/browser/${profileId}/web`;

async function stopProfile() {
  await fetch(STOP_PROFILE_URL, {
    method: 'DELETE',
    headers: { Authorization: `Bearer ${token}` },
  });
}

async function main() {
  const response = await fetch(CLOUD_BROWSER_URL);

  if (!response.ok) {
    const errorReason = response.headers.get('X-Error-Reason');
    throw new Error(`Failed to start cloud browser: ${errorReason ?? response.statusText}`);
  }

  const browser = await puppeteer.connect({
    browserWSEndpoint: CLOUD_BROWSER_URL,
    ignoreHTTPSErrors: true,
  });

  const page = await browser.newPage();

  await page.goto('https://iphey.com/', { waitUntil: 'networkidle2' });
  const status = await page.$eval('.trustworthy:not(.hide)',
    (elt) => elt?.innerText?.trim(),
  );

  return status;
}

main().catch(console.error).finally(stopProfile);