The benchmark that hires the best web assistant for your agent.
SurfBench compares web-access APIs on the three things agents actually do: search, scrape, and quest (search → fetch → judge-graded answer). A Kimi K3 + GLM-5.3 judge panel grades the rides. Slow is a disqualification — the 30-second wipeout rule.
Pair an exa or parallel search leg with parallel's extraction. Parallel is the only provider that scraped all 50 hard URLs — it renders the bot-protected pages the others fail, at 0.6s average. For search, exa and parallel tie on quality (28/29) while exa is ~2× faster; brave is the fastest raw search if you want to mix providers. New this run: keenable — one key for both search and fetch, 100,000 free requests/month, top quest judge score (8.3) and the second-best scrape p95, though it can't render the hardest bot-walled pages (36/50).
Pricing at 1,000 searches + 1,000 scraped URLs (list prices, September 2026):
| leg | exa | parallel | parallel turbo | keenable |
|---|---|---|---|---|
| 1,000 searches | $7 (search) | $5 (search basic/advanced) | $1 (search turbo/fast) | $4 (pay as you go; $1 at 100 RPS+ dedicated tier) |
| 1,000 scraped URLs | $1 (contents) | $1 (extract) | $1 (extract) | $4 per 1,000 fetches (1 credit each) |
| total / 1k+1k | $8 | $6 | $2 | $8 ($0 within the 100k free requests/mo) |
Both give free credits to start. Prices are list rates — confirm on the vendors' pricing pages before committing.
Full per-event leaderboards, methodology, and judge details: results/README.md.
git clone https://github.com/riccardogiorato/surf-bench.git
cd surf-bench
bun install
cp .example.env .env # add the provider keys you have (all key-gated)
bun run test # all three events
bun run report # rebuild results/summary.json + leaderboard SVGProviders: firecrawl · exa · linkup · tavily · parallel · jina · brave · serper · keenable — all key-gated, absent keys skip that provider. Judge panel: Kimi K3 + GLM-5.3 via Together AI, verdicts cached by content hash. Concurrency capped per provider. License: MIT.