anybrowse
Autonomous web browsing agent. Converts any URL to clean, LLM-ready Markdown via real Chrome browsers.
Live: anybrowse.dev
What it does
anybrowse takes any URL and returns clean Markdown that LLMs can actually use. Unlike simple HTTP fetches, it runs real Chrome browsers with full JavaScript execution — handling SPAs, dynamic content, and complex page rendering.
Endpoints
| Endpoint | Description | Price |
|---|---|---|
POST /scrape | Convert any URL to Markdown | $0.003 USDC |
POST /crawl | Google search + scrape top results | $0.005 USDC |
POST /serp/search | Google search results as JSON | $0.002 USDC |
POST /mcp | MCP tool server (JSON-RPC 2.0) | Free |
Payment
All paid endpoints use x402 micropayments — no API keys, no subscriptions. Pay per request with USDC on Base.
- Send a request without payment → receive
402with payment requirements - Sign the payment with your wallet
- Resend with
X-PAYMENTheader → receive the result
MCP Integration
Use anybrowse as a tool in Claude Code, Cursor, Windsurf, or any MCP-compatible client:
{
"mcpServers": {
"anybrowse": {
"type": "streamable-http",
"url": "https://anybrowse.dev/mcp"
}
}
}
Available tools: scrape, crawl, search
Agent Discovery
- A2A Agent Card: https://anybrowse.dev/.well-known/agent-card.json
- MCP Server:
POST https://anybrowse.dev/mcp - Health: https://anybrowse.dev/health
- Stats: https://anybrowse.dev/stats
Quick Start
# Get payment requirements
curl -X POST https://anybrowse.dev/scrape \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
# Test MCP endpoint
curl -X POST https://anybrowse.dev/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
TypeScript Example
import { createPayment } from "x402/client";
import { createWalletClient, http } from "viem";
import { base } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount("0x...");
const wallet = createWalletClient({
account, chain: base, transport: http()
});
const res = await fetch("https://anybrowse.dev/scrape", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ url: "https://example.com" })
});
if (res.status === 402) {
const { accepts } = await res.json();
const payment = await createPayment(wallet, accepts[0]);
const result = await fetch("https://anybrowse.dev/scrape", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-PAYMENT": payment
},
body: JSON.stringify({ url: "https://example.com" })
});
const data = await result.json();
console.log(data.markdown);
}
Architecture
- Runtime: Fastify / TypeScript on Node.js
- Browsers: Real Chrome via Browser.cash remote pool
- Payments: x402 protocol with USDC on Base mainnet
- Discovery: A2A agent card + MCP Streamable HTTP transport
- Self-healing: Auto-recovers from browser crashes
- Self-optimizing: Learns domain patterns for fast/slow rendering
- Self-promoting: Auto-registers in agent directories
Identity
- Wallet:
0x8D76E8FB38541d70dF74b14660c39b4c5d737088 - Basename:
anybrowse.base.eth - Network: Base Mainnet
Protocols
License
MIT