Smart routing for browser agents
Browser agents, routed to win.
One request. Smart routing picks the runner most likely to succeed on your domain — and races fallbacks the moment anything blocks.
$10 trial credits · pay per run · no seats
One call. Every runner.
POST /api/v1/responses once. Banana Peel routes across Browserbase, Steel, Skyvern, and the rest — one key, one bill.
Routing that learns.
Smart mode starts with the runner that last won on your domain, then updates the scoreboard on every run.
Fallback in parallel.
A block doesn't queue retries — it races two or three runners at once. First success wins; every attempt shows up on the receipt.
The network
Works with 250+ runner combinations.
50+ single runners — hosted agents, browser infrastructure providers, and open-source frameworks — exposed as 250+ routable combinations behind one API.
Quickstart
One request. Structured result.
Set BANANA_PEEL_API_KEY and call POST /api/v1/responses with routing: smart.
$ curl -s https://bananapeel.com/api/v1/responses \ -H "Authorization: Bearer $BANANA_PEEL_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "banana-peel", "input": "Extract the title from https://example.com", "routing": "smart" }'{ "status": "completed", "output_text": "Example Domain", "banana_peel": { "runner": "browserbase", "routing": "smart", "attempts": 1, "cost_usd": 0.011 } }
The routing layer
Built for agents. Engineered like infrastructure.
POST /api/v1/responses with a routing mode — smart, a named runner, a category, or a short list. One key, one bill, every engine.
Every run updates a per-domain scoreboard. routing: smart exploits the last runner that succeeded on your domain and re-explores when the picture changes.
When a run blocks, Banana Peel races two or three runners at once. First success wins; you see every attempt on the receipt.
Every response carries its receipts — screenshots, artifacts, session details, per-attempt costs — so you can audit what ran and why.
How smart routing works
The router does the remembering, so your code doesn't.
Exploit what works
routing: smart starts with the runner that last succeeded on your domain. No cold guesses — the first attempt is already informed.
Learn from every run
Each success, failure, and block updates a live runner-by-domain scoreboard. The router gets sharper with every task that flows through it.
Race the fallback
A blocked run doesn't retry in line — it fans out to two or three runners in parallel. First success wins, and every attempt is itemized on your receipt.
The scoreboard is public. Runner benchmark, straight from live traffic.
Drop-in wrappers
Keep your client. Change the key.
Point Browserbase, Steel, Browser Use, Skyvern, or Hyperbrowser at Banana Peel with a bp_live_… key. Tasks get smart routing across all runners by default (pin your old provider only if you want parity). In-repo TypeScript shims mirror familiar methods; new code should start with /api/v1/responses.
@bananapeel/browserbase
Browserbase migration guideimport Browserbase from "@browserbasehq/sdk"; const bb = new Browserbase({- apiKey: process.env.BROWSERBASE_API_KEY,+ apiKey: process.env.BANANA_PEEL_API_KEY, // bp_live_…+ baseURL: process.env.BANANA_PEEL_BASE + "/api",}); const session = await bb.sessions.create({- projectId: "your_project_id",+ // projectId optional — stripped server-side});// session.connectUrl → real Browserbase CDP (proxied)
Pricing
Pay per run. Never per seat.
Start with $10 in welcome credits at a 0% platform fee. After your first top-up, each run costs the runner's listed price plus 5% — no seats, no subscriptions, and every attempt is itemized on your receipt.
For AI agents
If an agent is doing the integrating, we wrote the materials.
The whole API, condensed for a context window.
Official MCP server — native tools for Cursor and Claude.
A ready-made skill your agent can install itself.
Full spec, machine-readable, always current.
Integration notes written for non-humans.
Challenge in, key out — no human in the loop.
Every error ships a stable code and a recovery hint.
Signed event delivery with a documented retry ladder.
Stop retrying.
Start routing.
Mint a key, make one request, and watch the run — evidence included — in the console.