✓ Verified 🌐 Web Scrapers ✓ Enhanced Data

Browser Ladder

Climb the browser ladder — start free, escalate.

Rating
4.4 (360 reviews)
Downloads
40,095 downloads
Version
1.0.0

Overview

Climb the browser ladder — start free, escalate.

Complete Documentation

View Source →

Browser Ladder 🪜

Climb from free to paid only when you need to.

Quick Setup

Run the setup script after installation:

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

Or manually add to your .env:

bash
# 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

text
┌─────────────────────────────────────────────┐
│  🪜 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

SituationRungWhy
Static HTML, APIs1No JS needed
React/Vue/SPA apps2JS rendering
Docker unavailable3Cloud fallback
CAPTCHA/Cloudflare4Bot bypass needed
OAuth/MFA flows4Complex auth

Decision Flow

text
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

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

Rung 2: JS-rendered page

bash
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)

javascript
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)

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

Cost Optimization

  • Start low — Always try Rung 1 first
  • Cache results — Don't re-fetch unnecessarily
  • Batch requests — One browser session for multiple pages
  • Check success — Only climb if lower rung fails

Get Your Keys

ServiceCostSign Up
BrowserCatFree tierhttps://browsercat.com
Browserless.io$10+/mohttps://browserless.io
Both are optional — Rungs 1-2 work without any API keys.

Installation

Terminal bash

openclaw install browser-ladder
    
Copied!

💻Code Examples

Or manually add to your `.env`:

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

Start at the bottom. Climb only when needed.

start-at-the-bottom-climb-only-when-needed.txt
## 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

Rung 4 (Browserless.io) ──▶ DONE

-rung-4-browserlessio--done.txt
## Usage Examples

### Rung 1: Static content
example.txt
┌─────────────────────────────────────────────┐
│  🪜 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.
example.txt
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
example.js
const { chromium } = require('playwright');
const browser = await chromium.connect('wss://api.browsercat.com/connect', {
  headers: { 'Api-Key': process.env.BROWSERCAT_API_KEY }
});
example.js
const { chromium } = require('playwright');
const browser = await chromium.connectOverCDP(
  `wss://production-sfo.browserless.io?token=${process.env.BROWSERLESS_TOKEN}`
);
// CAPTCHA handled automatically

Tags

#browser_and-automation #cli

Quick Info

Category Web Scrapers
Model Claude 3.5
Complexity One-Click
Author ktpriyatham
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install browser-ladder