“We went through six browser automation tools before finding one that worked.”
The router for dev tools.
Every provider, benchmarked job by job, wired into one API. Switch in one line, when you decide.
compass.scrape(url, { priority: "cost" })
Open source. Web data today, browser automation next.
- Reads the request
- Picks the best tool from the benchmarks
- Routes it there, with fallback
Web scraping tools





+Browser tools





+Sandboxes





+Document parsing



+Voice



+The benchmark
Every provider on every task, graded by script against answer keys. The washed row scored highest for the priority you pick. Every provider the benchmark measured is here, routed or not.
| Provider | Scrape | Search | Map | Crawl |
|---|---|---|---|---|
| Context.dev | 95.0% | 83.3% | 80.0% | 91.7% |
| Firecrawl | 80.0% | 86.7% | 86.7% | 100.0% |
| String | 87.5% | 76.7% | 93.3% | not measured |
| Scrapfly | 90.0% | not measured | not measured | 100.0% |
| Linkup | 85.0% | 93.3% | not measured | not measured |
| TinyFish | 77.5% | 86.7% | not measured | not measured |
| Browserbase | 75.0% | 70.0% | not measured | not measured |
| You.com | 72.5% | 70.0% | not measured | not measured |
| Spider | 92.5% | not measured | not measured | not measured |
| Jina Reader | 15.0% | not measured | not measured | not measured |
Lower to higher success. Highest in the job, ties broken by cost.
- 4 jobs, 4 winners
- Context.dev on scrape, Linkup on search, String on map, Scrapfly on crawl. No provider leads two.
- 58% less for the same result
- On crawl, Scrapfly matches Firecrawl’s 100% at 3.49¢ a task against 8.29¢.
- 0% for the model alone
- The control, a model with no tool, passed none of the scrape, map or crawl tasks. The tool is the difference.
| Provider | Success | Cost per success | Median | Tier | Routed today |
|---|---|---|---|---|---|
| Context.dev | 95.0% | 1.36¢ | 4.6 s | Top tier | Yes |
| Spider | 92.5% | 0.88¢ | 5.7 s | Top tier | Yes |
| Scrapfly | 90.0% | 1.17¢ | 6.0 s | Top tier | Yes |
| String | 87.5% | 1.33¢ | 3.9 s | Top tier | Not yet |
| Linkup | 85.0% | 1.23¢ | 4.0 s | Below | Yes |
| Firecrawl | 80.0% | 1.67¢ | 4.8 s | Below | Yes |
| TinyFish | 77.5% | 0.71¢ | 4.6 s | Below | Yes |
| Browserbase | 75.0% | 1.93¢ | 3.6 s | Below | Not yet |
| You.com | 72.5% | 1.00¢ | 3.6 s | Below | Not yet |
| Jina Reader | 15.0% | 4.26¢ | 5.4 s | Below | Not yet |
| Scrape: 40 tasks from 37 sites. Compass routes the providers marked yes; the rest are measured and next in line. | |||||
| Provider | Success | Cost per success | Median | Tier | Routed today |
|---|---|---|---|---|---|
| Linkup | 93.3% | 2.19¢ | 6.2 s | Top tier | Yes |
| TinyFish | 86.7% | 0.97¢ | 8.2 s | Top tier | Yes |
| Firecrawl | 86.7% | 2.91¢ | 6.9 s | Top tier | Yes |
| Context.dev | 83.3% | 1.39¢ | 8.4 s | Top tier | Yes |
| String | 76.7% | 1.32¢ | 6.8 s | Below | Not yet |
| You.com | 70.0% | 2.64¢ | 4.8 s | Below | Not yet |
| Browserbase | 70.0% | 2.79¢ | 15.4 s | Below | Not yet |
| Search: 30 tasks from 18 sites. Compass routes the providers marked yes; the rest are measured and next in line. | |||||
| Provider | Success | Cost per success | Median | Tier | Routed today |
|---|---|---|---|---|---|
| String | 93.3% | 0.98¢ | 8.4 s | Top tier | Not yet |
| Firecrawl | 86.7% | 1.32¢ | 11.3 s | Top tier | Not yet |
| Context.dev | 80.0% | 0.98¢ | 6.4 s | Top tier | Not yet |
| Map: 15 tasks from 15 sites. Measured today, routed next. Compass has no map adapter yet. | |||||
| Provider | Success | Cost per success | Median | Tier | Routed today |
|---|---|---|---|---|---|
| Scrapfly | 100.0% | 3.49¢ | 15.2 s | Top tier | Not yet |
| Firecrawl | 100.0% | 8.29¢ | 27.1 s | Top tier | Not yet |
| Context.dev | 91.7% | 5.86¢ | 22.6 s | Top tier | Not yet |
| Crawl: 12 tasks from 12 sites. Measured today, routed next. Compass has no crawl adapter yet. | |||||
| Agent or product | Success | Cost per success | Median | Source | Routed today |
|---|---|---|---|---|---|
| Browser Use Cloud | 97.0% | not published | not published | Self-reported | Next |
| GPT-5.4 computer use | 93.0% | not published | not published | Self-reported | Next |
| ABP with Claude Opus 4.6 | 90.5% | not published | not published | Self-reported | Next |
| Online-Mind2Web, 300 live tasks on 136 sites, as published and collected by Steel’s leaderboard. Accuracy only, each on its own harness. Compass’s browser benchmark will add cost per success, latency and one harness for all. | |||||
Web data, from ScrapingBench v2: 97 tasks on real sites, graded by script against answer keys. Cost is per successful task, including the grader’s model spend. Dimmed rows sit below the top tier. Providers cannot pay for placement.
How teams pick a tool today
Honestly, they guess. Here is each guess next to what a measurement gives you, with the freedom to switch any time.
What Compass does
Tools in each category now do the same job, with different results on different tasks. So: one integration, the data to choose, and a switch that costs one line.
One function per job
Every tool gets an adapter behind it. The response has the same shape whoever ran it, so changing tools is a one-line change, not a migration.
const page = await compass.scrape(url, { priority: "cost" });
page.markdown // clean content
page.meta.provider // "spider"
page.meta.costCents // 0.9
page.meta.fallbacksUsed // 0
Fallback that reads the page
An error, a timeout, a blank page, or a bot wall with a 200: the next tool on your list takes that call and the log says why. Fallback covers a bad request. Changing your default is your decision.
Switch log: spider to scrapfly, http-4xx 401: Unauthorized.
Your priority, your pick
Accuracy, cost or speed sorts the benchmark. Compass proposes the top row and you confirm it. No model sits on the request path, so the same call gets the same answer every time.
- Context.dev 95.0%
- Spider 92.5%
- Scrapfly 90.0%
- Spider 0.88¢
- Scrapfly 1.17¢
- Context.dev 1.36¢
Every call makes the benchmark better
Each request through Compass is one more graded data point: a site, a task, a cost, a time. More volume means more sites covered, tighter confidence intervals and fresher scores. The recommendation sharpens for everyone who uses it.
- A call runs through a provider
- The result is graded and logged: site, task, cost, time
- Scores update and the intervals tighten
- The next pick is better, for you and for everyone
Point your coding agent at Compass
One command writes the MCP config, and the agent gets Compass as a set of tools it can call while it builds.
npm run setup -- --dir ../your-app
Run it from a checkout of the Compass repository, with --dir pointing at your project. Compass is not on npm yet, so don't install a package called compass: that name belongs to someone else.
- Claude Code
- writes
.mcp.json - Cursor
- writes
.cursor/mcp.json - Codex
- writes
.codex/config.toml - Every agent
- a note in
AGENTS.mdon when to call Compass
- The agent gets
- scrape
- search
- setup
- stack
- init
- test
- route
- benchmark
Stop guessing which tool to use.
We are piloting with a few teams. Send us your workload, we will run every tool on it, and you decide.