自動化

Firecrawlとは?料金プラン・使い方・セルフホストの制約とCrawl4AI比較【2026年9月】

Firecrawlとは?料金プラン・使い方・セルフホストの制約とCrawl4AI比較【2026年9月】

Firecrawlは、URLを渡すとLLMにそのまま渡せるMarkdownやJSONを返すWebデータAPIです。JavaScriptの描画、サイト内の巡回、URL一覧の取得までAPI側で処理します。本記事は2026年9月時点の公式ドキュメントと料金ページをもとに、料金プランとクレジットの減り方、Python SDK 4.44での使い方、セルフホスト版で使えない機能を整理しました。

まとめ:Firecrawlの料金と導入形態の要点

  • 何をするツールか:scrape(1ページ)・crawl(サイト巡回)・map(URL一覧)・search(Web検索+取得)を1つのAPIで提供します。現行はAPI v2です。
  • 料金:Freeは月1,000クレジットで無料。有料は年払い換算でHobby月16ドル(5,000クレジット)、Standard月83ドル(10万)、Growth月333ドル(50万)、Scale月599ドル(100万)です。
  • クレジットの減り方:scrapeとcrawlは1ページ1クレジット、mapは1回1クレジット、LLMによるJSON抽出は1ページ+4クレジットです。キャッシュから返っても1クレジットかかります。
  • セルフホスト:本体はAGPL-3.0で、Docker Composeで起動できます。ただしAgent・Interact・ダッシュボード・enhanced proxyはクラウド版だけの機能です。
  • 選び方:月数千ページまでならクラウドのHobby以下、ブラウザ運用を自分で抱えられて費用を抑えたいならCrawl4AIやセルフホスト、と分けるのが現実的です。

FirecrawlとはURLをLLM向けデータに変えるWebデータAPI

本体はGitHubのfirecrawl/firecrawlでOSSとして公開されており、2026年9月26日時点でスター約18.5万です。公式は自らを「The web data API for AI agents」と説明しています。HTMLを取ってきてパーサーを書く代わりに、APIの戻り値がそのままLLMの入力になる形で返る点が、従来のスクレイピングライブラリとの違いです。

主なエンドポイントとクレジット消費

API v2の主要エンドポイントは次のとおりです。消費クレジットは全プラン共通です(公式Billingページ)。

エンドポイント 役割 消費クレジット
scrape 1URLをMarkdown・HTML・JSON等で取得 1/ページ
crawl リンクをたどってサイトを巡回取得 1/ページ
map サイト内のURL一覧だけを取得 1/回
search Web検索(本文取得は任意) 検索結果10件ごとに2+本文取得分
interact ブラウザを操作するセッション 2〜7/分
agent URL指定なしの自律的な調査 変動(1日5回無料)

このほか、PDFなどのファイルを変換するparse、ページの変化を定期確認するmonitor、複数URLをまとめて処理するbatch scrapeがあります。extractも残っていますが、2026年5月15日のv2.10で非推奨(deprecated)になりました。公式ドキュメントもagentを「the successor to /extract」と案内しています。新しく組むならagentか、scrapeのJSONフォーマットを使います。

BeautifulSoup・Playwrightで自作する場合との違い

自作のスクレイパーでは、HTML取得・JavaScript描画・本文抽出・ページ送り・リトライを自分で組みます。Firecrawlはこれらを1回のAPI呼び出しにまとめ、既定のonlyMainContentでヘッダーやナビゲーションを除いた本文を返します。反対に、特定のDOM要素をCSSセレクタで正確に抜きたい、1日数十万ページの取得条件を細かく制御したい、といった用途では自作も候補になります。費用はサーバー・プロキシ・開発保守工数を含めて比較します。自作の基本はBeautifulSoupの解説記事、ブラウザ操作が必要なケースはSeleniumの解説記事で扱っています。スクレイピング全般の法務上の注意はスクレイピングとは?クローリング・APIとの違いを参照してください。

Firecrawlの料金プランとクレジット計算

プラン別の月額・クレジット・上限

月額は年払い時の1か月あたりの金額です(公式Pricingページ、2026年9月26日取得)。月払いは割高で、Hobbyは月19ドルです。

プラン 月額(年払い) 月間クレジット 同時ブラウザ scrape上限/分 crawl上限/分
Free 0ドル 1,000 2 10 2
Hobby 16ドル 5,000 5 100 20
Standard 83ドル 100,000 25 500 100
Growth 333ドル 500,000 50 5,000 1,000
Scale 599ドル 1,000,000 100 10,000 2,000

1,000ページあたりに直すと、Hobbyは3.2ドル、Standardは0.83ドル、Scaleは0.6ドルです。約4分の1という差は、各プランの月間クレジットをすべて使い切った場合の単価比較です。月5,000ページを少し超える程度なら、Hobbyに追加クレジットを購入するほうがStandardより支払額を抑えられます。請求は米ドル建てで、未使用のクレジットは翌月へ繰り越せません。例外は年払いのScale(1か月)とEnterprise(2か月)だけです。

ページ数とオプションで決まるクレジット計算

基本は「1ページ1クレジット」で、オプションごとに加算されます。加算は重ねがけです。

  • JSONフォーマット(LLMによる構造化抽出):+4/ページ。1ページ5クレジットになります。
  • PDFの解析:PDFの1ページごとに+1
  • Zero Data Retention:+1/ページ
  • enhanced proxy(ボット対策の強いサイト向け):+0。追加料金はかかりません。

見落としやすいのは次の3点です。まず、キャッシュから返った結果も1クレジットかかります。公式は「Caching improves speed and latency, not credit usage」と明記しており、maxAgeは速度対策であって節約策ではありません。次に、対象サイトが403や404を返してもFirecrawlが結果を返せば課金されます。metadata.statusCodeを見て、同じURLへの再試行を止めてください。通常のscrapeは、サイトが応答しないなどでドキュメントが返らなければ非課金です。ただし、プロンプトインジェクション検査の実行後は失敗しても5クレジット、lockdownのキャッシュミスは1クレジットなど、結果が返らなくても課金される例外があります。最後に、crawlはlimitを省くと既定値が10,000ページです。巡回範囲を見積もったうえでlimitを明示します。

クレジットが尽きたときの402と従量課金

残高がゼロになると、Freeプランと従量課金(pay-as-you-go)を切っている有料プランではHTTP 402が返ります。有料プランで従量課金を有効にすると、5ドル単位でクレジットが自動購入されます。5ドルで買えるクレジット数はHobbyが1,000、Standardが2,000、Growthが2,500、Scaleが5,000です。月の従量課金上限はダッシュボードで設定でき、APIキーごとに日・週・月単位のクレジット上限も付けられます。検証用のキーには上限を付けておくと、ループの誤りでクレジットを使い切る事故を防げます。

Firecrawlの使い方:Python SDKでの実装

APIキーの取得とSDKのインストール

firecrawl.devでアカウントを作ると、ダッシュボードにfc-で始まるAPIキーが表示されます。PythonはPyPIのfirecrawl-py(2026年9月20日公開の4.44.0)、Node.jsはnpmの@mendable/firecrawl-js(4.41.0)を使います。SDKのライセンスはどちらもMITです。

pip install firecrawl-py==4.44.0
export FIRECRAWL_API_KEY=fc-xxxxxxxx

公式ドキュメントは「APIキーなしでも始められる(keyless free tier)」と案内しています。しかしfirecrawl-py 4.44.0でFirecrawl()をキーなしで作ると、ValueError: No API key providedで止まります。互換用に同時に初期化されるv1クライアントがキーを必須にしているためです。SDKを使うなら、最初からキーを設定してください。

scrapeで1ページをMarkdownに変換

import os
from firecrawl import Firecrawl

fc = Firecrawl(api_key=os.environ["FIRECRAWL_API_KEY"])

doc = fc.scrape(
    "https://docs.firecrawl.dev/introduction",
    formats=["markdown"],
    only_main_content=True,  # ヘッダー・ナビ・フッターを除く
    max_age=3600000,         # 1時間以内のキャッシュがあれば使う(ミリ秒)
)
print(doc.metadata.status_code, doc.metadata.title)
print(doc.markdown[:300])

SDKはAPIのcamelCaseをsnake_caseに変換します(onlyMainContent→only_main_content、statusCode→status_code)。requestsをモックして送信内容を確かめたところ、max_ageを省いた場合はmaxAge: 14400000(4時間)が送られていました。OpenAPI定義の既定値2日(172800000)はAPIを直接呼んだ場合の値で、SDK経由では4時間になります。

JSONフォーマットで構造化データを抽出

Pydanticのモデルから作ったJSON Schemaをformatsに渡すと、LLMがページからその形でデータを抜き出します。1ページ5クレジットです。

from pydantic import BaseModel


class Plan(BaseModel):
    name: str
    monthly_credits: int


class Pricing(BaseModel):
    plans: list[Plan]


doc = fc.scrape(
    "https://www.firecrawl.dev/pricing",
    formats=[{
        "type": "json",
        "schema": Pricing.model_json_schema(),
        "prompt": "各プランの名前と月間クレジット数を抜き出す",
    }],
)
print(doc.json)

取得先のページにプロンプトインジェクションが仕込まれていると、抽出結果が乗っ取られることがあります。外部サイトを無差別に処理する用途では、JSONフォーマットのオプションcheckPromptInjection(さらに+4クレジット)を検討してください。

mapとcrawlでサイト全体を取得

いきなりcrawlを回さず、mapで発見できたURLの一覧と構成を確認してから範囲を絞ります。ただしmapは全URLの網羅を保証せず、次の例も最大20件の取得なので、サイト全体の総数確認には使えません。mapは返すURLが何件でも1回1クレジットです。

# URL一覧だけを取得(1回1クレジット)
res = fc.map("https://docs.firecrawl.dev", search="billing", limit=20)
for link in res.links:
    print(link.url)

# パスを絞って巡回(1ページ1クレジット)
job = fc.crawl(
    "https://docs.firecrawl.dev/features",
    include_paths=["^/features($|/.*)"],
    exclude_paths=["^/features/enterprise.*"],
    limit=30,
    max_discovery_depth=2,
    formats=["markdown"],
)
print(job.status, job.completed, job.credits_used)

include_pathsとexclude_pathsは既定ではURLのパス部分に対する正規表現で、ドメインやクエリ文字列は対象外です。SDKでregex_on_full_url=Trueを指定すると、クエリ文字列を含むURL全体を対象にできます。開始URLもinclude_pathsで判定されるため、開始URLが一致しないとページが0件で終わることがあります。上の例で^/features/.*と書くと、開始URLの/features自体が一致しません。既定のcrawlは開始URLより下の階層だけを巡回し、兄弟・親のパスまで広げるにはcrawl_entire_domain=Trueを指定します。

429と402のエラー処理

SDKにも再試行の仕組みはありますが、自動で再試行するのは502と通信例外だけです。レート制限の429はRateLimitError、残高不足の402はPaymentRequiredErrorとしてそのまま送出されます。

import time
from firecrawl.v2.utils.error_handler import PaymentRequiredError, RateLimitError


def scrape_with_retry(url, attempts=5):
    for i in range(attempts):
        try:
            return fc.scrape(url, formats=["markdown"])
        except RateLimitError:
            if i == attempts - 1:
                break
            time.sleep(2 ** i)  # 次の再試行まで1, 2, 4, 8秒と待つ
        except PaymentRequiredError:
            raise SystemExit("クレジット残高ゼロ(402)。プランか従量課金の上限を確認")
    raise RuntimeError("429が解消しない")

レート制限はAPIキー単位ではなくチーム単位で数えられます。同じチームのキーを複数の処理で使うと、上限を分け合う点に注意してください。

MCPサーバーによるClaude・Cursor連携

公式のMCPサーバー(npmのfirecrawl-mcp、3.25.5)を使うと、Claude DesktopやCursorからscrape・search・crawlなどをツールとして呼べます。

env FIRECRAWL_API_KEY=fc-xxxxxxxx npx -y firecrawl-mcp

リモート接続ならhttps://mcp.firecrawl.dev/v2/mcpにAPIキーをBearerで付けて接続します。キーなしで接続した場合に使えるのはfirecrawl_scrape・firecrawl_search・firecrawl_parseの3ツールだけです。ツールをエージェントに組み込む設計はAIエージェントの作り方、ブラウザ操作系CLIとの比較にはagent-browserの解説が参考になります。

Firecrawlのセルフホスト手順とクラウド版との機能差

Docker Composeでの起動手順

公式のセルフホストガイドは、タグv2.11.162に固定して手順を検証しています。別のタグではComposeの構成が変わることがあるため、まずこのタグで動かします。

git clone https://github.com/firecrawl/firecrawl.git
cd firecrawl
git checkout v2.11.162

# リポジトリ直下に .env を作り、次の4行を書く
# USE_DB_AUTHENTICATION=false
# POSTGRES_USER=postgres
# POSTGRES_PASSWORD=32文字以上のランダム文字列
# POSTGRES_DB=postgres

docker compose up --build -d
curl http://localhost:3002/v0/health/readiness
curl -X POST http://localhost:3002/v2/scrape \
  -H 'Content-Type: application/json' \
  -d '{"url": "https://example.com", "formats": ["markdown"]}'

この構成はAPI認証を切った評価用で、TLS・永続化・冗長化はありません。公式も「not a production architecture」と明記しています。readinessは死活確認にすぎず、Redis・PostgreSQL・Playwrightが動いているかは見ていません。動作確認は最後のscrapeで行います。POSTGRES_DBは同梱のpg_cron設定がpostgresを前提にしているため、変えないでください。

クラウド限定の機能とAGPL-3.0の義務

機能 セルフホスト クラウド
scrape・crawl・map・search あり あり
Playwrightによる描画 あり あり
JSON抽出などLLM機能 OpenAI互換APIかOllamaを自分で接続 込み
高度なボット対策 別サービスを自分で用意 enhanced proxy
Agent・Interact・ダッシュボード なし あり

本体はAGPL-3.0です。AGPL-3.0の第13条では、改変版とネットワーク越しにやり取りするすべての利用者に、その版の「対応するソース」を無償で取得できる機会を明示する義務があります。対象は改変箇所だけではなく、社内利用という理由だけで適用対象外にもなりません。SDKはMITなので、クラウド版をSDKから呼ぶだけならAGPLの影響はありません。

セルフホストが向くのは、外部のLLM・プロキシ・解析サービスへの送信も制御したうえで取得データを自社管理下に置きたい、または取得量が多くクラウドのクレジットより自前のサーバー費のほうが安い場合です。サーバーの更新・監視・障害対応がすべて自社の作業になるため、月数万ページ程度で専任の運用担当を置けない場合は、Standardを比較の基準にできます。総コストは、クラウド利用料と、自前のサーバー・プロキシ・保守工数を合算して比較します。

Crawl4AI・Apifyとの比較と選び方

項目 Firecrawl Crawl4AI Apify
形態 API+OSS OSSライブラリ+ホスト版 スクレイパー実行基盤
ライセンス AGPL-3.0(SDKはMIT) Apache-2.0 SaaS
無料枠 月1,000クレジット OSSは無料 月5ドル分の利用
有料の入口 月16ドル〜 OSSは不要 月19ドル〜+従量
課金単位 ページ・回数 自前のサーバー費 compute unit

Crawl4AI(unclecode/crawl4ai、2026年9月23日にv0.9.4)は、手元でPlaywrightのChromiumを動かしてMarkdownを作るPythonライブラリです。ライブラリとして組み込めるので、1ページあたりの費用はほぼサーバー代だけで済みます。代わりに、ブラウザの同時実行数・メモリ・ボット対策を自分で管理します。

Apifyは、公開されているスクレイパー(Actor)を選んで実行する基盤です。Starterは月19ドル分の利用枠付きで、計算資源の利用料は1 compute unit(1GBメモリ×1時間)あたり0.2ドルです。Actorごとの料金、プロキシ、ストレージ、データ転送なども利用枠を消費し、枠を超えた利用分が追加請求されます。InstagramやLinkedInの求人など、対象サイト専用のActorがあり、必要な項目を出力できる場合は、既存Actorを使うことで取得処理を自作する手間を省けます。

選び方は次のとおりです。LLMに渡すMarkdownを少ない実装で得たいならFirecrawl、大量取得で1ページあたりの費用を削りたく、ブラウザ運用を自分で抱えられるならCrawl4AI、対象サイト専用のスクレイパーが既にあるならApifyを選びます。ノーコードでRAGを組むならDifyのナレッジ取り込みにもFirecrawl連携があり、構成例はDifyでチャットボットを作る手順で扱っています。

Firecrawlを採用しないほうがよい場面と運用上の注意

  • robots.txtで拒否されたページを取りたい:Firecrawlはrobots.txtを読み、ユーザーエージェントFirecrawlAgentと*向けのルールに従います。SDKにはignore_robots_txt引数がありますが、OpenAPI定義上は「Enterprise only」で、通常プランでは使えません。
  • ログインが必要なページが中心:scrapeにはヘッダー(Cookieを含む)を渡せ、ログイン操作もscrapeのactions(クリック・入力など。1リクエスト50個まで、待機の合計60秒まで)で組めます。ただし多段の認証や継続的なセッション操作ではinteract(1分2〜7クレジット)か自前のブラウザ自動化が候補になり、費用も実装量も単純なscrapeとは別物になります。
  • 同じページを高頻度で取り直す:キャッシュでもクレジットは減ります。変化の検知が目的なら、monitorや自前の差分判定と組み合わせます。
  • 外部利用者向けサービスに改変版を組み込む:改変版とネットワーク越しにやり取りする利用者には、AGPL-3.0第13条に従い、その版の対応するソースを無償で取得できる機会を明示する必要があります。

もう1つ、ドキュメント同士の記述が一致しない箇所があります。batch scrapeのレート制限を、料金ページとRate Limitsページは「crawlの上限を共有」、BillingページのFreeプラン節は「scrapeの上限を共有」と書いています。上限ぎりぎりで設計する前に、ダッシュボードの実測値かサポートで確認してください。

よくある質問

Firecrawlは無料で使えますか?

使えます。Freeプランは月1,000クレジットで、クレジットカードの登録は不要です。追加オプションなしのscrapeなら月1,000ページ分です。searchは1回あたり検索結果10件以内で本文取得を付けない場合に500回分となり、結果件数や本文取得の有無で消費量が増えます。従量課金は使えないため、使い切ると翌月のリセットまで402が返ります。

Firecrawlの料金はいくらですか?

年払いの場合、Hobbyが月16ドル(5,000クレジット)、Standardが月83ドル(10万)、Growthが月333ドル(50万)、Scaleが月599ドル(100万)です。月払いのHobbyは月19ドルです。JSON抽出を使うと1ページ5クレジットになるため、必要なクレジット数は「ページ数×オプション込みの単価」で見積もります。

セルフホスト版でもagentやJSON抽出は使えますか?

agentとinteractはクラウド版だけの機能です。JSON抽出などLLMを使う機能は、セルフホスト版でもOpenAI互換のAPIかOllamaを自分で接続すれば動かせます。ボット対策の強いサイト向けのenhanced proxyもクラウド版の機能です。

FirecrawlとCrawl4AIはどちらを選ぶべきですか?

実装と運用の手間を減らしたいならFirecrawl、ブラウザ運用を自分で担い、取得処理やインフラ費を調整したいならCrawl4AIが候補です。Crawl4AIはApache-2.0のライブラリで、自分の環境でブラウザを動かします。取得量が月数万ページまでで、ブラウザ運用を持ちたくないならFirecrawlのStandardが扱いやすい選択です。

Firecrawlは商用利用できますか?

クラウド版はプラン契約の範囲で商用利用できます。SDKはMITライセンスです。セルフホスト版の本体はAGPL-3.0です。改変版をネットワーク越しに利用させる場合、第13条に従い、その利用者に対応するソースを無償で取得できる機会を明示する必要があります。取得先サイトの利用規約と著作権は、Firecrawlの利用とは別に確認が必要です。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.07.21 テックブログ Apache Tomcatの脆弱性一覧【2026年10月】最新版11.0.27・10.1.61・9.0.123とCVE-2026-59083ほかの影響確認・対応手順
  2. 2026.10.21 テックブログ NEC委託先の不正アクセスとは|顧客システム暗号化・情報漏えいの経緯と委託元が点検する正規アカウント
  3. 2026.10.22 テックブログ Tomcatバージョン一覧とサポート期限【2026年10月】9.0系は2027年3月末で終了・9.1系と11.0系への移行判断
  4. 2026.10.21 テックブログ ふるさとチョイス不正アクセスで445万件流出:対象確認・パスワード変更と再開時期
  5. 2026.05.15 テックブログ scrcpyの最新版は5.0|ハードウェアデコード対応とインストール・使い方【2026年10月】

RELATED POSTS 関連記事

目次