Framework Integrations
CRW integrates with popular AI agent frameworks and workflow tools. Since CRW exposes a Firecrawl-compatible REST API, it also works as a drop-in replacement anywhere Firecrawl is used.
CrewAI
Published PyPI package: crewai-crw
pip install crewai crewai-crw
Four ready-to-use tools — no custom BaseTool subclasses needed:
from crewai import Agent, Task, Crew
from crewai_crw import (
CrwScrapeWebsiteTool,
CrwCrawlWebsiteTool,
CrwMapWebsiteTool,
CrwSearchWebTool,
)
# Self-hosted (default: localhost:3000)
scrape_tool = CrwScrapeWebsiteTool()
# Or use fastCRW cloud
scrape_tool = CrwScrapeWebsiteTool(
api_url="https://fastcrw.com/api",
api_key="your-api-key",
)
# Or set env vars
# export CRW_API_URL=https://fastcrw.com/api
# export CRW_API_KEY=your-api-key
researcher = Agent(
role="Web Researcher",
goal="Research and summarize information from websites",
tools=[scrape_tool],
)
task = Task(
description="Scrape https://example.com and summarize the content",
expected_output="A summary of the page content",
agent=researcher,
)
crew = Crew(agents=[researcher], tasks=[task])
result = crew.kickoff()
Source: github.com/us/crewai-crw
LangChain
Published PyPI package: langchain-crw
pip install langchain-crw
from langchain_crw import CrwLoader
# Self-hosted (default: localhost:3000)
loader = CrwLoader(url="https://example.com", mode="scrape")
docs = loader.load()
# Cloud (fastcrw.com)
loader = CrwLoader(
url="https://example.com",
api_url="https://fastcrw.com/api",
api_key="crw_live_...",
mode="crawl",
params={"max_depth": 3, "max_pages": 50},
)
docs = loader.load()
# Search the web (cloud only)
loader = CrwLoader(
mode="search",
query="web scraping tools",
api_url="https://fastcrw.com/api",
api_key="crw_live_...",
)
docs = loader.load()
Source: github.com/us/langchain-crw
Flowise (PR pending)
CRW node submitted: PR #6066
Provides Scrape, Crawl, and Map nodes that connect to your CRW instance. Configure the CRW API URL in the node settings.
Agno (PR pending)
CRW toolkit submitted: PR #7183
Once merged, usage will be:
from agno.agent import Agent
from agno.tools.crw import CrwTools
agent = Agent(tools=[CrwTools()])
agent.print_response("Scrape https://example.com and summarize it")
OpenClaw
Published npm package: openclaw-plugin-crw
openclaw plugins install openclaw-plugin-crw
{
"plugins": {
"crw": {
"apiKey": "crw_live_..."
}
}
}
Cloud is the default. For self-hosted, add "apiUrl": "http://localhost:3000".
Source: github.com/us/openclaw-plugin-crw
n8n
Published npm package: n8n-nodes-crw
Install via n8n UI: Settings > Community Nodes > Install > n8n-nodes-crw
Or via Docker:
docker run -e EXTRA_COMMUNITY_PACKAGES=n8n-nodes-crw n8nio/n8n
Source: github.com/us/n8n-nodes-crw
MCP (10+ Platforms)
CRW includes a built-in MCP server that works with any MCP-compatible platform. See the MCP documentation for setup instructions for:
- Claude Code, Claude Desktop
- Cursor, Windsurf
- Cline, Continue.dev
- OpenAI Codex CLI
- Gemini CLI
- VS Code GitHub Copilot Agent
- Roo Code
Automation Tools
| Tool | Integration path | Notes |
|---|---|---|
| n8n | Community node | n8n-nodes-crw |
| Make (Integromat) | HTTP module | Standard REST API integration |
| Zapier | Webhooks | Use webhook triggers with the API |
| GitHub Actions | curl in workflow | Useful for scheduled scraping jobs |
Firecrawl Drop-in Replacement
CRW is API-compatible with Firecrawl. Any project that uses FIRECRAWL_BASE_URL or similar config can switch to CRW with zero code changes:
# Point Firecrawl SDK at your CRW instance
export FIRECRAWL_API_URL=http://localhost:3000
from firecrawl import FirecrawlApp
# This talks to CRW, not Firecrawl
app = FirecrawlApp(api_url="http://localhost:3000")
result = app.scrape_url("https://example.com")
Note: The Firecrawl Python SDK has changed its API across versions. The above works with
firecrawl-pyv1.x. Check the Firecrawl docs for the latest SDK usage.
Python (Direct HTTP)
import requests
response = requests.post("https://fastcrw.com/api/v1/scrape", json={
"url": "https://example.com",
"formats": ["markdown", "links"]
})
data = response.json()["data"]
print(data["markdown"])
Node.js (Direct HTTP)
const response = await fetch("https://fastcrw.com/api/v1/scrape", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
url: "https://example.com",
formats: ["markdown", "links"]
})
});
const { data } = await response.json();
console.log(data.markdown);
Building Custom Integrations
The API is straightforward enough that most integrations are a thin wrapper:
- Set the
Authorizationheader with your API key. - POST JSON to the endpoint you need (
/v1/scrape,/v1/crawl,/v1/map,/v1/search). - Parse the JSON response.
No SDK is required — the consistent API design means any HTTP client works.
Choosing Between Cloud and Self-Hosted
| Factor | Cloud | Self-hosted |
|---|---|---|
| Setup time | Instant | 5-10 minutes |
| Maintenance | Managed | You handle updates |
| Data residency | Managed infrastructure. Available on fastcrw.com (cloud) | Your infrastructure |
| Cost model | Credit-based | Your server costs only |
| Rate limits | Per plan | Unlimited |
Both options expose the same API, so your integration code works with either.
Endpoint Support Matrix
Not every integration supports every endpoint. Search is a cloud-only feature that requires the fastcrw.com API backend.
| Integration | Scrape | Crawl | Map | Search | Extract |
|---|---|---|---|---|---|
| CrewAI | Yes | Yes | Yes | Yes (cloud) | -- |
| LangChain | Yes | Yes | Yes | Yes (cloud) | -- |
| OpenClaw | Yes | Yes | Yes | Yes (cloud) | -- |
| n8n | Yes | Yes | Yes | Yes (cloud) | -- |
| Dify | Yes | Yes | Yes | Yes (cloud) | -- |
| MCP Server | Yes | Yes | Yes | -- | -- |
| Firecrawl SDK (drop-in) | Yes | Yes | Yes | -- | Yes |
| Direct HTTP | Yes | Yes | Yes | Yes (cloud) | Yes |
:::note The MCP server is designed for self-hosted use and does not expose the search endpoint. Use the Python SDK, a framework integration, or direct HTTP calls for search. :::
All Integrations
| Framework | Type | Status | Package / PR |
|---|---|---|---|
| CrewAI | PyPI package | Published | crewai-crw |
| LangChain | PyPI package | Published | langchain-crw |
| OpenClaw | npm plugin | Published | openclaw-plugin-crw |
| n8n | npm node | Published | n8n-nodes-crw |
| Flowise | Node | PR pending | #6066 |
| Agno | Toolkit | PR pending | #7183 |
| Dify | Plugin | Ready | GitHub |
| MCP (10+ platforms) | Built-in | Shipped | MCP docs |
| Firecrawl SDK | Drop-in | Works now | API compatible |