Managed Playwright infrastructure with stealth fingerprinting, rotating residential proxies, and a REST scraping API. Connect in one line — or just POST a URL.
import asyncio
from playwright.async_api import async_playwright
BROWSER_TOKEN = "bt_live_YOUR_TOKEN_HERE"
async def main():
async with async_playwright() as pw:
# One line change — stealth & proxy included
browser = await pw.chromium.connect(
f"wss://api.crawlops.io/ws"
f"?browser_token={BROWSER_TOKEN}&stealth=true"
)
page = await browser.new_page()
await page.goto("https://example.com")
print(await page.title())
await browser.close()
asyncio.run(main())99.9%
Uptime SLA
<100ms
P95 WS Latency
50M+
Proxy IP pool
2
Products
Two products
Both run on the same infrastructure — stealth, proxies, and analytics included.
Playwright WebSocket
wss://api.crawlops.io/ws
Connect your Playwright script directly to a managed, stealth-enabled browser. Full DevTools access — click, fill, scroll, intercept network, execute JavaScript.
HTTP Scraping API
POST /v1/scrape
POST a URL, get back HTML, extracted data, or a screenshot. No browser to manage — the gateway handles everything end-to-end.
Which one should I use?
Platform
No proxies to manage, no fingerprint tuning, no infrastructure ops. Just code.
Camoufox fingerprint randomization bypasses Cloudflare, Akamai, and DataDome. No configuration.
50M+ IPs injected per session automatically. Zero proxy management. Geographic targeting included.
Global worker pool, <100ms WebSocket latency. One line of code to connect Playwright.
Define named CSS-selector rules in JSON — get back structured data without parsing HTML.
Full-page or viewport PNG — returned as base64 from the HTTP API or captured in Playwright.
Session rate, latency percentiles, per-worker load — updating live in Grafana + your dashboard.
Chromium and Firefox workers, fully isolated browser contexts, switchable with a URL param.
Browser Tokens (bt_live_) for WebSocket. API Keys (sk_live_) for HTTP. Per-plan rate limits. Redis-backed.
Integration
Create a Browser Token
Dashboard → Browser Tokens → New Token. Copy the bt_live_... value.
Replace launch() with connect()
One line change. Pass the WebSocket URL with your token — stealth and proxy are injected automatically.
Run your existing Playwright code
Every Playwright method works. Click, fill, scroll, screenshot, evaluate — unchanged.
Watch it in the dashboard
Session count, duration, and success rate update in real time.
import asyncio
from playwright.async_api import async_playwright
BROWSER_TOKEN = "bt_live_YOUR_TOKEN_HERE"
async def main():
async with async_playwright() as pw:
# One line change — stealth & proxy included
browser = await pw.chromium.connect(
f"wss://api.crawlops.io/ws"
f"?browser_token={BROWSER_TOKEN}&stealth=true"
)
page = await browser.new_page()
await page.goto("https://example.com")
print(await page.title())
await browser.close()
asyncio.run(main())We're building the complete data extraction stack.
Describe in plain English what to extract. Our LLM generates selector rules for any page.
Define multi-step workflows in YAML — login, fill, click, extract — without writing code.
hCaptcha, reCAPTCHA v2/v3, Cloudflare Turnstile — solved transparently before your code runs.
Schedule recurring scrape jobs, define triggers, and push results to S3, Postgres, or webhooks.
Pricing
Start free. Scale as you grow. Both products included on every plan.
Starter
Pro
Enterprise
All plans include SSL, DDoS protection, and 24/7 infrastructure monitoring. · Compare plans →
Join teams using CrawlOps to power their data pipelines. Free plan includes 1,000 sessions/month and both products.
Create free account