Webページの情報をLLMに渡したいのに、HTMLのノイズ除去や構造化に手間がかかる――。RAGやAIエージェント開発で、多くのエンジニアが直面する課題です。Crawl4AIは、この問題を根本から解決するために生まれたオープンソースのWebクローラーです。

Crawl4AIの概要

Crawl4AIは、Webページをクロールし、LLMが扱いやすいクリーンなMarkdown形式に変換するPython製のオープンソースツールです。開発者のunclecode氏がGitHubで公開しており、Apache-2.0ライセンス(帰属表示条項付き)のもと完全無料で利用できます。商用利用も可能ですが、公開利用・配布時にはCrawl4AIへの帰属表示(バッジ掲載等)が必要です。

GitHub上では約59,600以上のStarを獲得し、LLM向けWebクローラーとして急速にコミュニティが拡大しています。

項目内容
開発者unclecode
リポジトリgithub.com/unclecode/crawl4ai
ライセンスApache-2.0(帰属表示条項付き)
言語Python(3.10以上)
最新バージョンv0.8.0(2026年1月リリース)
GitHub Stars約59,600+

従来のスクレイピングとの根本的な違い

BeautifulSoupやScrapyといった従来のスクレイピングツールは、HTMLからデータを取り出すことに特化しています。一方、Crawl4AIはデータ取得後の「LLMへの受け渡し」を前提に設計されている点が最大の特徴です。

具体的には、以下の3つの設計思想が従来ツールと異なります。

Markdown変換が標準装備

取得したWebページをBM25アルゴリズムベースで不要なナビゲーションや広告を除去し、クリーンなMarkdownへ自動変換します。従来ツールでは、この前処理を開発者が自前で実装する必要がありました。

LLM抽出ストラテジーの内蔵

LLMを呼び出してWebページから構造化データを抽出する機能が組み込まれています。OpenAI、Anthropic、Ollama(ローカルLLM)など、任意のLLMプロバイダーと連携できます。

非同期処理とブラウザ制御の統合

Playwrightを内蔵し、JavaScriptで動的にレンダリングされるSPA(Single Page Application)やインフィニットスクロールにも対応します。asyncioベースの非同期処理により、複数ページの同時クロールも効率的に実行できます。

主要機能の詳細

Crawl4AIが備える機能を用途別に整理します。

データ抽出の3つのアプローチ

Crawl4AIでは、用途に応じて異なる抽出方式を選択できます。

抽出方式LLM利用適した用途コスト
CSS/XPathセレクタ不要構造が決まったページの定型抽出無料
JsonCssExtractionStrategy不要JSON形式での構造化抽出無料
LLMExtractionStrategy必要非定型ページからの柔軟な抽出LLM API費用

LLMを使わない方式なら、APIコストを一切かけずに構造化データを取得できます。コストを抑えたい場面ではCSS/XPathセレクタやJsonCssExtractionStrategyが有効です。

Deep Crawl(深層クロール)

v0.8.0で強化されたDeep Crawl機能は、単一ページではなくサイト全体を再帰的にクロールする仕組みです。

  • クラッシュリカバリ: 長時間のクロール中にプロセスが中断しても、resume_stateで途中から再開可能
  • Prefetchモード: URLの事前検出により、通常の5〜10倍高速にサイト全体を巡回
  • on_state_changeコールバック: クロール状態の変化をリアルタイムで監視

セッション管理とプロキシ対応

ログインが必要なサイトでも、セッション管理機能でCookieやトークンを保持したままクロールが可能です。プロキシサーバーの設定にも対応しており、IPローテーションを組み合わせた大規模収集にも適しています。

スクリーンショット・PDF生成

クロール時にページのスクリーンショットやPDFを取得する機能も搭載しています。視覚的な記録が必要なケースや、マルチモーダルLLMへの入力として活用できます。

インストールと環境構築

pipによるインストール

pip install crawl4ai
crawl4ai-setup

Python 3.10以上の環境で pip install crawl4ai を実行するとコアパッケージがインストールされます。その後 crawl4ai-setup を実行すると、Playwrightのブラウザ依存関係が自動的にセットアップされます。

インストール後は crawl4ai-doctor コマンドでシステム互換性を検証できます。

用途に応じたオプションインストールも用意されています。

# PyTorch連携が必要な場合
pip install crawl4ai[torch]

# Transformers連携が必要な場合
pip install crawl4ai[transformer]

# 全機能インストール
pip install crawl4ai[all]

[torch][transformer] は大規模モデルを含むため、ディスクとメモリの使用量が大幅に増加します。必要な機能だけを選んでインストールするのが推奨です。

Dockerでの利用

docker pull unclecode/crawl4ai:basic
docker run -p 11235:11235 unclecode/crawl4ai:basic

ポート11235でFastAPIサーバーが起動し、REST API経由でクロール機能を利用できます。チーム開発やCI/CDパイプラインへの組み込みに適しています。

基本的な使い方:コード例で理解する

最小構成:URLからMarkdownを取得

import asyncio
from crawl4ai import AsyncWebCrawler

async def main():
    async with AsyncWebCrawler() as crawler:
        result = await crawler.arun(url="https://example.com")
        print(result.markdown)

asyncio.run(main())

AsyncWebCrawler のコンテキストマネージャー内で arun() を呼び出すだけで、対象URLのMarkdown変換結果を取得できます。わずか数行のコードでWebページがLLM向けテキストに変換されます。

LLMを使った構造化データ抽出

import asyncio
from crawl4ai import AsyncWebCrawler, CrawlerRunConfig
from crawl4ai.extraction_strategy import LLMExtractionStrategy
from pydantic import BaseModel

class Article(BaseModel):
    title: str
    summary: str
    published_date: str

async def main():
    strategy = LLMExtractionStrategy(
        provider="openai/gpt-4o-mini",
        schema=Article.model_json_schema(),
        instruction="記事のタイトル、要約、公開日を抽出してください"
    )
    config = CrawlerRunConfig(extraction_strategy=strategy)

    async with AsyncWebCrawler() as crawler:
        result = await crawler.arun(
            url="https://example.com/article",
            config=config
        )
        print(result.extracted_content)

asyncio.run(main())

PydanticモデルでスキーマをLLMに渡すと、Webページから指定した構造のJSONが返ります。プロバイダーは openai/gpt-4o-minianthropic/claude-sonnet-4-5-20250929ollama/llama3 など自由に切り替えられます。

LLMなしでの構造化抽出(JsonCssExtractionStrategy)

import asyncio
from crawl4ai import AsyncWebCrawler, CrawlerRunConfig
from crawl4ai.extraction_strategy import JsonCssExtractionStrategy

async def main():
    schema = {
        "name": "商品一覧",
        "baseSelector": "div.product-card",
        "fields": [
            {"name": "title", "selector": "h2.product-title", "type": "text"},
            {"name": "price", "selector": "span.price", "type": "text"},
            {"name": "url", "selector": "a", "type": "attribute", "attribute": "href"}
        ]
    }
    strategy = JsonCssExtractionStrategy(schema)
    config = CrawlerRunConfig(extraction_strategy=strategy)

    async with AsyncWebCrawler() as crawler:
        result = await crawler.arun(
            url="https://example.com/products",
            config=config
        )
        print(result.extracted_content)

asyncio.run(main())

CSSセレクタでフィールドを指定するため、LLM APIの呼び出しコストがゼロです。ECサイトの商品情報や求人サイトの掲載一覧など、構造が安定したページに最適です。

RAGパイプラインへの統合

Crawl4AIの出力はMarkdown形式のため、RAG(Retrieval-Augmented Generation)パイプラインとの親和性が高い設計です。

典型的な統合フローは以下のとおりです。

Webページ → Crawl4AI(Markdown変換) → チャンク分割 → Embedding生成 → ベクトルDB格納 → LLMによる回答生成

Crawl4AI自体にもチャンク分割(Chunking Strategy)の仕組みが用意されています。トピックベースやRegexベースで分割方式を選択でき、外部のテキストスプリッターを使わずにRAG向けのデータ前処理が完結します。

MCP(Model Context Protocol)との連携

Crawl4AIはMCPサーバーとしても利用できます。MCPはAnthropicが策定したプロトコルで、AIツール(Claude Desktop、Claude Code、Cursorなど)から外部ツールを呼び出すための標準規格です。

Crawl4AI MCPサーバーを導入すると、Claude CodeやCursorから直接「このURLをクロールしてMarkdownにして」といった指示でWebデータを取得できるようになります。コミュニティ製のMCPサーバー実装が複数公開されており、RAG用のベクトルDB連携まで一体化したものもあります。

Crawl4AIと競合ツールの比較

Crawl4AIの位置づけを明確にするため、代表的なスクレイピングツールと比較します。

比較項目Crawl4AIFirecrawlScrapyBeautifulSoup
ライセンスApache-2.0AGPL-3.0BSD-3-ClauseMIT
料金完全無料無料500クレジット、有料$16〜$333/月完全無料完全無料
LLM連携内蔵(全プロバイダー対応)AI抽出エンドポイント有なし(要自作)なし(要自作)
Markdown出力標準搭載対応なしなし
JS動的ページPlaywright内蔵で対応対応非対応(要追加設定)非対応
非同期処理asyncio対応API経由v2.14でasync対応非対応
Docker/APIFastAPIサーバー有セルフホスト対応なしなし
MCP対応コミュニティ実装有公式MCPサーバー有なしなし
GitHub Stars約59,600+約72,000+約59,700+-

Firecrawlとの違い

Firecrawlは最も頻繁にCrawl4AIと比較されるツールです。両者の決定的な違いはライセンスとコスト構造にあります。

FirecrawlはクラウドAPIとして提供され、無料枠は500クレジット、それ以上はHobby $16/月〜Growth $333/月の月額課金です。ライセンスはAGPL-3.0で、API利用や社内運用では公開義務は生じませんが、ソフトウェアを改変して外部に配布する場合はソースコード公開義務が発生します(出典: Firecrawl公式)。

一方、Crawl4AIはApache-2.0ライセンスで商用利用が可能です(帰属表示条項あり)。セルフホスト前提のためマネージドサービスはありませんが、APIコストが発生しないため大量ページのクロールではコスト優位性が大きくなります。

Scrapy・BeautifulSoupとの違い

ScrapyやBeautifulSoupは汎用的なスクレイピングツールとして長い実績がありますが、LLM向けの機能は搭載されていません。Markdown変換、LLM抽出、チャンク分割といったAIパイプライン向けの前処理を行うには、追加の開発が必要です。

Crawl4AIはこれらの処理をワンパッケージで提供するため、RAGやAIエージェント開発ではセットアップ工数を大幅に削減できます。

実践的なユースケース

ドキュメントサイトの一括取得とRAG構築

技術ドキュメントをCrawl4AIで一括クロールし、ベクトルDBに格納して社内向けAIアシスタントを構築するパターンです。公式ドキュメントのDeep Crawl機能を使えば、サイトマップに沿って全ページを自動巡回できます。

ニュース・ブログの定期収集

RSSフィードの代わりにCrawl4AIで特定サイトを定期クロールし、最新記事をMarkdownで取得する運用です。cronやn8nと組み合わせて自動化すると、手作業なしでデータ収集パイプラインを構築できます。

ECサイトの価格・商品情報モニタリング

JsonCssExtractionStrategyを活用して、ECサイトの商品名・価格・在庫状況を構造化データとして定期取得します。LLMのAPI費用が不要なため、大量商品の監視にも低コストで対応できます。

導入時の注意点

robots.txtと利用規約の遵守

Crawl4AIはあくまでクロール実行のツールであり、対象サイトのrobots.txtや利用規約に従う責任は利用者側にあります。スクレイピング対象の許可範囲を事前に確認し、適切なクロール間隔を設定してください。

リソース消費

Playwrightベースのブラウザ自動化を行うため、ヘッドレスブラウザのメモリ消費量はBeautifulSoupなどの軽量パーサーに比べて大きくなります。大量ページを同時クロールする場合は、サーバーのメモリとCPUリソースに注意が必要です。

セルフホスト運用の考慮

クラウドマネージドサービスが公式には提供されていないため、可用性や監視は自前で設計する必要があります。Docker + FastAPIサーバー構成で運用する場合は、v0.7.7以降のリアルタイム監視ダッシュボードを活用するとオペレーション負荷を軽減できます。

まとめ

Crawl4AIは、WebデータをLLMやRAGに活用したいエンジニアにとって有力な選択肢です。Apache-2.0ライセンスで完全無料、Markdown変換・LLM抽出・非同期クロールがワンパッケージにまとまっている点は、他のツールにはない強みです。

まずは pip install crawl4ai でインストールし、数行のコードでMarkdown変換を体験してみてください。LLMとの連携は後からでも段階的に導入できます。