crawl4ai
Open-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key.
Install / Use
claude mcp add unclecode -- npx -y github:unclecode/crawl4aiIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of crawl4ai
crawl4ai scores 100/100 on our quality scale, 5th of 762 AI & Machine Learning skills we index (top 1%).
Its MCP Server is 26 KB long, well organised into 25 sections with 16 code examples: a thorough specification that gives an agent plenty to work with.
With 84,354 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 2 days ago, so crawl4ai is actively maintained.
- Our last check on 2026-09-27 found the source still online.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
crawl4ai compared with similar skills
crawl4ai has the highest quality score among these 4 similar skills, though 2 alternatives have been updated more recently.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| crawl4ai (this skill)by unclecode | 100 | 84.4k | 2d ago | MCP Server |
| claude-memby thedotmack | 100 | 94.8k | 1d ago | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 85.7k | 12d ago | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 84.3k | 15d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 73.9k | today | CLAUDE.md |
Frequently asked questions
- How do I install crawl4ai?
- Run
claude mcp add unclecode -- npx -y github:unclecode/crawl4ai. The install tabs above show the steps for each supported agent. - Which AI agents does crawl4ai work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is crawl4ai safe to use?
- It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is crawl4ai still maintained?
- The repository was last updated 2 days ago, so crawl4ai is actively maintained.
Skill content
View source on GitHub🚀🤖 Crawl4AI: the open-source web crawler for LLMs and AI agents
<div align="center"><a href="https://trendshift.io/repositories/11716" target="_blank"><img src="https://trendshift.io/api/badge/repositories/11716" alt="unclecode%2Fcrawl4ai | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
Latest: v0.9.4 (23 Sep 2026) · all releases →
<a href="https://crawl4ai.com/?ref=readme-banner"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/unclecode/crawl4ai/main/docs/assets/cloud-launch-banner-dark.svg"> <img alt="Crawl4AI Cloud is live. Soft launch: your first $10 is on us until 31 December 2026, no card. Get your key." src="https://raw.githubusercontent.com/unclecode/crawl4ai/main/docs/assets/cloud-launch-banner-light.svg" width="960"> </picture> </a> </div>Crawl4AI turns any website into clean, LLM-ready Markdown for RAG, AI agents and data pipelines. Run the open-source web crawler and scraper yourself, free forever, or use it hosted with one key: scrape, search and extract through one API, with MCP for your agent.
Two ways to use Crawl4AI
🐍 Run it yourself: open source, forever
pip install -U crawl4ai
crawl4ai-setup # installs the browser, once
import asyncio
from crawl4ai import AsyncWebCrawler
async def main():
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(url="https://news.ycombinator.com")
print(result.markdown)
asyncio.run(main())
Docker server, CLI and every option: Installation · docs.crawl4ai.com
☁️ Or use the cloud: no browsers, no proxies
-
Verify your email and your first $10 pack is on us (until 31 December 2026, then $5 to start). No card. -
Get any page as Markdown:
curl -s https://api.crawl4ai.com/scrape \ -H "Authorization: Bearer $CRAWL4AI_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://news.ycombinator.com"}' | jq -r .markdownThe same key works for
/search,/answer,/extractand many URLs at once (/scrape/batch,/scrape/jobs). Pay as you go: live prices. -
Give it to your AI agent. Claude Code shown; Codex, Cursor and OpenCode →
claude mcp add --transport http crawl4ai https://api.crawl4ai.com/mcp \ --header "Authorization: Bearer $CRAWL4AI_KEY"
Which one?
| | 🐍 Library | 🐳 Your own server | ☁️ Crawl4AI Cloud |
|---|---|---|---|
| Runs the browsers | you, in your Python process | you, in Docker on your machine | we do |
| JS-heavy pages and bot walls | your settings, your proxies | your settings, your proxies | handled for you, automatically |
| Web search | – | – | /search and /answer |
| Price | free, forever | free (your hosting) | pay as you go; your first $10 is on us |
I grew up on an Amstrad, thanks to my dad, and never stopped building. In grad school I specialized in NLP and built crawlers for research. That’s where I learned how much extraction matters.
In 2023, I needed web-to-Markdown. The “open source” option wanted an account, API token, and $16, and still under-delivered. I went turbo anger mode, built Crawl4AI in days, and it went viral. Now it’s the most-starred crawler on GitHub.
I made it open source for availability, anyone can use it without a gate. Now I’m building the platform for affordability, anyone can run serious crawls without breaking the bank. If that resonates, join in, send feedback, or just crawl something amazing.
That platform is live now: Crawl4AI Cloud.
</details> <details> <summary>Why developers pick Crawl4AI</summary>- LLM-ready output: smart Markdown with headings, tables, code and citation hints
- Fast in practice: async browser pool, caching, minimal hops
- Full control: sessions, proxies, cookies, user scripts, hooks
- Adaptive intelligence: learns site patterns, explores only what matters
- Deploy anywhere: no keys needed, CLI and Docker, or the hosted cloud
✨ Features
<details> <summary>📝 <strong>Markdown generation</strong></summary>- 🧹 Clean Markdown: headings, lists, tables and code blocks, in a structure an LLM reads well.
- 🎯 Fit Markdown: filters remove menus, footers and boilerplate:
PruningContentFilterLXML,BM25ContentFilter(for a query) andLLMContentFilter. - 🔗 Citations: page links become a numbered reference list.
- 🛠️ Your own strategy: plug in a custom Markdown generator.
☁️ Same in the cloud: POST /scrape returns this Markdown, with no browser to run. Docs →
- 🔎 CSS and XPath schemas: fast extraction with no LLM (
JsonCssExtractionStrategy,JsonXPathExtractionStrategy,RegexExtractionStrategy). - 🪄 Schema generator: describe what you want once;
generate_schemawrites a reusable schema. - 🤖 LLM extraction: any LLM provider, open-source or hosted, into a typed JSON schema (
LLMExtractionStrategy). - 🧱 Chunking: topic, regex and sentence chunking for long pages.
- 🌌 Cosine similarity: find the chunks that match a query (
CosineStrategy).
☁️ Same in the cloud: POST /extract, with no LLM key of your own. Docs →
- 🖥️ Your own browser: persistent profiles with saved logins, cookies and settings.
- 🔄 Remote browsers: connect over the Chrome DevTools Protocol (CDP).
- 🔒 Sessions: keep a browser state across multi-step crawls.
- 🧩 Proxies: with authentication and rotation.
- 🕶️ Stealth mode:
enable_stealth, and an undetected-browser adapter for sites that detect automation. - ⚙️ Full control: headers, cookies, user agents, viewport.
- 🌍 Chromium, Firefox and WebKit.
- 🕸️ Deep crawl: BFS, DFS and best-first strategies, with crash recovery (
resume_state) for long crawls. - 🧠 Adaptive crawling:
AdaptiveCrawlerstops when it has learned enough to answer your query. - 🌱 URL discovery:
AsyncUrlSeeder(sitemaps, Common Crawl) andDomainMapper;prefetch=Truefinds URLs 5 to 10 times faster. - 🚀 Dynamic pages: run JavaScript, wait for elements, scroll the full page (
scan_full_page) for infinite scroll and lazy images. - 📸 Screenshots and PDFs of any page.
- 🖼️ Media and links: images, audio, video,
srcset, internal and external links, iframes, metadata. - 📂 Raw HTML and local files:
raw:andfile://. - 🛠️ Hooks at every step of a crawl.
- 💾 Caching to skip repeated fetches.
- ⚡ Many URLs at once:
arun_manywith a memory-adaptive dispatcher.
☁️ Same in the cloud: up to 50 URLs in one streamed call, or 10,000 in a background job. Docs →
</details> <details> <summary>🐳 <strong>Self-hosting (Docker)</strong></summary>- 🔐 Secure by default: every endpoint needs your
CRAWL4AI_API_TOKEN. - 🧰 REST API:
/md,/html,/crawl,/crawl/stream,/screenshot,/pdf,/execute_js. - 🤖 MCP: connect Claude Code and other agents to your own server.
- 📊 Monitoring dashboard and playground, a browser pool with pre-warmed pages.
- 🏗️ AMD64 and ARM64 images.
☁️ Rather not run a server? The cloud is the same idea, hosted. Get a key →
</details> <details> <summary>☁️ <strong>What the cloud adds</strong></summary>- 🔍 Web search API:
GET /search, browser-free, ranked and cleaned. Docs → - 💬 Answers:
GET /answergives a direct answer to a question (experimental). Docs → - 🧪 Extraction without your own LLM key:
POST /extract. Docs → - 🧗 JS-heavy pages and bot walls: handled automatically; you never pick an engine. Docs →
- 🤝 MCP for your agent: one line in Claude Code, Codex, Cursor or OpenCode. Docs →
<a id="installation"></a>
🛠️ Installation
<details> <summary>🐍 <strong>pip</strong></summary>pip install -U crawl4ai
crawl4ai-setup # installs and sets up the browser
crawl4ai-doctor # checks the installation
If the browser setup fails, install it by hand:
python -m playwright install --with-deps chromium
Pre-release versions: pip install crawl4ai --pre
Development install, for contributors:
git clone https://github.com/unclecode/crawl4ai.git
cd crawl4ai
pip install -e ".[all]" # or: pip install -e . (the core only)
</details>
<details>
<summary>🐳 <strong>Docker server</strong></summary>
The server needs a token. Without one it answers only inside its container.
export CRAWL4AI_API_TOKEN="$(openssl rand -hex 32)"
docker run -d -p 11235:11235 --name crawl4ai --shm-size=1g \
-e CRAWL4AI_API_TOKEN="$CRAWL4AI_API_TOKEN" \
unclecode/crawl4ai:latest
Test it (allow about 10 seconds for the start):
curl -s http://localhost:11235/md \
-H "Authorization: Bearer $CRAWL4AI_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://news.ycombinator.com"}' | jq -r .markdown
The dashboard is at http://localhost:11235/dashboard, the playground at http://localhost:11235/playground. LLM keys, MCP and every setting: Self-hosting guide.
# A page as Markdown
crwl https://news.ycombinator.com -o markdown
# Deep crawl, breadth first, at most 10 pages
crwl https://docs.crawl4ai.com --deep-crawl bfs --max-pages 10
# Ask a question about a page (needs an LLM key: crwl config)
crwl https://www.example.com/products -q "Extract all product prices"
</details>
🔬 Advanced usage examples
More in docs/examples.
<details> <summary>📝 <strong>Clean and fit Markdown</strong></summary>import asyncio
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode
from crawl4ai.content_filter_strategy import PruningContentFilterLXML
from crawl4ai.markdown_generation_strategy import DefaultMarkdownGenerator
async def main():
run_config = CrawlerRunConfig(
cache_mode=CacheMode.BYPASS,
markdown_generator=DefaultMarkdownGenerator(
content_filter=PruningContentFilterLXML(
Truncated for display — read the full file on GitHub.
Related Skills
claude-mem
94.8kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
85.7kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Understand-Anything
84.3kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
73.9kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
