mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dataevaluationupdated 22 Aug 2026

crw review

fastCRW is a Rust service and command-line tool that turns web pages into markdown, links, screenshots, or structured JSON. It combines scraping, crawling, URL discovery, web search, and schema extraction behind its own API, a Firecrawl-compatible route, SDKs, and an MCP server for coding agents.

+145stars / 7d
Verdict

fastCRW is a credible choice when one compact service must feed web data to applications and MCP agents, particularly for teams testing a move from Firecrawl. The local option buys control, but it also hands you browser rendering, proxy quality, search configuration, and licensing decisions. Trial it against your own protected and geography-sensitive targets before committing.

We ran it

Lab card: what happened when we ran crwScreenshot of crw (fastcrw.com)
Install✓ · 11s1 packages · 1 MB
Buildn/ano build script
Testsn/ano test script
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo797 files~111,403 lines of source · 14.8 MB · 18 CI workflows · Dockerfile · tests dir

Answers from our run

Does crw build from source?

Dependencies installed in 11 seconds (1 packages), and the project has no separate build step. We cloned commit 4d4d9fc into a clean Debian container with 3 CPUs and no project-specific setup.

Does crw have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does crw have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use crw?

Teams scraping heavily protected sites as a hard requirement: open issue #189 documents CARFAX content being blocked by client-side bot detection even with Chromium.

What are the alternatives to crw?

Firecrawl, Crawl4AI, Jina Reader. fastCRW is a credible choice when one compact service must feed web data to applications and MCP agents, particularly for teams testing a move from Firecrawl.

Setup3/5Tiny npm path, while full self-hosting needs several operator choices
Docs4/5Clear deployment choices, APIs, migration, and benchmark method
Community3/5Recent release and active queue, with a small contributor base
Maturity3/5Useful surface and frequent fixes, with hard scraping gaps open

Discussed on

  1. hnShow HN: FastCRW: 6MB binary self-hosted Firecrawl alternative3 points

Who it’s for

Teams that want one self-hosted service for scrape, crawl, map, search, and extraction jobs.
Firecrawl users who want to test a compatible API before changing application code.
Claude Code and other MCP users that need web research tools attached to an agent.
Operators willing to choose and maintain renderers, proxies, search, authentication, and capacity.
Developers who prefer a single Rust binary over a larger browser-first stack.

Who it’s NOT for

Teams scraping heavily protected sites as a hard requirement: open issue #189 documents CARFAX content being blocked by client-side bot detection even with Chromium.
Buyers who assume cloud and local deployments behave identically: the README warns that capabilities and response shapes can differ.
Closed-source distributors unwilling to meet AGPL-3.0 terms or arrange another license: the engine and MCP server use AGPL, and the README asks users to contact the company about embedding.
Developers who need sitemap files included in map results today: open issue #440 says /map finds site URLs but omits sitemap file URLs.
Teams requiring the lab run to prove the Rust server builds and passes tests: the measured npm package had no build or test target, so neither step ran.

Setup reality

At commit 4d4d9fc, npm install succeeded in 11 seconds, adding one package and using 1 MB. npm audit reported zero known vulnerabilities. There was no npm build script or test target, so both steps were skipped.

The npm result covers only the repository's small Node dependency surface. Running the product means choosing the managed API and a CRW key, or operating the local Rust service. Self-hosters must choose renderers, search, authentication, proxies, and capacity.

The checkout held 797 files, about 111,403 source lines, and used 14.8 MB. It includes a Dockerfile, a Compose file, a tests directory, and 18 CI workflow files, but our measured Node path did not execute those Rust or container checks.

One engine for several web data jobs

fastCRW bundles five related operations: scrape one page, crawl a bounded site, map its URLs, search the web, and extract fields into structured output. Results can include markdown, HTML, links, screenshots, or schema-shaped JSON. Applications can call the REST API through Python or TypeScript SDKs, while the CLI handles direct jobs. A compatibility layer gives Firecrawl users a less disruptive trial path.

The MCP server is more than a badge on the README. Its installer detects supported AI tools and adds both the server and a CRW skill. The repository contains Claude Code material, including a plugin marketplace entry and a web-scraping guide. That makes fastCRW relevant to developers who want an agent to gather current pages without manually copying content into the prompt. It also raises the usual MCP question: which sites, private networks, and credentials should the agent be allowed to reach?

The project offers a managed API and a local service. Cloud users receive managed proxies, JavaScript rendering, search, and scaling. Local users keep data and network access under their control, but must choose renderers, search, authentication, proxies, and capacity. The README explicitly says capabilities and response shapes can differ between deployments. Check the capabilities endpoint before assuming code tested against the hosted service will behave the same on your server.

The compact binary has an operations bill

A Rust binary is an appealing base for this workload. It can keep the HTTP and orchestration layer small, and fastCRW includes a Dockerfile and Compose setup for teams that prefer containers. The repository also ships SDKs rather than forcing every client to hand-roll request polling and result parsing. Crawl jobs, extraction jobs, and browser processes still consume resources according to the sites and concurrency involved, regardless of how small the idle service looks.

Rendering is where the tidy story gets messy. Ordinary HTML can take a cheap path. JavaScript-heavy pages may need Lightpanda or Chromium, and protected pages can require proxies or still refuse to cooperate. Open issue #189 documents a CARFAX report that returns a browser-not-supported shell because of client-side bot detection. The issue says changing the user agent did not solve it, and even real headless Chromium remained blocked. Teams buying this for protected targets should treat a sample-domain bakeoff as mandatory.

Geography adds another constraint. An open design issue says callers currently choose a proxy exit country explicitly, while locale and timezone signals may not match that country. The document discusses possible inference and retry work, but labels it research and phases rather than shipped behavior. If regional storefronts or geo-restricted pages matter, pass the country deliberately and inspect the returned content. A successful HTTP status alone does not prove that the desired regional page was captured.

What happened when we ran it

Our lab cloned commit 4d4d9fc into an unprivileged Debian container with 3 CPUs, 8 GB of RAM, no secrets, and Node 22. The checkout contained 797 files, about 111,403 lines of source, and occupied 14.8 MB. It had a Dockerfile, a Compose file, a tests directory, and 18 CI workflow files.

The npm install succeeded in 11 seconds. It added one package, used 1 MB on disk, and npm audit reported zero known vulnerabilities across all severity levels. The top-level package file contains a single markdown-processing dependency, which explains the small result. This measurement should not be mistaken for installing and exercising the complete Rust service.

There was no npm build script or target, so the lab skipped the build. There was also no npm test script or target, so tests were skipped. The repository clearly contains Rust crates and tests, and its contributor guide points to Make targets, but our sandbox measurement did not run them. We therefore have no lab evidence about Rust compilation, crawler correctness, browser teardown, or container startup from this run.

Evidence, licensing, and maintenance

fastCRW publishes a benchmark document, its harness, and saved results comparing its scraper with Firecrawl and Crawl4AI on a public dataset. We did not reproduce that benchmark, so its results remain the project's measurements. Use your own domain mix too: public datasets rarely mirror the anti-bot systems, document types, and regional pages that make scraping expensive.

Licensing deserves an early conversation. The engine and MCP server are AGPL-3.0, while the Python and TypeScript SDKs are MIT. The README offers a contact for embedding licensing. Internal network use, a modified hosted service, and distribution can create different obligations, so teams shipping a proprietary product should have counsel review the intended architecture before it hardens around the API.

Maintenance is current. The repository was pushed on August 21, 2026, and release 0.31.0 was published three days earlier. That release added search controls and MCP registration work, then fixed scraping cases involving origin error pages, registrar parking pages, PDF handling, and renderer errors. The 14 open items include issues and pull requests. Recent pull requests cover dependencies, MCP documentation, and the next release.

The fix list is encouraging because it names real failure modes, though it also shows how much page classification a crawler must get right. One open request asks /map to include sitemap file URLs, which it currently omits. If sitemap discovery is part of an indexing workflow, compensate for that gap or wait for the behavior to land.

Who should choose it

Choose fastCRW when you want a compact, self-hostable web data API, need MCP access for Claude Code or another agent, or want to test Firecrawl-compatible calls against a different engine. Its deployment choices and disclosed benchmark method make evaluation straightforward.

Walk away if protected sites must always render, if local and cloud behavior must match without capability checks, or if AGPL terms do not suit the product. Run a trial list drawn from your actual workload, including blocked pages, PDFs, JavaScript applications, and regional sites. The result quality on those URLs matters more than a clean quickstart.

Alternatives

ProjectWhat it isPick it when
Firecrawl gh↗A hosted and self-hosted web data API for search, scraping, crawling, and extraction.pick this instead when you want the original API ecosystem, its hosted service, and broader existing integrations.
Crawl4AI gh↗A Python crawler aimed at producing clean web content for AI applications.pick this instead when Python-native control and an Apache-2.0 license matter more than a Firecrawl-compatible server.
Jina ReaderA simple URL-to-LLM-input service accessed through a prefixed web address.pick this instead when you mainly need quick page conversion and do not need a full crawl, map, or self-hosted extraction stack.

What people are saying

  1. [github-trending] us/crw

Sources

  1. fastCRW README
  2. fastCRW v0.31.0 release
  3. fastCRW benchmark methodology
  4. Protected-site scraping issue
  5. Sitemap map result issue

More data reviews

turso · TrackersListCollection · dash · getcontact-cli · awesome-zhuiju-free · iggy · the whole board →