Skip to content

Puppeteer Guide

Fresh

Connect Puppeteer to Steel for managed browser sessions with proxy, CAPTCHA solving, and session recording.

Method 1: One-Line Change (Easiest)

Replace your existing Puppeteer launch with a Steel connection:

typescript
// Before - local browser
const browser = await puppeteer.launch({...});

// After - Steel managed browser
const browser = await puppeteer.connect({
  browserWSEndpoint: 'wss://connect.steel.dev?apiKey=MY_STEEL_API_KEY',
});

Session auto-releases when browser.close(), browser.disconnect(), or the connection ends.

Custom Session ID

Append &sessionId=<UUIDv4> to set a custom session ID for later retrieval:

wss://connect.steel.dev?apiKey=KEY&sessionId=550e8400-e29b-41d4-a716-446655440000

Method 2: Create and Connect

Use when you need proxy, CAPTCHA solving, or other advanced features:

typescript
import Steel from 'steel-sdk';
import puppeteer from 'puppeteer';

const client = new Steel({ steelAPIKey: process.env.STEEL_API_KEY });

async function main() {
  // Create session with features
  const session = await client.sessions.create({
    useProxy: true,
    solveCaptcha: true,
  });

  // Connect Puppeteer
  const browser = await puppeteer.connect({
    browserWSEndpoint: `wss://connect.steel.dev?apiKey=${process.env.STEEL_API_KEY}&sessionId=${session.id}`,
  });

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

  // Cleanup
  await browser.close();
  await client.sessions.release(session.id);
}

main();

Always Release Sessions

With Method 2, always call client.sessions.release() when finished to avoid orphaned sessions consuming your quota.

Verification Checklist

  • [ ] Install dependencies: npm install puppeteer steel-sdk
  • [ ] Set STEEL_API_KEY environment variable
  • [ ] Test basic connection with Method 1
  • [ ] Upgrade to Method 2 if advanced features needed
  • [ ] Confirm session releases after each run

SOP Documentation Hub - Built from Steel.dev Official Docs