OSS Tanbou

Crawl4AI — turn the web into LLM-ready Markdown for RAG, agents, and data pipelines

OSS health 100
About these scores

Discovery score is an unbounded weighted, log-compressed index of stars, watchers, forks, and contributors. Growth momentum is its change over the observed period; OSS health is a 0–100 score from available repository recency, Community Health, and release data.

Stars
83,765
Primary language
Python
License
Apache-2.0
Repository last updated
Sep 16, 2026

Overview

Crawl4AI is a Python crawler and scraper that converts web pages into clean LLM-ready Markdown and structured data. It combines Playwright browser control, asynchronous crawling, sessions, proxies, cookies, CSS/XPath extraction, deep crawling, a CLI, and a Docker/FastAPI server. Version 0.9.3, published August 31, 2026, is a security release addressing SSRF, arbitrary file write, denial of service, and XSS issues.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Extract LLM-friendly Markdown and structured data with full browser rendering when needed

Crawl4AI generates clean Markdown that preserves headings, tables, code, and citation hints, with Fit Markdown and BM25 filtering to reduce noise. It also supports LLM-driven extraction and schema-based structured JSON extraction with CSS or XPath selectors.

For dynamic pages it can execute JavaScript, handle lazy loading and infinite scroll, inspect iframes, capture screenshots, and control sessions, proxies, cookies, and user scripts.

Sources: [2]

Use the same crawler as a Python library, CLI, or Docker/FastAPI service

The project can run as a Python package or CLI, while its Docker image exposes a FastAPI server with JWT authentication for API workflows. Since v0.9.0, the Docker API has moved to secure-by-default behavior with stronger authentication and binding defaults.

Sources: [2][3]

For RAG ingestion, research agents, site-to-Markdown pipelines, and scheduled web collection

It fits workflows that want to clean and structure web content before search, embedding, or agent processing instead of passing raw HTML directly to an LLM. It is particularly useful when one toolchain needs to cover both dynamic browser-based pages and repetitive pages suited to schema extraction.

v0.9.3 is a security release; prioritize upgrades for older Docker/API and PDF-processing deployments

Version 0.9.3 fixes five coordinated-disclosure advisories: arbitrary file write, SSRF, and denial of service in the PDF processing path, plus two XSS issues in the Docker Playground. Because the release is focused on security rather than new features, older internet-facing or PDF-processing deployments should not remain pinned indefinitely.

Sources: [2][3]

Full-browser crawling requires explicit resource, scope, and untrusted-input boundaries

Async browser pools, deep crawling, JavaScript execution, sessions, and proxies can process large sites, but they also increase CPU, memory, and network consumption. Set page limits, concurrency, and caching deliberately rather than allowing an open-ended crawl.

When crawled pages feed RAG or agents, remember that external web content is input you do not control. Keep extracted content in a data boundary rather than mixing it with trusted system instructions.

Sources: [2]

Official sources

  1. [1]unclecode/crawl4ai — GitHub repository metadata(2026-09-16)
  2. [2]Crawl4AI — README(2026-09-16)
  3. [3]Crawl4AI v0.9.3 release(2026-09-16)
  4. [4]Crawl4AI — pyproject.toml(2026-09-16)
Supplemental curator note

Crawl4AI is easiest to evaluate as a preprocessing layer: browser rendering, noise-reduced Markdown/JSON, then RAG or agent consumption. Because v0.9.3 is a security release, existing Docker/API or PDF-processing deployments should verify their pinned version first.

Try it in 3 steps

  1. 1

    Get the source

    git clone --depth 1 https://github.com/unclecode/crawl4ai.git
  2. 2

    Enter the repository

    cd crawl4ai
  3. 3

    Check the official steps

    Continue with the commands in the README Installation, Quick Start, or Getting Started section.

    find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
Check the official README

Growth

Growth trends · Last 30 days

83,765 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
39
Open PRs
158

Development activity is still being collected.

Built with

Categories and tags

GitHub data

GitHub dataView detailed GitHub data
Stars
83,765
Forks
8,658
Watchers
415
Open issues
43
Primary language
Python
License
Apache-2.0
Repository last updated
Sep 16, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.