Spider Browser gives you real Chrome sessions over a WebSocket. Connect with Playwright's connectOverCDP(), Puppeteer's connect(), or the spider-browser TypeScript library which adds AI extraction and natural language actions on top.

It scores highest on stealth benchmarks, starts sessions in under a second, and costs less per session than alternatives. See the benchmarks.

What you get

  • Passes all major bot detection suites
  • Real fingerprints, not headless spoofing
  • AI extraction and actions via natural language
  • CDP and WebDriver BiDi protocols
  • 100 concurrent sessions per user on all plans
  • Residential proxies across 199+ countries
  • Session recording and replay from the dashboard
  • Built-in retry engine that recovers failed sessions

Connection

Endpoint

wss://browser.spider.cloud/v1/browser

Auth

?token=YOUR-API-KEY

Protocols

CDPWebDriver BiDi

Session parameters

Append these as query params to the WebSocket URL.

stealthStealth level. Higher values use more aggressive fingerprinting.
browserBrowser backend: chrome, firefox, or auto.
countryTwo-letter country code for proxy geo-routing.

spider-browser on npm · GitHub · Benchmarks · Session recordings

AI extract and act
import { SpiderBrowser } from "spider-browser"

const browser = new SpiderBrowser({
  apiKey: process.env.SPIDER_API_KEY!,
})
await browser.init()
await browser.page.goto("https://example.com")

// extract structured data with AI
const prices = await browser.extract("Get all product prices")

// perform actions with natural language
await browser.act("Add the cheapest item to the cart")

// take a screenshot
const screenshot = await browser.page.screenshot()

await browser.close()
Scrape and interact
import { SpiderBrowser } from "spider-browser"

const browser = new SpiderBrowser({
  apiKey: process.env.SPIDER_API_KEY!,
})
await browser.init()

// navigate and interact with the page
await browser.page.goto("https://example.com/search")
await browser.page.fill("input[name=q]", "web scraping")
await browser.page.press("Enter")
await browser.page.waitForSelector(".results")

// extract structured fields from the DOM
const data = await browser.page.extractFields({
  title: "h1",
  description: ".description",
  image: { selector: "img.hero", attribute: "src" },
})

await browser.close()
Session recording
import { SpiderBrowser } from "spider-browser"

// Enable session recording — replay later in the dashboard
const browser = new SpiderBrowser({
  apiKey: process.env.SPIDER_API_KEY!,
  record: true, // screencast + interaction capture
})
await browser.init()

await browser.page.goto("https://example.com")
await browser.act("Click the login button")
await browser.act("Fill in the email field with test@example.com")

// Recording is automatically saved when the session ends
await browser.close()
// View recordings at spider.cloud/account/recordings