Skip to main content
Comparison

The Honest Third Option in Web Data APIs

Most web data API comparisons pick a winner between two paid vendors. Here is the honest third option: open-core, self-hostable, benchmarked with disclosure.

fastcrw
By RecepJuly 12, 20269 min read

By the fastCRW team · Benchmark and pricing figures verified 2026-05-18 · Verify independently before buying.

Disclosure: We build fastCRW. This is a vendor-authored article, so weight it accordingly. The whole point below is that we publish the full latency distribution next to the wins, not a single flattering average.

An honest web data API comparison starts by admitting the format is rigged

Almost every "honest web data api comparison" you find online is a two-vendor cage match with a predetermined winner. The author has usually already chosen a side — sometimes because they sell one of the two tools, sometimes because an affiliate link pays out on one of them. The table is built to make that side look inevitable. This article is the meta view: how to read those pages, what an honest benchmark actually contains, and where a third, open-core option fits when you have stopped trusting the tables.

Two paid vendors, one predetermined winner

The classic structure is "Vendor A vs Vendor B." Both are closed, hosted, metered services. The comparison feels balanced because it names two competitors, but the frame quietly excludes a whole category: tools you can run yourself. When the only two options on the page both bill per request, "which is cheaper" is the wrong question — the honest question is "do I need to pay per request at all?"

Hidden costs the tables leave out

Comparison tables love a single headline price per tier. What they leave out is where the meter actually spins: JavaScript-render surcharges, premium-proxy multipliers, separate token subscriptions for AI extraction, and per-request research endpoints that can swing an order of magnitude on a single call. A row that says "$X/mo, 100k credits" tells you almost nothing if one extraction request quietly costs five credits and one research call costs two hundred and fifty.

Benchmarks that report only an average

The most common benchmark sin is the single number. "Tool A is faster" usually means "Tool A had a lower mean on the author's URL sample on one afternoon." A mean hides the tail completely. A scraper can post a great average and still time out on one request in ten — which is exactly the request your production pipeline will hit at 3am. If a benchmark cannot show you the distribution, it is marketing, not measurement.

What an honest web data benchmark looks like

The fix is not complicated. An honest benchmark publishes the full latency distribution, measures accuracy against a labeled public dataset, and discloses its own worst results as plainly as its best. Here is what that looks like with real numbers, including the one that does not flatter us.

Publishing p50 and p90 across modes, not one number

On Firecrawl's own public scrape-content dataset — 1,000 URLs, run through diagnose_3way.py on 2026-05-08, three providers, 3,000 total requests, zero thrown errors — fastCRW's p50 was 1914 ms, beating Firecrawl's 2305 ms and effectively tied with Crawl4AI's 1916 ms. In fast mode, fastCRW's p90 is 4348 ms — the lowest of the three (Crawl4AI 4754 ms, Firecrawl 6937 ms). A mean would have buried the tail entirely; a full distribution lets you pick the mode that fits your latency budget.

Truth-recall on a labeled public dataset

Speed without accuracy is a stopwatch on a tool that returns the wrong page. Of the 819 labeled URLs in that dataset, fastCRW recovered the correct content on 63.74% of them (522 of 819) — the highest truth-recall of the three, ahead of Crawl4AI at 59.95% and Firecrawl at 56.04%. fastCRW also recovers 34 URLs the other two tools miss entirely — 70% more unique recoveries than crawl4ai (10) and Firecrawl (10) combined. Scrape-success was 91.8% of reachable URLs, with 0 thrown errors across 3,000 requests. We pair those numbers deliberately: "0 errors" alone would overstate the result, because a clean error count says nothing about whether the content was correct.

Choosing the right mode for your latency budget

fastCRW's recall mode does more work to recover hard pages — that is why truth-recall is highest. In fast mode, the p90 drops to 4348 ms — the lowest of the three (Crawl4AI 4754 ms, Firecrawl 6937 ms). The mode you choose determines the accuracy/latency trade-off; we publish the full distribution so you can make that call with real numbers rather than a marketing average.

The third option: open-core and self-hostable

The reason a two-vendor table is structurally incomplete is that both vendors are hosted-only. The third category is open-core: the engine is open source, you can run it yourself for free, and a managed cloud exists if you would rather not. That changes the economics in a way no closed-vs-closed comparison can represent.

Run the same engine for $0 under AGPL-3.0

fastCRW's engine is AGPL-3.0 and self-hostable. Self-hosting costs $0 per 1,000 scrapes — you pay only for your own server. For contrast, Firecrawl's hosted service runs roughly $0.83–5.33 per 1,000 scrapes across its tiers (source: marketing/competitor-prices.lock.md, verified 2026-05-18). The point is not that hosted is bad; it is that a self-host floor gives you a hard worst-case cost ceiling that a metered-only model structurally cannot. See self-host vs managed scraping for the full trade-off.

Drop-in Firecrawl-compatible REST

The engine speaks a Firecrawl-compatible REST surface — /v1/scrape, /v1/crawl, /v1/map, /v1/search. The official Firecrawl SDK works against it after a single base-URL swap. That matters for an honest comparison because it makes the choice reversible: you are not betting your codebase on the third option, you are pointing an existing client at a different endpoint. If it does not work out, you point it back. (Field names and error envelopes diverge slightly — validate the short known list before cutover.)

Single ~8 MB binary, 1 container

Operationally the engine is a single statically-linked Rust binary: roughly an 8 MB Docker image in one container (plus an optional sidecar). The README frames this as a structural fact, not a benchmark claim, and so do we. By contrast a self-hosted Firecrawl stack is in the ~2–3 GB range across five containers. That is the difference between "self-host is a platform-team project" and "self-host is one docker run on a $5 VPS."

What the third option actually includes

An honest third option states its capabilities plainly rather than leaving them to be discovered in production. Here is the plain list.

Screenshots, PDF parsing, anti-bot, and JS rendering are built in

fastCRW produces screenshots — a request for formats: ["screenshot"] returns a base64 PNG via CDP. PDF URLs are auto-detected and parsed server-side. The open core ships built-in anti-bot (12-signal block detection, user-agent rotation, stealth fingerprints, residential-proxy rotation via the proxy field) and an automatic JS-rendering escalation ladder (HTTP → LightPanda → Chrome → proxied Chrome) that recovers thin or blocked pages without extra configuration.

Research and multi-URL extract

The managed /v1/extract endpoint accepts multiple URLs in one request, up to 50 at a time, and a research endpoint (/v2/search/research/papers) fans out across Google, OpenAlex, Semantic Scholar, and arXiv. There is no agentic /v1/agent endpoint, and fastCRW is stateless per request — there is no persistent session between calls.

LLM extraction is a paid managed feature

LLM-based JSON extraction is a managed feature available on paid plans, as is the managed /v1/search answer mode; both run on a managed LLM, metered in credits based on usage and capped per request. The FREE plan has no LLM features.

How to choose for your own workload

The meta-skill this whole article is arguing for is simple: match the tool to the job, not to whichever logo the comparison author was paid to favor.

Match the tool to the job, not the hype

Write down your top three constraints before you read anyone's table. If the binding constraint is "data cannot leave our infrastructure," that one row decides it and self-host wins regardless of every other column. If it is "we extract structured JSON on most pages," billing model matters more than headline tier price. The right tool falls out of your constraints, not out of a star rating. Our own best web scraping API in 2026 roundup and the Firecrawl vs Crawl4AI vs fastCRW honest benchmark are written to that test, not to a predetermined winner.

When the third option is the right call

The open-core third option is the right call when you want a hard cost ceiling, when data residency is a requirement rather than a preference, when you value highest-recall extraction and can tolerate a long-tail latency profile, and when you want the choice to stay reversible via a compatible API. Run the numbers on your own traffic and consult the public methodology at /benchmarks before quoting any figure internally.

The differentiator, in the end, is not a single metric. It is that an open-core tool can publish its full distribution and hand you a free self-host escape hatch — two things a closed two-way comparison page is structurally unable to offer, no matter which of its two vendors you pick.

Sources

  • fastCRW canonical fact sheet (benchmark, pricing, footprint): github.com/us/crw · fastcrw.com
  • 3-way scrape benchmark of record — diagnose_3way.py, Firecrawl public scrape-content dataset (819 labeled URLs of 1,000), single run 2026-05-08
  • Self-host vs hosted cost ($0 vs $0.83–5.33 per 1,000 scrapes): marketing/competitor-prices.lock.md, verified 2026-05-18
  • Firecrawl pricing/docs for context: firecrawl.dev/pricing · docs.firecrawl.dev (verified 2026-05-18)

Related: Best web scraping API in 2026 · Firecrawl vs Crawl4AI vs fastCRW: The Honest Benchmark · Self-host vs managed scraping · Benchmarks

FAQ

Frequently asked questions

Why do web data API comparisons usually pick a paid winner?
Because the format itself is biased: most comparisons pit two hosted, metered vendors against each other, and the author often sells or earns an affiliate commission on one of them. The two-vendor frame quietly excludes self-hostable, open-core tools, so the only question left is 'which is cheaper' rather than 'do I need to pay per request at all.'
What makes a scraping benchmark honest?
Three things: it publishes the full latency distribution across modes instead of a single average, it measures accuracy against a labeled public dataset rather than vibes, and it reports both the wins and the trade-offs. For example, fastCRW leads truth-recall at 63.74% of 819 labeled URLs (diagnose_3way.py, 2026-05-08) and in fast mode posts the lowest p90 of the three at 4348 ms (Crawl4AI 4754 ms, Firecrawl 6937 ms).
What is an open-core web data API?
Open-core means the engine is open source (fastCRW is AGPL-3.0) and self-hostable for free — you pay only for your own server — while a managed cloud exists for teams that would rather not run infrastructure. It changes the economics: self-hosting costs $0 per 1,000 scrapes versus roughly $0.83–5.33 per 1,000 on a hosted-only competitor, and gives you a hard worst-case cost ceiling.
What are fastCRW's current constraints?
fastCRW is stateless per request (no persistent session), has no agentic /v1/agent endpoint, and LLM-based JSON extraction is a managed feature available on paid plans, not on the FREE plan. Screenshots, PDF parsing, anti-bot, residential-proxy rotation, and multi-URL extract (up to 50 URLs per request) are all built in. In recall mode, the chrome-stealth fallback that wins on accuracy also extends tail latency; in fast mode, fastCRW's p90 is 4348 ms — the lowest of the three tools tested.
How do I choose a web data API for my workload?
Write down your top three constraints before reading any comparison table. If data residency is a hard requirement, self-host wins regardless of other rows. If you extract structured JSON on most pages, billing model matters more than headline price. The right tool falls out of your constraints, not a star rating.

Get Started

Try fastCRW free

Run a live request in the playground — no signup required. Or grab a free API key with 500 credits, no credit card.

Continue exploring

More comparison posts

View category archive