When you navigate to a PDF URL, Browserbase automatically downloads the PDF and cancels the navigation. Browserbase stores the file in cloud storage for later retrieval.
Node.js
Python
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(); const browser = await chromium.connectOverCDP(session.connectUrl); const defaultContext = browser.contexts()[0]; const page = defaultContext.pages()[0]; // Configure download behavior const client = await defaultContext.newCDPSession(page); await client.send("Browser.setDownloadBehavior", { behavior: "allow", downloadPath: "downloads", eventsEnabled: true, }); // Navigate to PDF and trigger download console.log("Attempting to download PDF..."); const [download] = await Promise.all([ page.waitForEvent("download"), page.goto("https://constitutioncenter.org/media/files/constitution.pdf").catch(() => { console.log("Navigation cancelled due to download (expected behavior)"); }) ]); let downloadError = await download.failure(); if (downloadError !== null) { console.log("Error happened on download:", downloadError); throw new Error(downloadError); } console.log("PDF download completed successfully"); console.log("Shutting down..."); await page.close(); await browser.close();})().catch((error) => { console.error(error);});
from playwright.sync_api import sync_playwright, Playwrightimport osfrom browserbase import Browserbasedef main(p: Playwright): print("Starting remote browser...") bb = Browserbase(api_key=os.environ["BROWSERBASE_API_KEY"]) session = bb.sessions.create() browser = p.chromium.connect_over_cdp(session.connect_url) context = browser.contexts[0] page = context.pages[0] # Configure download behavior client = context.new_cdp_session(page) client.send("Browser.setDownloadBehavior", { "behavior": "allow", "downloadPath": "downloads", "eventsEnabled": True, }) print("Attempting to download PDF...") # Set up download handling and navigate to PDF with page.expect_download() as download_info: try: page.goto("https://constitutioncenter.org/media/files/constitution.pdf") except Exception: print("Navigation cancelled due to download (expected behavior)") download = download_info.value # Check for download errors if download.failure(): print(f"Error happened on download: {download.failure()}") raise Exception(download.failure()) print("PDF download completed successfully") print("Shutting down...") page.close() browser.close()with sync_playwright() as playwright: main(playwright)
Retrieve the downloaded PDF from Browserbase’s cloud storage. See Downloads for details on accessing your files.