Web crawling and scraping framework · Active pre-1.0 project with published releases, broad documentation, tests, Docker deployment, and a large repository community; production maturity is not independently verified.

unclecode/crawl4ai

Apache-2.0 Python web-crawling and scraping framework that produces LLM-ready Markdown and structured data through browser automation, adaptive and deep crawling, CLI, SDK, Docker API, and a documented MCP server that exposes crawl, HTML, screenshot, PDF, JavaScript, and library-context tools directly to Claude Code.

web crawlingweb scrapingbrowser automationdata extractionRAG ingestionagent toolingself-hosted infrastructureweb-to-Markdown
Routing score
80.0
Readiness
Usable for development and self-hosted workflows, but deployments should use a current security release and receive careful hardening, resource controls, and legal review.
License
Apache-2.0
Maintenance
active
Components
20
Revision
0

Selection

Select when

  • Claude Code needs a self-hosted MCP surface for crawling, Markdown, screenshots, PDFs, or JavaScript execution.
  • Dynamic pages require browser rendering, scrolling, sessions, cookies, or custom interaction scripts.
  • A pipeline needs both heuristic Markdown and schema-based structured extraction.
  • Multi-page discovery requires BFS, DFS, best-first, adaptive, or resumable crawling.
  • Teams want Python library, CLI, REST, Docker, and MCP access to the same crawler.
  • Sensitive workflows favor local deployment over a mandatory hosted crawling account.
  • Concurrent crawling needs streaming, resource monitoring, rate limiting, and memory-aware dispatch.
  • RAG ingestion needs cleaner and relevance-filtered web-to-Markdown output.

Boundaries

Avoid when

  • A native Claude Code plugin or portable Agent Skill is required.
  • A small static-page fetch can be handled without browser binaries or a self-hosted service.
  • The deployment cannot safely process hostile URLs, HTML, PDFs, JavaScript, or user-supplied configuration.
  • The organization cannot maintain current security patches and hardened Docker settings.
  • Website terms, robots rules, privacy obligations, or law prohibit the intended collection.
  • Authenticated browser profiles or cookies cannot be exposed to automation risk.
  • Deterministic extraction accuracy is required without site-specific validation.
  • The environment cannot support Python and browser dependencies or Docker resources.
  • Anti-bot bypass is expected to work reliably across protected sites.
  • External LLM data transfer is unacceptable but LLM-based extraction is mandatory.

Strengths

Capabilities

Generates clean and relevance-filtered Markdown with links, citations, tables, code, and reference lists.Extracts structured JSON through CSS, XPath, schemas, or optional LLM-driven strategies.Runs asynchronous browser crawling with Chromium, Firefox, and WebKit support stated in the README.Handles dynamic content through JavaScript execution, waits, scrolling, virtual scroll, lazy loading, iframes, and Shadow DOM flattening.Supports deep crawling with BFS, DFS, best-first strategies, cancellation, checkpoints, and resumable state.Provides adaptive statistical and embedding-oriented crawling to prioritize query-relevant content.Runs concurrent multi-URL crawls with dispatchers, streaming results, rate limiting, and memory-aware controls.Maintains sessions, cookies, persistent profiles, authenticated browser state, custom headers, user agents, and proxies.Extracts links, media, metadata, screenshots, PDFs, tables, and preprocessed HTML.Offers a Python SDK and the documented crwl command-line interface.Provides caching, prefetch URL discovery, webhooks, asynchronous jobs, health checks, Prometheus metrics, and monitoring dashboards.Ships a Dockerized FastAPI server with browser pooling, playground, REST endpoints, and multi-architecture images.Exposes MCP over SSE and WebSocket for MCP-compatible clients including Claude Code.Provides MCP tools named md, html, screenshot, pdf, execute_js, crawl, and ask.Supports remote browser control through Chrome DevTools Protocol.Provides C4A-Script for scripted page navigation, interaction, conditionals, loops, procedures, and JavaScript evaluation.Includes customizable crawler hooks in the Python and Docker workflows, with Docker hooks disabled by default in a documented security release.Supports optional LLM providers for extraction and question-based workflows through provider configuration and credentials.Includes local stress-testing and benchmarking tools for concurrency, throughput, and memory observations.Publishes a best-effort CycloneDX software bill of materials.

Risk profile

Risks and limitations

  • Uncertainty: only selected first-party files were supplied, so crawler internals, MCP implementation, security controls, tests, CI results, and SBOM contents were not directly inspected.
  • Uncertainty: metadata and documentation contain dates through 2026 relative to this analysis context, so release recency, adoption, and current dependency availability cannot be independently reconciled.
  • Uncertainty: repository claims such as battle tested, fastest, 5–10x prefetch gains, 3x performance, and anti-bot success were not independently reproduced.
  • The project remains version 0.x in the supplied README, so APIs and behavior may still change despite stated stable releases.
  • The Docker guide contains inconsistent version text and examples, including a stated latest 0.9.2 while commands use 0.8.6, reducing setup confidence.
  • First-party release notes disclose multiple past critical issues including RCE, SSRF, arbitrary file write, authentication bypass, XSS, denial of service, and a dependency supply-chain compromise.
  • Browser automation and Docker deployment require substantial dependencies, downloaded browsers, shared memory, and operational resources.
  • MCP exposes consequential tools including JavaScript execution, crawling, screenshots, and PDF generation, so client permissions and server isolation require careful control.
  • Persistent browser profiles, cookies, headers, proxies, API tokens, crawled content, screenshots, and PDFs may contain sensitive information.
  • LLM extraction can transmit crawled content and prompts to configured providers under their separate privacy and retention terms.
  • Robots compliance is not evidenced in the supplied core documentation, and anti-bot or authenticated scraping can violate site rules or law.
  • Dynamic rendering and heuristic or LLM extraction cannot guarantee completeness, fidelity, factual accuracy, or stable schemas across changing sites.

First-party notes document secure-by-default changes in v0.9.0 and fixes through v0.9.3 for RCE, SSRF, arbitrary file write, auth bypass, XSS, denial of service, hardcoded JWT secrets, unsafe deserialization, and a compromised dependency. Docker hooks were disabled by default in v0.8.0. Deploy only a current patched release, keep authentication enabled, bind privately, restrict egress and MCP clients, constrain resources, protect secrets, and treat URLs, request bodies, page content, PDFs, scripts, hooks, and checkpoints as untrusted. No independent audit was supplied.

Component inventory

20 documented components

module / SDK

Crawl4AI Python library

Async Python crawler that produces Markdown, HTML, links, media, screenshots, tables, and structured extraction results.

README.md
command

Browser profile manager

Interactive CLI flow for creating persistent browser profiles with saved login state.

docs/apps/linkdin/README.md
service / deployment

Crawl4AI Docker server

Self-hosted FastAPI crawler service with browser pooling, API endpoints, MCP, playground, and monitoring.

deploy/docker/README.md
service API

Crawl REST API

Provides synchronous and NDJSON-streaming multi-URL crawl operations.

deploy/docker/README.md
module / SDK

Crawl4aiDockerClient

Async Python client for authenticated or unauthenticated Docker-server crawling, streaming, and schema retrieval.

deploy/docker/README.md
Claude Code integration / tool surface

Crawl4AI MCP provider

Exposes crawling, Markdown, HTML, screenshot, PDF, JavaScript, and library-context tools to Claude Code over MCP.

deploy/docker/README.md
web application

Docker Playground

Interactive interface for configuring crawls, testing operations, and generating REST request JSON.

deploy/docker/README.md
operations service

Monitoring dashboard and APIs

Shows live system, request, browser-pool, and cleanup metrics, with REST, WebSocket, and Prometheus access.

README.md
workflow / service API

Asynchronous crawl and LLM jobs

Runs background crawl or LLM-extraction jobs with polling or retrying webhook notifications.

deploy/docker/README.md
automation language

C4A-Script

Visual web-automation language with navigation, waits, clicks, typing, scrolling, control flow, variables, procedures, and JavaScript evaluation.

docs/md_v2/apps/c4a-script/README.md
web application / tutorial

C4A-Script interactive tutorial

Local editor, Blockly builder, recorder, timeline, compiler output, and practice playground for C4A-Script.

docs/examples/c4a_script/tutorial/README.md
browser extension

Crawl4AI Chrome Extension

Visual Click2Crawl schema builder, Markdown selector, automation recorder, and Crawl4AI Python-code generator.

docs/md_v2/apps/crawl4ai-assistant/README.md
example workflow

Prospect-Wizard

Three-stage LinkedIn discovery, LLM/embedding analysis, and interactive organization-graph visualization demo.

docs/apps/linkdin/README.md
example web service

Website-to-API scraper app

Web UI and REST API for schema-based or direct-LLM structured scraping with model management and request history.

docs/examples/website-to-api/README.md
module / crawling workflow

AdaptiveCrawler

Query-directed crawler with statistical or embedding strategies, stopping thresholds, persistent knowledge export, and custom-strategy support.

docs/examples/adaptive_crawling/README.md
developer command suite

Stress-test and benchmark suite

Exercises `arun_many` and dispatchers at configurable concurrency, records memory and throughput, and generates comparison reports.

tests/memory/README.md
web application / service

Crawl4AI Marketplace

Terminal-themed catalog backend and frontend for Crawl4AI apps, articles, categories, sponsors, search, and statistics.

docs/md_v2/marketplace/README.md
GitHub Actions workflows

Release and Docker publication pipelines

Split maintainer workflows publish Python releases, create GitHub releases, and build cached multi-architecture Docker images.

.github/workflows/docs/README.md

Technical profile

Requirements and configuration

License
Apache-2.0
Language
Python
Repository
unclecode/crawl4ai
Default Branch
main
Package
crawl4ai on PyPI
Cli
crwl plus crawl4ai-setup and crawl4ai-doctor are documented
Python
Python 3.10+ is stated in the Docker guide and release notes
Browser Engine
Playwright-based asynchronous crawling is the documented default
Browsers
Chromium, Firefox, and WebKit are stated
Deployment
Python package or self-hosted Docker FastAPI server
Architectures
Docker images state linux/amd64 and linux/arm64 support
Api
REST, streaming NDJSON, background jobs, webhooks, health, schema, and metrics endpoints are documented
Mcp
SSE at /mcp/sse and WebSocket at /mcp/ws on the Crawl4AI server
Claude Code
Documented as an MCP-compatible client using the SSE endpoint
Mcp Tools
md, html, screenshot, pdf, execute_js, crawl, and ask
Output
Markdown, preprocessed HTML, structured JSON, links, media, metadata, screenshots, PDFs, tables, and crawl state
Llm
Optional provider-backed extraction is configured through LLMConfig or server settings
Observability
Monitoring dashboard, WebSocket updates, health checks, Prometheus metrics, and stress-test reports are documented
Supply Chain
A best-effort CycloneDX SBOM is included, while completeness and accuracy are explicitly disclaimed
Repository Status
Public, not archived, with issues, discussions, wiki, and Apache-2.0 metadata

Classification

How it enters the stack

Tool SurfaceExternal Cli LibraryInfrastructure

Evidence: the Python/CLI/Docker crawler runs alongside Claude Code, and its self-hosted MCP server exposes seven documented tools over SSE or WebSocket. It is also browser and API infrastructure; no native Claude plugin or skill is evidenced.

Runs Alongside · medium setup effort · high confidence · automated

Evidence and risk

Primary sources

first_party_fileREADME.mdhttps://github.com/unclecode/crawl4ai/blob/main/README.md
first_party_filesbom/README.mdhttps://github.com/unclecode/crawl4ai/blob/main/sbom/README.md

Routing context

Conflicts, complements, and synergies

alternative_to

gh_d4vinci_scrapling

Both are Python web-scraping frameworks with browser workflows and Claude-facing MCP support, while Crawl4AI emphasizes LLM-ready Markdown, adaptive crawling, and a Docker service.

high confidence
built_on

gh_microsoft_playwright

The supplied README states Playwright is the default asynchronous browser layer and documents Playwright browser installation.

high confidence
overlaps_with

gh_panniantong_agent_reach

Both can give Claude Code web-retrieval capabilities, but Agent-Reach routes across upstream tools while Crawl4AI supplies its own crawler and MCP service.

medium confidence