Drop-in adapters

Already using another library? You do not need to rewrite anything. Swap one import for the matching Unbrowse adapter — every safe GET, search, or scrape first routes through Unbrowse's resolved-route cache (free on a hit), and anything that misses falls back to native fetch or the upstream library, so behaviour is preserved and only cost drops. Each adapter ships a parity test proving it provides the upstream's public surface.

Configure once (optional): UNBROWSE_API_URL, UNBROWSE_API_KEY, UNBROWSE_X_PAYMENT. Set UNBROWSE_DRYRUN=1 for offline, deterministic calls.

HTTP clients (JavaScript / TypeScript)

Same client surface; a safe GET routes through Unbrowse, else native fetch.

- import got from 'got';
+ import got from '@unbrowse/got-shim';

  const data = await got('https://api.site.com/items').json(); // unchanged
  • fetch@unbrowse/client
  • axios@unbrowse/axios-shim
  • got@unbrowse/got-shim
  • ky@unbrowse/ky-shim
  • node-fetch@unbrowse/node-fetch-shim
  • cross-fetch@unbrowse/cross-fetch-shim
  • undici@unbrowse/undici-shim
  • superagent@unbrowse/superagent-shim
  • wretch@unbrowse/wretch-shim

Browser automation

  • playwright@unbrowse/playwright-shim
  • puppeteer@unbrowse/puppeteer-shim
  • selenium-webdriver@unbrowse/selenium-shim
  • @browserbasehq/stagehand@unbrowse/stagehand-shim

Search & retrieval

  • @mendable/firecrawl-js@unbrowse/firecrawl-shim
  • exa-js@unbrowse/exa-shim
  • @tavily/core@unbrowse/tavily-shim

Agent SDKs (native tool)

Register Unbrowse's resolve / execute / search as your framework's own tool type with one import.

import { generateText } from 'ai';
import { unbrowseTools } from '@unbrowse/ai-sdk';

await generateText({ model, tools: unbrowseTools, prompt: '...' });
  • Vercel AI SDK (ai) → @unbrowse/ai-sdk
  • LangChain JS (@langchain/core) → @unbrowse/langchain-js
  • Mastra (@mastra/core) → @unbrowse/mastra
  • LlamaIndex TS (llamaindex) → @unbrowse/llamaindex
  • OpenAI Agents SDK (@openai/agents) → @unbrowse/openai-agents

Python

The same drop-in story for the Python runtime — pure stdlib, no upstream install needed for the fallback.

# before:  import requests
import unbrowse_requests as requests

r = requests.get("https://api.site.com/items")   # unchanged
  • requestsunbrowse-requests
  • httpxunbrowse-httpx
  • aiohttpunbrowse-aiohttp
  • urllib3unbrowse-urllib3
  • crewaiunbrowse-crewai (native tool)
  • pydantic-aiunbrowse-pydantic-ai (native tool)

MCP — the native protocol surface

Unbrowse is itself an MCP server, so any MCP-capable host gets the full tool set with no adapter package at all:

npx unbrowse mcp

It registers into Claude Desktop, Cursor, Codex, Continue, and Windsurf out of the box (unbrowse setup wires the host config). MCP is the recommended surface for agent hosts; the framework adapters above are for building an agent in code with one of the SDKs.