Migrate from Browserless to BrowserForHire in one line
Swap one connect URL, keep your Puppeteer or Playwright code, and cut your bill 40–60%. Step-by-step migration guide with a CLI helper.
Why teams migrate
The most common reasons developers move off Browserless are:
- Time-based billing units balloon costs. Browserless charges per 30-second block of browser time. A single slow Cloudflare-protected page that hangs on a Turnstile challenge can burn 4–6 units. Multiply by 100k pages a month and your "$200 starter" plan turns into a $1,200 invoice.
- Premium-domain surcharges show up after the fact. Several sites get flagged as "premium" and burn extra credits. The list isn't published, so your invoice surprises you.
- Anti-bot success rate degrades silently. Browserless's stealth stack is good, but when antibot vendors update their detection logic, your success rate drops without warning. You only find out when your scraper starts returning empty pages.
- Self-hosting requires a paid license. The Docker image is open source but using it commercially needs a license.
What changes when you migrate
Almost nothing in your code. We speak the same Chrome DevTools Protocol over WebSocket as Browserless does. The migration is literally one line:
- const browser = await chromium.connectOverCDP('wss://chrome.browserless.io?token=' + BROWSERLESS_TOKEN)
+ const browser = await chromium.connectOverCDP('wss://cloud.browserforhire.com?token=' + BFH_TOKEN)For Puppeteer:
- const browser = await puppeteer.connect({ browserWSEndpoint: 'wss://chrome.browserless.io?token=' + BROWSERLESS_TOKEN })
+ const browser = await puppeteer.connect({ browserWSEndpoint: 'wss://cloud.browserforhire.com?token=' + BFH_TOKEN })The REST endpoints (/screenshot, /pdf, /content, /scrape) accept the same shape of payload. Drop https://chrome.browserless.io for https://api.browserforhire.com and you're done.
What gets better
- Per-request billing. One credit per successful request, up to 30 seconds. Long sessions are still metered, but slow pages don't double-bill on every retry.
- Multi-vendor anti-bot. When one engine degrades, traffic reroutes within 15 minutes. Public weekly success-rate dashboard at /benchmarks.
- Free OSS self-host. Apache-2.0 Docker image. No license fee.
- MCP server out of the box. Plug an LLM straight into a real Chrome.
CLI helper
We ship @browserforhire/cli. Install it and run:
npx @browserforhire/cli migrate-from-browserless ./srcIt scans your codebase for chrome.browserless.io URLs and prints a diff. Apply the diff and you're migrated.
Cost calculator
Paste your last month's Browserless invoice into our calculator at /tools/migrate-calculator. Most teams see a 40–60% reduction.
Next steps
- Get your free 1,000 credits at /signup.
- Read the API docs for the differences in our anti-bot escalation logic.
- Join our Slack for migration help.