| name | crawl4ai |
| description | LLM-friendly web crawler — turn any website into clean markdown for AI agents, RAG pipelines, and fine-tuning. |
| version | 1.0.0 |
| author | Hermes Agent |
| license | Apache-2.0 |
| platforms | ["linux","macos","windows"] |
| metadata | {"hermes":{"tags":["web-crawling","scraping","llm","rag","markdown","browser"],"related_skills":["headroom","web-research"]}} |
Crawl4AI — LLM-Friendly Web Crawler
Open-source web crawler designed for LLM consumption. Extracts clean, structured markdown from any website — handling JavaScript rendering, anti-bot measures, and proxy rotation.
Prerequisites
Installation
pip install crawl4ai
Usage
CLI
crawl4ai https://example.com --output article.md
crawl4ai https://spa-site.com --js-render --output content.md
crawl4ai https://blog.example.com --crawl-links --max-pages 10 --output ./blog/
crawl4ai https://target.com --proxy http://proxy:8080 --output data.md
Python API
import asyncio
from crawl4ai import AsyncWebCrawler
async def crawl():
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(url="https://example.com")
print(result.markdown)
print(result.title)
print(result.links)
asyncio.run(crawl())
Batch Crawling
from crawl4ai import AsyncWebCrawler, CrawlerRunConfig
async def batch_crawl(urls):
config = CrawlerRunConfig(
js_render=True,
proxy="http://proxy:8080",
word_count_threshold=100
)
async with AsyncWebCrawler(config=config) as crawler:
results = await crawler.arun_many(urls)
return [r.markdown for r in results]
Integration with Hermes Agent
As Web Research Tool
crawl4ai https://docs.example.com/api --output /tmp/api-docs.md
With Headroom (Token Compression)
crawl4ai https://long-article.com --output /tmp/raw.md
headroom compress /tmp/raw.md --ratio 0.3 --output /tmp/compressed.md
Common Pitfalls
- JS rendering requires a browser: Install with
pip install crawl4ai[full] for Playwright support.
- Rate limiting: Add
--delay 2 between requests to avoid getting blocked.
- Large pages: Use
--word-count-threshold 100 to skip thin content.
- Anti-bot measures: Some sites block headless browsers. Use
--proxy with residential proxies for sensitive targets.
Verification
crawl4ai --version
crawl4ai https://example.com --output /tmp/test.md
cat /tmp/test.md
crawl4ai https://react-app.example.com --js-render --output /tmp/spa-test.md
Sources
- GitHub: unclecode/crawl4ai
- Stars: 66,896 (↑~253/day)
- License: Apache-2.0
- Discovered: 2026-05-29 via GitHub Trending