https://github.com/unbrowse-ai/unbrowse
Unbrowse — api native browser Skill/CLI/MCP/SDK for any agent. Auto-discovers APIs from browser traffic, generates skills on the fly to call APIs directly 100x faster, 80% cheaper locally.
https://github.com/unbrowse-ai/unbrowse
agents agentskills browser-use clawdbot clawdbot-plugin har moltbot openclaw openclaw-skills reverse-engineering skills
Last synced: 14 days ago
JSON representation
Unbrowse — api native browser Skill/CLI/MCP/SDK for any agent. Auto-discovers APIs from browser traffic, generates skills on the fly to call APIs directly 100x faster, 80% cheaper locally.
- Host: GitHub
- URL: https://github.com/unbrowse-ai/unbrowse
- Owner: unbrowse-ai
- License: mit
- Created: 2026-01-27T15:30:07.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-07-18T06:57:15.000Z (20 days ago)
- Last Synced: 2026-07-18T08:07:57.668Z (20 days ago)
- Topics: agents, agentskills, browser-use, clawdbot, clawdbot-plugin, har, moltbot, openclaw, openclaw-skills, reverse-engineering, skills
- Language: TypeScript
- Homepage: https://unbrowse.ai
- Size: 215 MB
- Stars: 730
- Watchers: 0
- Forks: 63
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: docs/SECURITY.md
Awesome Lists containing this project
- awesome-solana-ai - Unbrowse - Agent browser that auto-discovers API endpoints from any website and publishes reusable skills to a shared marketplace. Ships with pre-learned skills for Solana DeFi protocols (Jupiter, Raydium, etc.) and x402-enabled for autonomous USDC payments on Solana. (Developer Tools / Infrastructure)
- awesome-openclaw - unbrowse-ai/unbrowse - ai/unbrowse?style=social) - API-native browser skill and CLI for agent workflows. (🧰 Skills & Registries)
README
# Unbrowse
Unbrowse is the action layer for AI agents. It learns a site's first-party API
routes from real browsing, then replays known routes directly instead of driving
a browser for every task.
```bash
npm install -g unbrowse@11.1.9
unbrowse setup
unbrowse "top stories with point counts" --url https://news.ycombinator.com
```
On a cache hit, Unbrowse resolves, executes, and reads the route in one call. On
a miss, it can open a real browser, observe the working request, and make that
route reusable. The browser remains available for login, consent, CAPTCHA, and
UI-only flows.
## Why Unbrowse
- **Fast on repeat work.** Known routes skip page rendering and DOM parsing.
- **Honest fallback.** Browser automation stays available when direct requests
are not enough.
- **Local credentials.** Site sessions remain on the machine running Unbrowse.
- **One agent interface.** Use the same intent from the CLI, Agent Skill, MCP,
or TypeScript.
- **Shared learning.** Sanitized route metadata can be published so other
agents do not rediscover the same site flow.
The published 94-domain benchmark measured a 3.6× mean and 5.4× median speedup
for warmed cached routes over Playwright. See
[Internal APIs Are All You Need](https://arxiv.org/abs/2604.00694) and the
[benchmark notes](docs/benchmarks.md).
## CLI
The default interface is one command:
```bash
unbrowse "task" --url https://example.com
```
Useful lower-level commands:
```bash
unbrowse health
unbrowse fetch https://example.com
unbrowse resolve --intent "search products" --url https://example.com --no-execute
unbrowse capture --url https://example.com --intent "search products"
unbrowse auth https://example.com/login
```
Use `go`, `snap`, `click`, `submit`, and `close` when a task genuinely needs the
DOM. Run `unbrowse --help` for the current options.
## TypeScript SDK
The current SDK ships inside the `unbrowse` package:
```bash
npm install unbrowse@11.1.9
```
```ts
import { createHole } from "unbrowse/sdk";
const result = await createHole().fill({
intent: "list tomorrow's events",
url: "https://calendar.google.com",
});
console.log(result.answer ?? result.items);
```
Use the lower-level client when your application should inspect route choices:
```ts
import { Unbrowse } from "unbrowse/sdk";
const unbrowse = new Unbrowse({ apiKey: process.env.UNBROWSE_API_KEY });
const resolved = await unbrowse.resolve({
intent: "find recent TypeScript releases",
contextUrl: "https://github.com/microsoft/TypeScript/releases",
});
const endpoint = resolved.available_operations?.[0];
if (endpoint) {
const result = await unbrowse.execute({ endpoint_id: endpoint.endpoint_id });
console.log(result.data);
}
```
See the [SDK quickstart](docs/for-developers/sdk-quickstart.md) for retries,
typed errors, proxy options, and account resources.
## Accounts and billing
Unbrowse uses API keys for account access and credits for metered work.
```bash
unbrowse register --email you@example.com
unbrowse dashboard
```
No separate payment setup is required. Added, promotional, and earned credits
live in one account ledger.
```ts
const credits = await unbrowse.account.credits();
console.log(`${credits.balance_credits} credits`);
```
## Agent Skill and MCP
`unbrowse setup` installs the Agent Skill by default. MCP is an optional
compatibility surface:
```bash
unbrowse setup --mcp
```
The Agent Skill teaches compatible hosts the current flat CLI commands and the
preferred one-call flow.
## Development
```bash
git clone --recursive https://github.com/unbrowse-ai/unbrowse.git
cd unbrowse
bun install
./setup
bun test
```
The local runtime listens on `127.0.0.1:6969` by default. Site profiles and
credentials are stored below `~/.unbrowse/`; logs and route caches are kept
separate so they can be inspected or removed independently.
## Documentation
- [Quickstart](docs/guides/quickstart.md)
- [How an agent uses Unbrowse](docs/for-agents/how-an-agent-uses-unbrowse.md)
- [SDK quickstart](docs/for-developers/sdk-quickstart.md)
- [Billing and usage](docs/for-agents/credits.md)
- [Architecture](docs/architecture/README.md)
- [Security](SECURITY.md)
- [Contributing](CONTRIBUTING.md)
Unbrowse is MIT licensed. See the [open-source notice](docs/OPEN-SOURCE-NOTICE.md)
for the client/server boundary.