Compass

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.

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.

Success rate per provider and job in ScrapingBench v2; the highest in each job is marked
ProviderScrapeSearchMapCrawl
Context.dev95.0%83.3%80.0%91.7%
Firecrawl80.0%86.7%86.7%100.0%
String87.5%76.7%93.3%not measured
Scrapfly90.0%not measurednot measured100.0%
Linkup85.0%93.3%not measurednot measured
TinyFish77.5%86.7%not measurednot measured
Browserbase75.0%70.0%not measurednot measured
You.com72.5%70.0%not measurednot measured
Spider92.5%not measurednot measurednot measured
Jina Reader15.0%not measurednot measurednot 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.
Priority
Highest scorer
ProviderSuccessCost per successMedianTierRouted today
Context.dev95.0%1.36¢4.6 sTop tierYes
Spider92.5%0.88¢5.7 sTop tierYes
Scrapfly90.0%1.17¢6.0 sTop tierYes
String87.5%1.33¢3.9 sTop tierNot yet
Linkup85.0%1.23¢4.0 sBelowYes
Firecrawl80.0%1.67¢4.8 sBelowYes
TinyFish77.5%0.71¢4.6 sBelowYes
Browserbase75.0%1.93¢3.6 sBelowNot yet
You.com72.5%1.00¢3.6 sBelowNot yet
Jina Reader15.0%4.26¢5.4 sBelowNot yet
Scrape: 40 tasks from 37 sites. Compass routes the providers marked yes; the rest are measured and next in line.

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.

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.

scrape.ts
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.

One request, example.com/pricingSample
401spider, 0.3 s 200scrapfly, 2.4 s

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.

Scrape, accuracy first
  1. Context.dev 95.0%
  2. Spider 92.5%
  3. Scrapfly 90.0%
Scrape, cost first
  1. Spider 0.88¢
  2. Scrapfly 1.17¢
  3. 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.

  1. A call runs through a provider
  2. The result is graded and logged: site, task, cost, time
  3. Scores update and the intervals tighten
  4. The next pick is better, for you and for everyone

“We went through six browser automation tools before finding one that worked.”

Dev Chaliha, co-founder, on his summer at a YC startup

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.md on 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.