Stitched from the best browsing tools on the web

Every site.
Every model.
One call.

Frankensurf picks the right tool for every page, so your agent finishes the task instead of hitting a wall.

frankensurf · router
your agent
frankensurf · cheapest rung first

    Stitched from 26 of the best tools on the web. We build none of them.

    PlaywrightBrowserbaseKernelSteelBrowser UseStagehandFirecrawlCrawl4AIExaParallelBrave SearchTavilyCamoufoxPlaywrightBrowserbaseKernelSteelBrowser UseStagehandFirecrawlCrawl4AIExaParallelBrave SearchTavilyCamoufox
    PatchrightnodriverBright DataScrapflyZenRowsJina ReaderChrome DevTools MCPAnchorHyperbrowserSkyvernWeb Bot AuthCloudflare Browser RunMarkdown for AgentsPatchrightnodriverBright DataScrapflyZenRowsJina ReaderChrome DevTools MCPAnchorHyperbrowserSkyvernWeb Bot AuthCloudflare Browser RunMarkdown for Agents
    The problem

    Every tool breaks somewhere.

    Each one wins on some walls and dies on others. Pick one, and your agent inherits all of its blind spots.

    StaticJS appCloudflareDataDomeLogin2FALean tokens
    Model-native fetch
    Plain HTTP + extract
    Managed browser
    Stealth browser
    Unblocker API
    Frankensurf
    workspartialfailsTypical behavior, illustrative
    Native fetch skips JavaScriptClaude's web fetch does not render JS and only reaches URLs already in the conversation.Firecrawl ↗
    Agents blocked by defaultNew Cloudflare domains reportedly block agent traffic on ad pages from 15 Sep 2026.O-mega ↗
    Snapshots burn tokensAbout 114k tokens per task through Playwright MCP, versus 27k through the CLI.ego.app ↗
    How it works

    Cheap first. Smart always.

    Frankensurf climbs from the lightest method to the heaviest and stops the moment one works.

    T035%
    T127%
    T226%
    T38%
    T43%
    T51%

    62% never need a browser

    Markdown negotiation and plain fetch handle most pages in under 400 ms.

    docs.acme.dev T0
    app.acme.dev T2
    shop.example.com T3
    retail.example.com T4

    It remembers what worked

    The winning route is cached per domain, so the second visit skips straight to it.

    FSApproval needednow

    Your agent reached a 2FA prompt on bank.example.com.

    ApproveDecline

    It hands off when it should

    2FA and consent go to you. Approve once and the agent resumes in place.

    The parts bin

    We stitch. We don't reinvent.

    Eight layers, each filled by the best tool for the job today. Hover any part to see what we take from it.

    Model providers

    Every model gets the same tools and the same results.

    ClaudeNative web fetch as a cheap first try. Documented: no JS rendering, only URLs already in the conversation.Firecrawl: Claude web fetch vs Firecrawl ↗GPTWeb search and native computer use, 93.0% on Online-Mind2Web. Search is Responses API only.Browser Use: Online-Mind2Web results ↗GeminiURL context for static pages. Capped at 20 URLs and 34 MB per page.Google: Gemini URL context ↗Open-weightAny OpenAI-compatible endpoint. No native browsing, so Frankensurf supplies all of it.AgentsCamp: browser agents compared ↗

    Fetch + extract

    Clean content without launching a browser.

    Markdown for AgentsAccept: text/markdown, about 80% fewer tokens where sites opt in.Cloudflare: Markdown for Agents ↗FirecrawlCrawl, map and schema extraction in one call.fastCRW: LLM-ready web data APIs ↗Crawl4AIApache-2.0 self-hosted extraction, 59.95% truth recall.fastCRW: LLM-ready web data APIs ↗Jina ReaderInstant reads of cooperative pages.fastCRW: LLM-ready web data APIs ↗fastCRWChallenger: 63.74% recall on 819 labelled URLs.fastCRW: LLM-ready web data APIs ↗

    Browser runtimes

    Real browsers, warm and ready in milliseconds.

    KernelApache-2.0, sub-150 ms cold starts, #1 ComputeSDK throughput.Kernel: 9 best browsers for AI agents ↗BrowserbaseSession replay, logs, mature managed platform.Kernel: 9 best browsers for AI agents ↗SteelSelf-host or managed on one codebase.Kernel: 9 best browsers for AI agents ↗AnchorManaged auth and a hardened Chromium fork.Kernel: 9 best browsers for AI agents ↗HyperbrowserConcurrency-first fleets.Kernel: 9 best browsers for AI agents ↗Browser RunEdge snapshots, PDFs and markdown.Kernel: 9 best browsers for AI agents ↗

    Search

    The fastest accurate answer, routed per query.

    Parallel91% SimpleQA, 348 ms mean, 74% BrowseComp.Parallel: 6 search APIs benchmarked ↗ExaLeads hit@5 at 80.9% in one verified benchmark.Openbenchmarks: web search APIs ↗BraveIndependent index, 669 ms in AIMultiple's test.AIMultiple: agentic search benchmark ↗TavilyAnswer synthesis as a fallback route.Openbenchmarks: web search APIs ↗

    Control + agent loop

    The right driver for each step.

    PlaywrightDeterministic workhorse for known flows.Digital Applied: Playwright vs Stagehand ↗DevTools MCPAbout 10x fewer runtime tokens than snapshot-based control.ego.app: DevTools MCP vs Playwright MCP ↗Stagehandact, extract and observe primitives.Digital Applied: Playwright vs Stagehand ↗Browser UseAutonomous loop, 97% Online-Mind2Web.Browser Use: Online-Mind2Web results ↗SkyvernVision-based forms with no selectors.Kernel: 9 best browsers for AI agents ↗

    Stealth

    Look like a person when a site insists.

    CamoufoxFirefox fork, C++-level fingerprint spoofing.GitHub: camofox-browser ↗PatchrightPatched Playwright on system Chrome.DEV: anti-detect browser benchmark 2026 ↗nodriverCDP-direct, 0 of 31 Cloudflare targets blocked in one test. AGPL-3.0.DEV: anti-detect browser benchmark 2026 ↗

    Unblockers

    The last automated rung for the hardest walls.

    Bright Data97.9% on complex sites, 100% on PerimeterX.AIMultiple: web unblockers ↗Scrapfly92.6% DataDome, 90.7% Cloudflare, vendor-run.AIMultiple: web unblockers ↗ZenRows99% in its own test. Results swing by corpus.ZenRows: scraping APIs benchmarked ↗Zyte + ApifyLong-tail coverage and ready-made scrapers.ZenRows: scraping APIs benchmarked ↗

    Identity

    Arrive as a verified agent, with the user's session.

    Web Bot AuthSigned agent requests, verified by Cloudflare, AWS, Akamai and Vercel.Cloudflare: signed agents ↗Saved sessionsLogins persist between runs, so agents stop re-authenticating.Kernel: 9 best browsers for AI agents ↗Human handoff2FA and consent go to you, then the agent resumes in place.Kernel: 9 best browsers for AI agents ↗
    open sourcemanagedopen standard
    The targets

    Half the dead ends.

    What the perfect tool in this class should hit, next to the best single tool we could find a public number for.

    98.5%browse tasks completedvs 97.0% best today
    2×fewer dead endsfailure rate halved
    20ktokens per taskvs 114k MCP baseline
    ≤0.3point gap between modelssame result on any model
    failure rate today, best citedfailure rate target
    Online-Mind2Web taskssrc
    3.0%
    1.5%
    −50%
    WebVoyager taskssrc
    10.9%
    5.0%
    −54%
    Cloudflare-protected fetchsrc
    9.3%
    1.0%
    −89%
    DataDome-protected fetchsrc
    7.4%
    1.2%
    −84%
    Akamai-protected fetchsrc
    19.0%
    1.4%
    −93%
    Search answers (SimpleQA)src
    9.0%
    7.0%
    −22%
    Targets, not measurements. "Today" figures are public and mostly vendor-run.
    Coverage

    Same result on every model.

    Target task success by site class. No class below 98.5%, and never more than 0.3 points between models.

    Site classClaudeGPTGeminiOpen-weightBest vendor today
    Static pages99.999.999.999.8—
    JavaScript apps99.699.699.599.4—
    Infinite scroll99.299.299.199.0—
    Cloudflare99.399.399.299.190.7
    DataDome98.898.898.798.692.6
    Akamai98.798.698.698.581.0
    PerimeterX99.499.499.399.2100
    Login-walled99.099.098.998.8—
    PDFs99.699.599.599.4—
    Geo-restricted99.199.199.098.9—
    Always the best

    A better tool ships. We bolt it on.

    A challenger replaces an incumbent after beating it by 1.0 point for 14 straight daily runs. Every swap is published.

    Week 41

    SearchChallenger promoted for multi-hop queries

    14 of 14 daily runs, p50 −41 ms

    +2.3 pt
    Week 38

    StealthIncumbent demoted to fallback on DataDome

    Vendor update regressed, challenger held 99.0%

    −3.1 pt
    Week 35

    RuntimeSecond runtime added for burst load

    500 parallel sessions, 380 → 210 ms

    p99 −170 ms
    Example ledger entries showing the format.

    Ride the whole web.

    Open source. Clone it, point your agent at it, and stop losing tasks to walls.

    View on GitHub
    $git clone https://github.com/yail259/frankensurf.git