Dashboard

Puppeteer

Connect Puppeteer to a Scrayle cloud browser for headless Chrome automation.

Prerequisites

npm install puppeteer-core @scrayle/sdk

Use puppeteer-core (not puppeteer) since Scrayle provides the browser remotely.

Basic Usage

import puppeteer from 'puppeteer-core';
import { Puppeteer } from '@scrayle/sdk';

// Create a cloud browser session
const { browserWSEndpoint } = await Puppeteer.connect({
  config: { apiKey: process.env.SCRAYLE_API_KEY, scrayleHub: 'eu' }, // 'eu' | 'us' | 'asia'
  proxyCountry: 'US',
});

// Connect Puppeteer to the cloud browser
const browser = await puppeteer.connect({ browserWSEndpoint });

const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close();

With Proxy and Profile

const { browserWSEndpoint } = await Puppeteer.connect({
  config: { apiKey: process.env.SCRAYLE_API_KEY },
  proxyCountry: 'DE',
  profileId: 'my-german-profile',
  profilePersist: true,
  sessionTTL: 600,
  defaultViewport: { width: 1920, height: 1080 },
});

const browser = await puppeteer.connect({ browserWSEndpoint });
const page = await browser.newPage();
await page.goto('https://example.de');
// ...
await browser.close();

Taking Screenshots

const { browserWSEndpoint } = await Puppeteer.connect({
  config: { apiKey: process.env.SCRAYLE_API_KEY },
});
const browser = await puppeteer.connect({ browserWSEndpoint });
const page = await browser.newPage();

await page.goto('https://example.com');
const screenshot = await page.screenshot({ type: 'png' });
require('fs').writeFileSync('screenshot.png', screenshot);

await browser.close();

Session Options

All options from ICreateBrowser are supported. See the Overview for the full options table.

Async Creation

const { browserWSEndpoint } = await Puppeteer.connectAsync({
  config: { apiKey: process.env.SCRAYLE_API_KEY },
  proxyCountry: 'US',
});