Skip to main content
Puppeteer Cloud

Run Puppeteer Without the AWS Headaches

No more spending hours squeezing Puppeteer into a Lambda or clearing Chrome's memory leaks out of your EC2 instances. Scale your concurrency without managing infrastructure, using our Puppeteer as a Service.

Puppeteer cloud integration comparison
Write your scripts
Create your Puppeteer or Playwright automation scripts locally as you normally would.
Connect to our endpoint
Simply change your browser connection URL to point to our managed cloud infrastructure.
The platform handles the rest
We manage scaling, browser updates, memory, and all infrastructure complexity for you.

REST API Endpoints

Access powerful browser capabilities through simple HTTP requests

/content
Retrieve the fully rendered HTML of any webpage, including JavaScript-rendered content.
/scrape
Extract structured data from websites using CSS selectors.
/smart-scrape
Scrape pages with automatic fallbacks for blocked or JavaScript-heavy sites.
/screenshot
Capture full-page or viewport screenshots as PNG, JPEG, or WebP.
/pdf
Generate high-quality PDFs from any URL or HTML content with custom options.
/performance
Run Lighthouse audits for SEO, accessibility, and speed on any webpage.
/function
Run custom Puppeteer code server-side and get the result back.
/download
Retrieve files that Chrome downloads during automation.
/export
Fetch a URL and stream it back in its native content type.
/search
Search the web and optionally scrape the result pages.
/map
Discover URLs across a site or its sitemap.
/crawl
Asynchronously crawl an entire site and scrape every page.
/unblock
Bypass CAPTCHAs and bot detection to reach protected pages.

Simple Integration

Connect with Puppeteer
Connect to our cloud browsers with one line change
import puppeteer from 'puppeteer-core';

const browser = await puppeteer.connect({
  browserWSEndpoint:
    'wss://production-sfo.browserless.io?token=YOUR_API_KEY'
});

const page = await browser.newPage();
await page.goto('https://example.com');
// Your automation code...
await browser.close();
Session Management
Create a session with a TTL, then reconnect to the same session
import puppeteer from 'puppeteer-core';

// Create a session that outlives a single connection
const res = await fetch(
  'https://production-sfo.browserless.io/session?token=YOUR_API_KEY',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ ttl: 60000 }),
  }
);
const { connect } = await res.json();

// Connect, do your work, then disconnect - the session stays alive
const browser = await puppeteer.connect({ browserWSEndpoint: connect });
await browser.disconnect();

// Later, reconnect to the same session with the same URL
const browser2 = await puppeteer.connect({ browserWSEndpoint: connect });

Customer Stories

"Creating Puppeteer scripts was straightforward, but Chrome was annoying to manage with the container needing regular reboots. We found Browserless and within a few hours, everything was running smoothly."

Sebastien Rogier

Tech Lead, Semji

"Browserless helped us focus on the problem we were trying to solve, and less on scaling an automation infrastructure. Browserless's developer focused approach has been a key to us bringing our product to market."

Scott Weinert

Co-Founder & CTO, Atomic

Ready to try the benefits of Browserless?