crw-mcp
The crw-mcp server provides web scraping and crawling capabilities for AI agents via MCP tools:
crw_scrape: Scrape a single URL and return content as markdown, HTML, or links. Supports filtering by CSS selectors (include/exclude), extracting only main content, and LLM-based structured data extraction using a JSON schema.crw_crawl: Start an async breadth-first crawl of a website with configurable depth and page limits, and optional structured data extraction per page. Returns a job ID for polling.crw_check_crawl_status: Poll the status of an async crawl job and retrieve its results using the job ID.crw_map: Discover all URLs on a website by crawling it and/or reading itssitemap.xml.
Additional capabilities include automatic JavaScript/SPA rendering via headless browsers (LightPanda or Chrome), and web search with full page content retrieval (cloud only).
Quickstart — your first scrape in 30 seconds
Get a free API key → fastcrw.com/register — 500 free credits (1 credit ≈ 1 page), no card.
export CRW_API_KEY="crw_live_..."# cURL — works anywhere, no SDK
curl -X POST https://api.fastcrw.com/v1/scrape \
-H "Authorization: Bearer $CRW_API_KEY" -H "Content-Type: application/json" \
-d '{"url":"https://example.com","formats":["markdown"]}'pip install crwfrom crw import CrwClient
crw = CrwClient() # reads CRW_API_KEY from your env
page = crw.scrape("https://example.com",
formats=["markdown"])
print(page["markdown"])npm install crw-sdkimport { CrwClient } from "crw-sdk";
const crw = new CrwClient(); // reads CRW_API_KEY from your env
const page = await crw.scrape("https://example.com",
{ formats: ["markdown"] });
console.log(page.markdown);In both SDKs page is a plain object (markdown, metadata, contentType, …), so page["markdown"] / page.markdown is clean content:
# Example Domain
This domain is for use in documentation examples without needing permission. Avoid use in operations.
[Learn more](https://iana.org/domains/example)Over cURL you get the same fields wrapped in {"success": true, "data": { … }}.
Prefer no SDK? Every example works over plain HTTP against https://api.fastcrw.com.
That first scrape spent 1 of your 500 free credits — see plans → when you need more.
Got one page? Crawl the whole site: crw.crawl("https://docs.example.com") returns every page — then search, map, and extract in Core operations. Full docs: Quickstart → · API reference →
Related MCP server: webpeel
Why fastCRW?
Most accurate — the highest truth-recall (how much of the real page content it captures): 63.7% on 819 labeled URLs in Firecrawl's public dataset, vs Firecrawl 56.0% and Crawl4AI 60.0% — and it recovers 34 pages both miss.
Fast median, tunable latency — the fastest median latency (p50 1914 ms — a statistical tie with Crawl4AI's 1916 ms, ahead of Firecrawl's 2305 ms). Recall mode maximizes accuracy; fast mode trades the recall tail for lower latency. One config toggle — pick accuracy or latency.
Lighter — one static binary, ~50 MB RAM idle. No Redis, no Node, no Chromium heap in the request path — it runs on a $5 VPS.
Search, map, and crawl run on the same engine — built-in web search (a free self-hostable search backend), so there's no separate search vendor and no per-query search-API bill. See the full benchmark →
Open source (AGPL-3.0), passing OpenSSF Best Practices, and published on PyPI · npm · crates.io · Homebrew · APT — with a benchmark you can rerun yourself, not marketing math.
What you get
Any URL → LLM-ready output. Clean markdown, HTML, links, or schema-validated JSON — no HTML soup, no boilerplate.
One API, six operations.
searchthe web andscrapea page, ormap/crawl/extract/monitora whole site — see below.Drop-in Firecrawl compatibility. Migrate existing Firecrawl code by changing one base URL.
Managed or self-hosted, same API. No exit cost — develop against the free open-source binary, ship to the cloud, or the reverse. Nothing changes but the base URL.
Use it in your AI agent (MCP)
fastCRW ships a built-in MCP server, so any MCP host can search/scrape/crawl with no glue code.
# Claude Code — managed
claude mcp add crw \
-e CRW_API_URL=https://api.fastcrw.com -e CRW_API_KEY=$CRW_API_KEY \
-- npx -y crw-mcp
# Claude Code — embedded (no server, no key — runs the engine locally, on your machine)
claude mcp add crw -- npx -y crw-mcpPer-client recipes (Cursor, Windsurf, Cline, Continue.dev, Codex, Gemini CLI): docs.fastcrw.com/mcp-clients/
Agent Skills
Reusable instruction packs that teach coding agents when and how to use each verb. Install all 13 into every detected agent with one command:
npx skills add us/crw # all skills, every detected agent
npx skills add us/crw@crw-scrape # just one
npx skills add -g us/crw # global (user-level)crw (hub) · crw-search · crw-scrape · crw-map · crw-crawl · crw-parse ·
crw-extract · crw-watch · crw-research · crw-dynamic-search (biggest token-saver) ·
crw-best-practices · crw-migrate · crw-self-host. Full catalog: skills/.
Core operations
Verb | Endpoint | Does |
Search |
| Web search (own search backend), optionally scrape each result |
Scrape |
| One URL → markdown / HTML / links / schema JSON |
Map |
| Discover every URL on a site, fast |
Crawl |
| Async crawl of a whole site (returns a job id you poll) |
Extract |
| Structured fields from a JSON Schema |
Monitor |
| Diff a page vs a snapshot — the change-tracking building block behind scheduled monitoring |
SDK return shapes: scrape / extract → one object · map → list of URLs · crawl → list of result objects · search → list, or a dict grouped by source when sources=[...] is set.
Full reference: docs.fastcrw.com/#rest-api.
SDKs & integrations
pip install crw # Python package: crw
npm install crw-sdk # Node / TypeScript package: crw-sdk (not crw)from crw import CrwClient
client = CrwClient() # reads CRW_API_KEY; set CRW_LOCAL=1 for local embedded mode
client.scrape("https://example.com", formats=["markdown", "links"])
# .search() .map() .crawl() .extract() — one method per operation in the table aboveimport { CrwClient } from "crw-sdk";
const crw = new CrwClient(); // reads CRW_API_KEY; new CrwClient({ apiUrl }) for self-host
await crw.scrape("https://example.com", { formats: ["markdown", "links"] });
// .search() .map() .crawl() .extract() — same methods, all typedThe TypeScript client is typed and zero-dependency; its cloud path is pure fetch, so it runs
on Node 18+, Bun, Deno, and edge runtimes. The Python client is synchronous — wrap long calls
like crawl() / extract() in asyncio.to_thread inside async code. Both client SDKs (crw,
crw-sdk) are MIT-licensed — installing them imposes nothing on your code; AGPL-3.0 covers only the engine.
LangChain and CrewAI integrations ship in the package:
from crw.integrations.langchain import CrwLoader # pip install crw[langchain]
from crw.integrations.crewai import CrwScrapeWebsiteTool # pip install crw[crewai]All integrations → · SDK examples →
Managed cloud vs self-host
Same binary, same API in both modes — switch anytime by changing the base URL. Most teams run on the managed cloud: it scales with your traffic, rotates proxies, and stays patched, so you ship features instead of operating a scraper.
Managed — | Self-host | |
Best for | Shipping fast at any scale, with zero infrastructure to run | Data-residency, air-gapped, or compliance-bound deployments |
Scale | Grows with you — 500 free credits to millions of pages/month, higher concurrency per tier, no capacity planning | You size, scale, and monitor the machines yourself |
Proxies & rendering | Managed global proxy network + rendering, rotated for you to get through blocked pages | Bring your own proxy pool and browser tier |
Ops & reliability | Fully managed — dashboard, usage metering, API keys, monitored infra; nothing to patch or babysit | You run, patch, upgrade, and monitor it |
Start | Sign up — 500 free credits, no card |
|
Cost | Free tier, then plans from $11/mo — pricing | $0 license — you pay for the infra and your team's time |
License | You call an API — no copyleft on your code | AGPL-3.0 — copyleft if you bundle the engine or run a modified public service |
Air-gapped note: the crw engine itself makes no telemetry calls. The default Docker Compose stack disables the LightPanda renderer's third-party telemetry (
LIGHTPANDA_DISABLE_TELEMETRY=true). If you run a fully air-gapped deployment, verify egress for any renderer sidecars you enable and pin their images to a digest. See self-hosting hardening.
Self-host in one command
docker run -p 3000:3000 ghcr.io/us/crw
curl http://localhost:3000/v1/scrape \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'Or install the CLI and scrape straight from your shell:
brew install us/crw/crw # macOS & Linux
curl -fsSL https://apt.fastcrw.com/setup.sh | sudo sh # Debian & Ubuntu
curl -fsSL https://fastcrw.com/install | sh # any platform, no package manager
crw scrape https://example.comPrefer Cargo, Docker Compose with a stealth tier, or building from source? All install paths and production hardening: docs.fastcrw.com/installation/ · self-hosting guide →
Why it's fast (built in Rust)
You don't need Rust to use fastCRW — it's why the numbers below are what they are. The engine is a single static binary: no Redis, no Node runtime, no Python venv, no headless-browser sidecar parked in the request path. Cold start is sub-second and idle RAM sits around ~50 MB, so one process saturates a $5 VPS instead of a multi-container stack. An agent that fires N scrapes per task pays the network floor N times — fastCRW strips process-spawn, JIT-warmup, and browser-navigation overhead out of every one.
Benchmark
The numbers above come from Firecrawl's own public 1,000-URL dataset, run identically across all three tools with the same matcher — a fairness control, not a looser number. Reproducible, not marketing math. Full table, methodology, and the repro harness: BENCHMARKS.md · fastcrw.com/benchmarks.
Migrating from Firecrawl
New projects use native /v1. Existing Firecrawl v2 SDK code works against the
/firecrawl/v2/* compatibility layer — often just a base-URL swap (point your existing
Firecrawl client at api.fastcrw.com, the address it sends requests to):
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_url="https://api.fastcrw.com", api_key="YOUR_CRW_API_KEY")Compatibility reduces migration work, not every behavioral difference — check request
bodies, response fields, and unsupported features before moving production traffic.
Field-by-field diff: COMPATIBILITY-firecrawl.md.
Security
SSRF protection (blocks loopback, private IPs, cloud metadata, non-HTTP schemes), optional constant-time Bearer auth, RFC 9309 robots.txt, token-bucket rate limiting, and resource caps (1 MB body, depth 10, 1,000 pages). Hardening guide →
Contributing
Issues and PRs welcome. make hooks installs the pre-commit hook; make check runs the same
checks as CI. Setup, architecture, and crate layout: CONTRIBUTING.md.
Contributors
License
Open source under AGPL-3.0. Calling the API over the network — managed or self-hosted — imposes nothing on your own code. AGPL only applies if you bundle the engine's code directly inside your own app (not just call its API) or run a modified copy as a public service; for those cases the managed offering at fastcrw.com includes a commercial carve-out, and standalone commercial licenses are available — hello@fastcrw.com.
Links
Docs · API reference · MCP setup · Benchmarks · Pricing · Changelog · Discord · X
Star History
It is the sole responsibility of end users to respect websites' policies when
scraping. By default, fastCRW respects robots.txt directives.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceWeb scraping MCP server for Al agents. 6 tools: extract clean text/markdown from any URL, structured scraping with CSS selectors, full-page screenshots via Playwright, link extraction with regex filtering, metadata extraction (OG tags, Twitter cards), and Google search. Free tier: 50 requests/IP/day.Last updated6MIT
- Alicense-qualityBmaintenanceThe web data platform for AI agents. Fetch, search, crawl, extract, monitor, and screenshot any URL. 55+ domain extractors, 65-98% token savings. 7 MCP tools included.Last updated33212AGPL 3.0
- AlicenseAqualityAmaintenanceWeb content extraction for AI agents. 10 tools: scrape, crawl, map, batch, extract, summarize, diff, brand, search, research. Uses TLS fingerprinting to bypass anti-bot without a headless browser. Outputs LLM-optimized markdown with 67% fewer tokens than raw HTML.Last updated102,087AGPL 3.0

HatFetchofficial
AlicenseAqualityAmaintenanceEnables LLM agents to read any website by scraping and crawling into clean Markdown, automatically bypassing bot detection with residential proxies.Last updated31,221MIT
Related MCP Connectors
Web scraping for AI agents. Converts URLs to clean, LLM-ready Markdown with anti-bot bypass.
Turn the web into structured, reliable, actionable enterprise data for AI Agents
Enable language models to perform advanced AI-powered web scraping with enterprise-grade reliabili…
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/us/crw'
If you have feedback or need assistance with the MCP directory API, please join our Discord server