by us
Fast, lightweight Firecrawl/Tavily alternative in Rust. Web scraper, crawler & search API with MCP server for AI agents. Drop-in Firecrawl-compatible API (/scrape, /crawl, /search). 2.3x faster than Tavily, 1.5x faster than Firecrawl in 1K-URL benchmarks. 6 MB RAM, single binary. Self-host or use managed cloud.
# Add to your Claude Code skills
git clone https://github.com/us/crwLast scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T16:24:58.455Z",
"npmAuditRan": true,
"pipAuditRan": true
}crw is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by us. Fast, lightweight Firecrawl/Tavily alternative in Rust. Web scraper, crawler & search API with MCP server for AI agents. Drop-in Firecrawl-compatible API (/scrape, /crawl, /search). 2.3x faster than Tavily, 1.5x faster than Firecrawl in 1K-URL benchmarks. 6 MB RAM, single binary. Self-host or use managed cloud. It has 315 GitHub stars.
Yes. crw passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/us/crw" and add it to your Claude Code skills directory (see the Installation section above).
crw is primarily written in Rust. It is open-source under us on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh crw against similar tools.
No comments yet. Be the first to share your thoughts!
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 crw
from 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-sdk
import { 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 →
Search, map, and crawl run on the same engine — built-in web search (SearXNG, 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.
search the web and scrape a page, or map / crawl / extract / monitor a whole site — see below.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-mcp
Per-client recipes (Cursor, Windsurf, Cline, Continue.dev, Codex, Gemini CLI): docs.fastcrw.com/mcp-clients/
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/.
| Verb | Endpoint | Does |
|---|---|---|
| Search | POST /v1/search |
Web search (SearXNG), optionally scrape each result |
| Scrape | POST /v1/scrape |
One URL → markdown / HTML / links / schema JSON |
| Map | POST /v1/map |
Discover every URL on a site, fast |
| Crawl | POST /v1/crawl |
Async crawl of a whole site (returns a job id you poll) |
| Extract | POST /v1/scrape formats:["json"] |
Structured fields from a JSON Schema |
| Monitor | POST /v1/change-tracking/diff |
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.
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 above
import { 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 typed
The 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 →
Same binary, same