Skip to main content

crewai-crw

PyPI version Python License: MIT

CRW web scraping tools for CrewAI — scrape, crawl, map, and search the web with AI agents.

CRW is an open-source web scraper built for AI agents. Single Rust binary, ~6 MB idle RAM, Firecrawl-compatible API.

Installation

pip install crewai crewai-crw
# or
uv add crewai crewai-crw

That's it. No server to install, no cargo install, no Docker. The crw SDK automatically downloads and manages the CRW binary for you.

Quick Start — Zero Config (Subprocess Mode)

from crewai_crw import CrwScrapeWebsiteTool

# Just works — crw SDK handles everything locally
scrape_tool = CrwScrapeWebsiteTool()

Cloud Mode (fastcrw.com)

No local binary needed. Sign up at fastcrw.com and get 500 free credits:

from crewai_crw import CrwScrapeWebsiteTool

scrape_tool = CrwScrapeWebsiteTool(
    api_url="https://fastcrw.com/api",
    api_key="crw_live_...",  # or set CRW_API_KEY env var
)

Advanced: Self-hosted Server

If you prefer running a persistent CRW server (e.g., shared across services):

# Option A: Install binary
curl -fsSL https://raw.githubusercontent.com/us/crw/main/install.sh | bash
crw  # starts on http://localhost:3000

# Option B: Docker
docker run -d -p 3000:3000 ghcr.io/us/crw:latest
scrape_tool = CrwScrapeWebsiteTool(api_url="http://localhost:3000")

Tools

Tool Description
CrwScrapeWebsiteTool Scrape a single URL and get clean markdown
CrwCrawlWebsiteTool BFS crawl a website, collect content from multiple pages
CrwMapWebsiteTool Discover all URLs on a website
CrwSearchWebTool Search the web and get results (cloud only)

CrewAI Example

from crewai import Agent, Task, Crew
from crewai_crw import CrwScrapeWebsiteTool

# Zero config — just works out of the box
scrape_tool = CrwScrapeWebsiteTool()

researcher = Agent(
    role="Web Researcher",
    goal="Research and summarize information from websites",
    backstory="Expert at extracting key information from web pages",
    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()

Crawl an entire site

from crewai_crw import CrwCrawlWebsiteTool

crawl_tool = CrwCrawlWebsiteTool(
    config={
        "maxDepth": 3,
        "maxPages": 50,
        "formats": ["markdown"],
        "onlyMainContent": True,
    }
)

# Use in an agent
researcher = Agent(
    role="Deep Researcher",
    goal="Crawl documentation sites and extract comprehensive information",
    backstory="Expert at gathering information across multiple pages",
    tools=[crawl_tool],
)

Discover all URLs on a site

from crewai_crw import CrwMapWebsiteTool

map_tool = CrwMapWebsiteTool()

# Use in an agent
mapper = Agent(
    role="Site Mapper",
    goal="Discover and catalog all pages on a website",
    backstory="Expert at understanding website structure",
    tools=[map_tool],
)

Search the web (Cloud Only)

Note: Web search is a cloud-only feature. It requires api_url pointing to a CRW cloud instance (e.g. fastcrw.com). Subprocess mode is not supported for search.

from crewai_crw import CrwSearchWebTool

search_tool = CrwSearchWebTool(
    api_url="https://fastcrw.com/api",
    api_key="YOUR_KEY",
)

# Use in an agent
researcher = Agent(
    role="Web Researcher",
    goal="Find the latest information on any topic",
    backstory="Expert at searching the web for relevant information",
    tools=[search_tool],
)

Configuration

Constructor Arguments

Argument Type Default Description
api_url str | None None CRW server URL. If unset, uses subprocess mode (no server needed)
api_key str | None None API key (required for fastcrw.com)
config dict varies per tool Tool-specific configuration

Environment Variables

Both CRW_API_URL and CRW_API_KEY can be set via environment variables as fallbacks:

export CRW_API_URL=https://fastcrw.com/api  # or http://localhost:3000
export CRW_API_KEY=your_api_key              # required for cloud, optional for self-hosted
# With env vars set, no constructor args needed:
tool = CrwScrapeWebsiteTool()

Scrape Config

Key Type Default Description
formats list[str] ["markdown"] Output formats: markdown, html, rawHtml, plainText, links, json
onlyMainContent bool true Strip nav/footer/sidebar
renderJs bool|null null null=auto, true=force JS, false=HTTP only
waitFor int — ms to wait after JS rendering
includeTags list[str] [] CSS selectors to include
excludeTags list[str] [] CSS selectors to exclude

Crawl Config

Key Type Default Description
maxDepth int 2 Maximum link-follow depth
maxPages int 10 Maximum pages to scrape
formats list[str] ["markdown"] Output formats per page
onlyMainContent bool true Strip boilerplate

Map Config

Key Type Default Description
maxDepth int 2 Maximum discovery depth
useSitemap bool true Also read sitemap.xml

Search Config (Cloud Only)

Key Type Default Description
limit int 5 Maximum number of results to return

Compared to Firecrawl Tools

Feature crewai-crw Firecrawl Tools
Requires SDK package No (uses requests) Yes (firecrawl-py)
Requires API key No (subprocess or self-hosted) Yes (always)
Server required No (pip install is all you need) Yes (always)
Self-hosted option Yes (single binary, auto-managed) Complex (5+ containers)
Cloud option Yes (fastcrw.com) Yes (firecrawl.dev)
Idle RAM ~6 MB ~500 MB+

License

MIT

Release files for crewai-crw 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for crewai-crw 0.4.0
File Size Uploaded
crewai_crw-0.4.0.tar.gz 238.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for crewai-crw 0.4.0
File Interpreter ABI Platform
crewai_crw-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 245.6 kB

Release files / crewai_crw-0.4.0.tar.gz

Download URL crewai_crw-0.4.0.tar.gz
Size 238.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a9d634a4d67cecfd164109e69b220188af49b5ac59341ab98ebe453cfc726b97
BLAKE2b-256 checksum
How to use checksums
47037e8360a1eb565b1451a578c1bbfe717385122369370221a1a2dbd3055eba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / crewai_crw-0.4.0-py3-none-any.whl

Download URL crewai_crw-0.4.0-py3-none-any.whl
Size 7.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d2f0e7c3fb4ca13ad6b1cdbdb4dca51141590e4c47e1c72b591e84fa439660e7
BLAKE2b-256 checksum
How to use checksums
cb033d6055e3739e9b145cc7009d993acefdc8f61d2a5aa7ba6628d5b9af9bd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page