Retrieve webpage content without spinning up a full browser session
Fetch lets you grab the content of any URL through Browserbase’s infrastructure without creating a browser session. It’s ideal for quick page retrievals where you don’t need interactivity — just the content.Requests are routed through Browserbase with a real browser User-Agent by default, and you can optionally configure custom headers, proxies, redirects, and SSL behavior.
Fetch retrieves the raw HTTP response and doesn’t execute JavaScript. It also has a 1 MB content limit. For pages that require JavaScript rendering or are larger than 1 MB, use a browser session instead.
Fetch returns structured errors when something goes wrong.
Content too large (502)
If the response body exceeds 1 MB, you’ll receive a 502 error:
{ "statusCode": 502, "error": "Bad Gateway", "message": "The response body exceeded the maximum allowed size of 1MB. Use a browser session to handle large responses."}
To handle this, catch the error and fall back to a browser session:
Node.js
Python
SDK
import Browserbase from "@browserbasehq/sdk";import { chromium } from "playwright-core";const bb = new Browserbase({ apiKey: process.env.BROWSERBASE_API_KEY! });try { const response = await bb.fetchAPI.create({ url: "https://httpbin.org/", }); console.log(response.content);} catch (err: any) { if (err?.statusCode === 502) { // Fall back to a full browser session for large pages const session = await bb.sessions.create(); const browser = await chromium.connectOverCDP(session.connectUrl); const page = browser.contexts()[0].pages()[0]; await page.goto("https://httpbin.org/"); const content = await page.content(); console.log(content); await browser.close(); }}
SDK
from browserbase import Browserbasefrom playwright.sync_api import sync_playwrightimport osbb = Browserbase(api_key=os.environ["BROWSERBASE_API_KEY"])try: response = bb.fetch_api.create(url="https://httpbin.org/") print(response.content)except Exception as err: if getattr(err, "status_code", None) == 502: # Fall back to a full browser session for large pages session = bb.sessions.create() with sync_playwright() as p: browser = p.chromium.connect_over_cdp(session.connect_url) page = browser.contexts[0].pages[0] page.goto("https://httpbin.org/") print(page.content()) browser.close()
Gateway Timeout (504)
The target page must respond within 10 seconds. If it takes longer, you’ll receive a timeout error:
{ "statusCode": 504, "error": "Gateway Timeout", "message": "The requested content took more than 10 seconds to fetch. Please try again or use a browser session for complex pages."}
If you consistently hit this timeout, consider using a browser session instead — browser sessions support long-running page loads and JavaScript-heavy content.
SSL Error (502)
If the target site has a TLS certificate issue (self-signed, expired, etc.), you’ll see an SSL error:
{ "statusCode": 502, "error": "SSL Error", "message": "TLS certificate verification failed; to bypass certificate verification, set the allowInsecureSsl option in your request"}
To resolve this, set allowInsecureSsl to true in your request:
Only enable allowInsecureSsl when you trust the target site. Disabling certificate verification removes a layer of protection against man-in-the-middle attacks.
Content size: 1 MB maximum. Responses exceeding this limit return a 502 error. See Content Too Large for how to detect and fall back to a browser session.
Timeout: 10 seconds. Pages that take longer to respond will return a 504 error.
No JavaScript execution: Fetch retrieves the raw HTTP response. For pages that require JavaScript rendering, use a browser session.