scrapingbench

Scrape benchmark: which web scraping API gets an agent the right answer

Read one page and pull out exact fields: prices, versions, install commands. 8 providers ran the same 60 tasks with the same model and prompt. Each task allowed 2 calls, 60 seconds and $0.10.

Context.dev finished the most scrape tasks, but its lead over Linkup, Firecrawl and TinyFish (90%) is too small to rule out chance. TinyFish cost the least per finished task, 0.43¢. With no tool at all, the model alone passed none.

How a scrape task runs

The task1 of 60Price, stock and SKUfrom this product page?The modelClaude Haiku 5.5, same promptfor every providerOne toolscrape(url)API testedBrowserbaseContext.devFirecrawlJina LinkupScrapflySpiderTinyFishJSON answer{ "price": "168.28 USD", "stock": "In stock", "sku": "NS-18AADCCC"}Script checksSame as the page we generated?it countsup to 2 calls,60 s, $0.10
60 tasks. 50 pages on our own test site, including JavaScript, PDFs, tabs and missing answers, plus 10 project pages on PyPI.

Tasks done every answer correct, checked by script, with the cost of each finished task

Correct page given100%0.38¢ per task
Context.dev92%0.72¢ per task
Linkup90%0.60¢ per task
Firecrawl90%1.22¢ per task
TinyFish90%0.43¢ per task
Scrapfly88%0.61¢ per task
Jina87%0.57¢ per task
Browserbase82%1.12¢ per task
Spider20%2.48¢ per task
Model alone0%

None of the gaps between providers is big enough to rule out chance on 60 tasks, since tasks from the same site are counted as one group.

Cost per finished task all API and model spend, failures included, divided by tasks done

TinyFish0.43¢
Jina0.57¢
Linkup0.60¢
Scrapfly0.61¢
Firecrawl1.22¢
Spider2.48¢

Time per finished task median, lower is better

Raw output, no model does the API's own output contain every answer? Cost is the API alone

Context.dev93%0.26¢ per task
Firecrawl93%0.80¢ per task
Jina93%0.01¢ per task
Linkup91%0.12¢ per task
TinyFish91%free
Scrapfly78%0.02¢ per task
Browserbase67%0.65¢ per task
Spider18%0.04¢ per task

Tuned settings each provider's best documented settings, frozen before the run

Context.dev92%0.69¢ per task
Scrapfly92%0.62¢ per task
Linkup90%1.04¢ per task
Jina87%0.59¢ per task
Firecrawl82%2.24¢ per task

Spider refused our test site because its filter flags the workers.dev domain; it scraped all 10 PyPI pages correctly. Firecrawl's tuned run hit its free plan's 10 requests a minute, which is why it scores lower than its default.

Every provider the numbers behind the charts

Scrape results for every provider
ProviderTasks done95% intervalCost per finished taskMedian time
Context.dev55 of 60 (92%)90%–100%0.72¢3.7 s
Linkup54 of 60 (90%)90%–90%0.60¢3.4 s
Firecrawl54 of 60 (90%)90%–90%1.22¢3.3 s
TinyFish54 of 60 (90%)80%–92%0.43¢3.5 s
Scrapfly53 of 60 (88%)80%–90%0.61¢5.0 s
Jina52 of 60 (87%)60%–92%0.57¢3.8 s
Browserbase49 of 60 (82%)78%–100%1.12¢3.3 s
Spider12 of 60 (20%)4%–100%2.48¢4.6 s

Scrape has only two site clusters: 50 pages on our own test site and 10 project pages on PyPI. With so few clusters, the narrow intervals here shouldn't be read as certainty.

Firecrawl had the shortest median time per finished task, 3.3 s. Not tested: Exa, Tavily, Bright Data and Perplexity.

Head to head pairs that both ran scrape

Other tracks

How every task is graded, and when a gap counts, is on the methodology page.