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.
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 =newBrowserbase({ 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 screenshotsconst client =await defaultContext.newCDPSession(page);// Capture the screenshot using CDPconst{ data }=await client.send("Page.captureScreenshot",{ format:"jpeg", quality:80, fullpage:true,});// Convert base64 to buffer and saveconst buffer = Buffer.from(data,"base64");writeFileSync("screenshot.jpeg", buffer);console.log("Shutting down...");await page.close();await browser.close();})().catch((error)=>{console.error(error);});
import{ writeFileSync }from"fs";import{ chromium }from"playwright-core";import{ Browserbase }from"@browserbasehq/sdk";(async()=>{console.log("Starting remote browser...");const bb =newBrowserbase({ 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 screenshotsconst client =await defaultContext.newCDPSession(page);// Capture the screenshot using CDPconst{ data }=await client.send("Page.captureScreenshot",{ format:"jpeg", quality:80, fullpage:true,});// Convert base64 to buffer and saveconst buffer = Buffer.from(data,"base64");writeFileSync("screenshot.jpeg", buffer);console.log("Shutting down...");await page.close();await browser.close();})().catch((error)=>{console.error(error);});
from playwright.sync_api import sync_playwright, Playwrightimport osimport base64from browserbase import Browserbasedefmain(p: Playwright):print("Starting remote browser...") bb = Browserbase(api_key=os.environ["BROWSERBASE_API_KEY"]) session = bb.sessions.create(project_id=os.environ["BROWSERBASE_PROJECT_ID"]) browser = p.chromium.connect_over_cdp(session.connect_url) context = browser.new_context() page = context.new_page() page.goto("https://news.ycombinator.com/")print("Taking a screenshot using CDP!")# Create a CDP session for faster screenshots client = context.new_cdp_session(page)# Capture the screenshot using CDP screenshot_data = client.send("Page.captureScreenshot",{"format":"jpeg","quality":80,"fullpage":True})# Convert base64 to bytes and save image_data = base64.b64decode(screenshot_data['data'])withopen('screenshot.jpeg','wb')as f: f.write(image_data)print("Shutting down...") browser.close()with sync_playwright()as playwright: main(playwright)
Generate PDFs: Create PDFs from web pages using Playwright’s page.pdf() method (shown below)
Download PDFs: When a PDF is opened in the browser, it will be automatically downloaded and stored in Browserbase’s cloud storage. See the Downloads documentation for information on how to retrieve downloaded PDFs.