Skip to main content
Browserbase enables screen view and full-screen screenshots using your desired browser automation framework. For optimal performance, we recommend using CDP (Chrome DevTools Protocol) sessions to capture screenshots, as this method is significantly faster than standard approaches.

Take a Screenshot

First, create a browser session and connect to it using your preferred framework. Then you can take a screenshot using CDP sessions for the best performance:
import { writeFileSync } from "fs";
import { chromium } from "playwright-core";
import { Browserbase } from "@browserbasehq/sdk";

(async () => {
  console.log("Starting remote browser...");
  const bb = new Browserbase({ apiKey: process.env.BROWSERBASE_API_KEY });
  const session = await bb.sessions.create({
    projectId: process.env.BROWSERBASE_PROJECT_ID,
  });

  const browser = await chromium.connectOverCDP(session.connectUrl);
  const defaultContext = browser.contexts()[0];
  const page = defaultContext.pages()[0];

  await page.goto("https://news.ycombinator.com");

  console.log("Taking a screenshot using CDP...");

  // Create a CDP session for faster screenshots
  const client = await defaultContext.newCDPSession(page);

  // Capture the screenshot using CDP
  const { data } = await client.send("Page.captureScreenshot", {
    format: "jpeg",
    quality: 80,
    fullpage: true,
  });

  // Convert base64 to buffer and save
  const buffer = Buffer.from(data, "base64");
  writeFileSync("screenshot.jpeg", buffer);

  console.log("Shutting down...");
  await page.close();
  await browser.close();
})().catch((error) => {
  console.error(error);
});

CDP Screenshot Reference

Just the CDP screenshot code:
// Create CDP session
const client = await defaultContext.newCDPSession(page);

// Capture screenshot
const { data } = await client.send("Page.captureScreenshot", {
  format: "jpeg",
  quality: 80,
  fullpage: true,
});

// Save
const buffer = Buffer.from(data, "base64");
writeFileSync("screenshot.jpeg", buffer);

Why use CDP for screenshots?

Using CDP (Chrome DevTools Protocol) for taking screenshots offers several advantages:
  1. Performance: CDP screenshots are significantly faster than traditional methods
  2. Memory Efficiency: Uses less memory as it directly communicates with the browser’s debugging protocol
  3. Quality Control: Provides more control over image quality and format settings
  4. Reliability: More stable for full-page screenshots of complex web applications
For most use cases, we recommend using the CDP approach shown above rather than the standard screenshot methods.