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(); // unchangedfetch→@unbrowse/clientaxios→@unbrowse/axios-shimgot→@unbrowse/got-shimky→@unbrowse/ky-shimnode-fetch→@unbrowse/node-fetch-shimcross-fetch→@unbrowse/cross-fetch-shimundici→@unbrowse/undici-shimsuperagent→@unbrowse/superagent-shimwretch→@unbrowse/wretch-shim
Browser automation
playwright→@unbrowse/playwright-shimpuppeteer→@unbrowse/puppeteer-shimselenium-webdriver→@unbrowse/selenium-shim@browserbasehq/stagehand→@unbrowse/stagehand-shim
Search & retrieval
@mendable/firecrawl-js→@unbrowse/firecrawl-shimexa-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") # unchangedrequests→unbrowse-requestshttpx→unbrowse-httpxaiohttp→unbrowse-aiohttpurllib3→unbrowse-urllib3crewai→unbrowse-crewai(native tool)pydantic-ai→unbrowse-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 mcpIt 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.