← Back to Browser & Automation
Browser & Automation by @ktpriyatham

browser-ladder

Climb the browser ladder β€” start free, escalate only

0
Source Code

Browser Ladder πŸͺœ

Climb from free to paid only when you need to.

Quick Setup

Run the setup script after installation:

./skills/browser-ladder/scripts/setup.sh

Or manually add to your .env:

# Optional - only needed for Rungs 3-4
BROWSERCAT_API_KEY=your-key    # Free: https://browsercat.com
BROWSERLESS_TOKEN=your-token   # Paid: https://browserless.io

The Ladder

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  πŸͺœ Rung 4: Browserless.io (Cloud Paid)     β”‚
β”‚  β€’ CAPTCHA solving, bot detection bypass    β”‚
β”‚  β€’ Cost: $10+/mo                            β”‚
β”‚  β€’ Requires: BROWSERLESS_TOKEN              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  πŸͺœ Rung 3: BrowserCat (Cloud Free)         β”‚
β”‚  β€’ When local Docker fails                  β”‚
β”‚  β€’ Cost: FREE (limited)                     β”‚
β”‚  β€’ Requires: BROWSERCAT_API_KEY             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  πŸͺœ Rung 2: Playwright Docker (Local)       β”‚
β”‚  β€’ JavaScript rendering, screenshots        β”‚
β”‚  β€’ Cost: FREE (CPU only)                    β”‚
β”‚  β€’ Requires: Docker installed               β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  πŸͺœ Rung 1: web_fetch (No browser)          β”‚
β”‚  β€’ Static pages, APIs, simple HTML          β”‚
β”‚  β€’ Cost: FREE                               β”‚
β”‚  β€’ Requires: Nothing                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Start at the bottom. Climb only when needed.

When to Climb

Situation Rung Why
Static HTML, APIs 1 No JS needed
React/Vue/SPA apps 2 JS rendering
Docker unavailable 3 Cloud fallback
CAPTCHA/Cloudflare 4 Bot bypass needed
OAuth/MFA flows 4 Complex auth

Decision Flow

Need to access a URL
         β”‚
         β–Ό
    Static content? ──YES──▢ Rung 1 (web_fetch)
         β”‚ NO
         β–Ό
    JS rendering only? ──YES──▢ Rung 2 (Playwright Docker)
         β”‚ NO                        β”‚
         β”‚                     Success? ──NO──▢ Rung 3
         β–Ό                           β”‚ YES
    CAPTCHA/bot detection? ────────────────────▢ DONE
         β”‚ YES
         β–Ό
    Rung 4 (Browserless.io) ──▢ DONE

Usage Examples

Rung 1: Static content

// Built into Clawdbot
const content = await web_fetch("https://example.com");

Rung 2: JS-rendered page

docker run --rm -v /tmp:/output mcr.microsoft.com/playwright:v1.58.0-jammy \
  npx playwright screenshot https://spa-app.com /output/shot.png

Rung 3: Cloud browser (BrowserCat)

const { chromium } = require('playwright');
const browser = await chromium.connect('wss://api.browsercat.com/connect', {
  headers: { 'Api-Key': process.env.BROWSERCAT_API_KEY }
});

Rung 4: CAPTCHA bypass (Browserless)

const { chromium } = require('playwright');
const browser = await chromium.connectOverCDP(
  `wss://production-sfo.browserless.io?token=${process.env.BROWSERLESS_TOKEN}`
);
// CAPTCHA handled automatically

Cost Optimization

  1. Start low β€” Always try Rung 1 first
  2. Cache results β€” Don't re-fetch unnecessarily
  3. Batch requests β€” One browser session for multiple pages
  4. Check success β€” Only climb if lower rung fails

Get Your Keys

Service Cost Sign Up
BrowserCat Free tier https://browsercat.com
Browserless.io $10+/mo https://browserless.io

Both are optional β€” Rungs 1-2 work without any API keys.