firecrawl-scraper について
firecrawl-scraperは、FirecrawlのウェブデータAPIとSDKでサイトの内容を取得し、構造化する方法を解説するスキルです。単一ページのスクレイピング、サイト巡回、検索、抽出、自律的な収集、一括処理、変更追跡を扱います。
主な機能
- 01ページを複数形式でスクレイピング
- 02サイト巡回とURL検出
- 03ウェブ検索と構造化データ抽出
- 04自律エージェントによるデータ収集
- 05一括スクレイピングと変更追跡
- 06ブラウザー操作で動的ページに対応
活用シーン
- 01記事や商品ページを構造化データに変換
- 02サイト全体のドキュメントを索引化
- 03商品や企業の情報を検索・抽出
- 04価格ページやドキュメントの変更を追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jezweb/ claude-skills --skill firecrawl-scraperインストール後、Claude Code で/firecrawl-scraperを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.md.claude-plugin/plugin.jsonreferences/common-patterns.mdendpoints.mdtemplates/firecrawl-crawl-example.pyfirecrawl-scrape-python.pyfirecrawl-scrape-typescript.tsfirecrawl-worker-fetch.ts詳細
Firecrawl Web Scraper スキル
ステータス:本番環境で利用可能 最終更新日:2026-01-20 公式ドキュメント:https://docs.firecrawl.dev API バージョン:v2 SDK バージョン:firecrawl-py 4.13.0+、@mendable/firecrawl-js 4.11.1+
Firecrawl とは?
Firecrawl は、ウェブサイトを LLM に適した Markdown または構造化データに変換するAI 向けウェブデータ APIです。次の機能を提供します。
- JavaScript レンダリング - クライアント側の JavaScript を実行し、動的コンテンツを取得します
- ボット対策の回避 - CAPTCHA やボット検出システムを回避します
- 形式変換 - Markdown、HTML、JSON、スクリーンショット、要約として出力します
- ドキュメントの解析 - PDF、DOCX ファイル、画像を処理します
- 自律型エージェント - URL を指定せずに、AI を活用してウェブデータを収集します
- 変更の追跡 - コンテンツの経時的な変化を監視します
- ブランディング情報の抽出 - 配色、タイポグラフィ、ロゴを抽出します
API エンドポイントの概要
| エンドポイント | 目的 | ユースケース |
|---|---|---|
/scrape | 単一ページ | 記事や商品ページの抽出 |
/crawl | サイト全体 | ドキュメントのインデックス化、サイトのアーカイブ |
/map | URL の検出 | すべてのページの検索、方針の策定 |
/search | ウェブ検索+スクレイピング | 最新のデータを使った調査 |
/extract | 構造化データ | 商品価格、連絡先 |
/agent | 自律的なデータ収集 | URL 不要、AI がナビゲーション |
/batch-scrape | 複数の URL | 一括処理 |
1. Scrape エンドポイント(/v2/scrape)
単一のウェブページをスクレイピングし、整形された構造化コンテンツを返します。
基本的な使い方
from firecrawl import Firecrawl
import os
app = Firecrawl(api_key=os.environ.get("FIRECRAWL_API_KEY"))
# Basic scrape
doc = app.scrape(
url="https://example.com/article",
formats=["markdown", "html"],
only_main_content=True
)
print(doc.markdown)
print(doc.metadata)
import FirecrawlApp from '@mendable/firecrawl-js';
const app = new FirecrawlApp({ apiKey: process.env.FIRECRAWL_API_KEY });
const result = await app.scrapeUrl('https://example.com/article', {
formats: ['markdown', 'html'],
onlyMainContent: true
});
console.log(result.markdown);
出力形式
| 形式 | 説明 |
|---|---|
markdown | LLM に最適化されたコンテンツ |
html | 完全な HTML |
rawHtml | 未処理の HTML |
screenshot | ページのキャプチャ(ビューポートオプション付き) |
links | ページ上のすべての URL |
json | 構造化データの抽出 |
summary | AI が生成した要約 |
branding | デザインシステムのデータ |
changeTracking | コンテンツの変更検出 |
詳細オプション
doc = app.scrape(
url="https://example.com",
formats=["markdown", "screenshot"],
only_main_content=True,
remove_base64_images=True,
wait_for=5000, # Wait 5s for JS
timeout=30000,
# Location & language
location={"country": "AU", "languages": ["en-AU"]},
# Cache control
max_age=0, # Fresh content (no cache)
store_in_cache=True,
# Stealth mode for complex sites
stealth=True,
# Custom headers
headers={"User-Agent": "Custom Bot 1.0"}
)
ブラウザー操作
スクレイピングの前に操作を実行します。
doc = app.scrape(
url="https://example.com",
actions=[
{"type": "click", "selector": "button.load-more"},
{"type": "wait", "milliseconds": 2000},
{"type": "scroll", "direction": "down"},
{"type": "write", "selector": "input#search", "text": "query"},
{"type": "press", "key": "Enter"},
{"type": "screenshot"} # Capture state mid-action
]
)
JSON モード(構造化データの抽出)
# With schema
doc = app.scrape(
url="https://example.com/product",
formats=["json"],
json_options={
"schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"price": {"type": "number"},
"in_stock": {"type": "boolean"}
}
}
}
)
# Without schema (prompt-only)
doc = app.scrape(
url="https://example.com/product",
formats=["json"],
json_options={
"prompt": "Extract the product name, price, and availability"
}
)
ブランディング情報の抽出
デザインシステムとブランドアイデンティティを抽出します。
doc = app.scrape(
url="https://example.com",
formats=["branding"]
)
# Returns:
# - Color schemes and palettes
# - Typography (fonts, sizes, weights)
# - Spacing and layout metrics
# - UI component styles
# - Logo and imagery URLs
# - Brand personality traits
2. Crawl エンドポイント(/v2/crawl)
開始 URL からアクセス可能なすべてのページをクロールします。
result = app.crawl(
url="https://docs.example.com",
limit=100,
max_depth=3,
allowed_domains=["docs.example.com"],
exclude_paths=["/api/*", "/admin/*"],
scrape_options={
"formats": ["markdown"],
"only_main_content": True
}
)
for page in result.data:
print(f"Scraped: {page.metadata.source_url}")
print(f"Content: {page.markdown[:200]}...")
Webhook を使った非同期クロール
# Start crawl (returns immediately)
job = app.start_crawl(
url="https://docs.example.com",
limit=1000,
webhook="https://your-domain.com/webhook"
)
print(f"Job ID: {job.id}")
# Or poll for status
status = app.check_crawl_status(job.id)
3. Map エンドポイント(/v2/map)
コンテンツをスクレイピングせずに、ウェブサイト上のすべての URL をすばやく検出します。
urls = app.map(url="https://example.com")
print(f"Found {len(urls)} pages")
for url in urls[:10]:
print(url)
サイトマップの検出、クロール計画、ウェブサイト監査に使用します。
4. Search エンドポイント(/search)- 新機能
ウェブ検索を実行し、検索結果のスクレイピングも必要に応じて一度の操作で行います。
# Basic search
results = app.search(
query="best practices for React server components",
limit=10
)
for result in results:
print(f"{result.title}: {result.url}")
# Search + scrape results
results = app.search(
query="React server components tutorial",
limit=5,
scrape_options={
"formats": ["markdown"],
"only_main_content": True
}
)
for result in results:
print(f"{result.title}")
print(result.markdown[:500])
検索オプション
results = app.search(
query="machine learning papers",
limit=20,
# Filter by source type
sources=["web", "news", "images"],
# Filter by category
categories=["github", "research", "pdf"],
# Location
location={"country": "US"},
# Time filter
tbs="qdr:m", # Past month (qdr:h=hour, qdr:d=day, qdr:w=week, qdr:y=year)
timeout=30000
)
料金:検索結果 10 件につき 2 クレジット。スクレイピングを有効にした場合は、別途スクレイピング料金がかかります。
5. Extract エンドポイント(/v2/extract)
単一ページ、複数ページ、またはドメイン全体から、AI を活用して構造化データを抽出します。
単一ページ
from pydantic import BaseModel
class Product(BaseModel):
name: str
price: float
description: str
in_stock: bool
result = app.extract(
urls=["https://example.com/product"],
schema=Product,
system_prompt="Extract product information"
)
print(result.data)
複数ページ/ドメインからの抽出
# Extract from entire domain using wildcard
result = app.extract(
urls=["example.com/*"], # All pages on domain
schema=Product,
system_prompt="Extract all products"
)
# Enable web search for additional context
result = app.extract(
urls=["example.com/products"],
schema=Product,
enable_web_search=True # Follow external links
)
プロンプトのみを使った抽出(スキーマなし)
result = app.extract(
urls=["https://example.com/about"],
prompt="Extract the company name, founding year, and key executives"
)
# LLM determines output structure
6. Agent エンドポイント(/agent)- 新機能
特定の URL を指定せずに、ウェブデータを自律的に収集します。エージェントは自然言語のプロンプトを使って検索、ナビゲーション、データ収集を行います。
# Basic agent usage
result = app.agent(
prompt="Find the pricing plans for the top 3 headless CMS platforms and compare their features"
)
print(result.data)
# With schema for structured output
from pydantic import BaseModel
from typing import List
class CMSPricing(BaseModel):
name: str
free_tier: bool
starter_price: float
features: List[str]
result = app.agent(
prompt="Find pricing for Contentful, Sanity, and Strapi",
schema=CMSPricing
)
# Optional: focus on specific URLs
result = app.agent(
prompt="Extract the enterprise pricing details",
urls=["https://contentful.com/pricing", "https://sanity.io/pricing"]
)
エージェントのモデル
| モデル | 最適な用途 | 料金 |
|---|---|---|
spark-1-mini(デフォルト) | シンプルな抽出、大量処理 | 標準 |
spark-1-pro | 複雑な分析、曖昧なデータ | 60% 増 |
result = app.agent(
prompt="Analyze competitive positioning...",
model="spark-1-pro" # For complex tasks
)
非同期エージェント
# Start agent (returns immediately)
job = app.start_agent(
prompt="Research market trends..."
)
# Poll for results
status = app.check_agent_status(job.id)
if status.status == "completed":
print(status.data)
注:Agent はリサーチプレビュー版です。毎日 5 件まで無料でリクエストでき、その後はクレジットベースの課金となります。
7. Batch Scrape - 新機能
1 回の操作で複数の URL を効率よく処理します。
同期(完了まで待機)
results = app.batch_scrape(
urls=[
"https://example.com/page1",
"https://example.com/page2",
"https://example.com/page3"
],
formats=["markdown"],
only_main_content=True
)
for page in results.data:
print(f"{page.metadata.source_url}: {len(page.markdown)} chars")
非同期(Webhook を使用)
job = app.start_batch_scrape(
urls=url_list,
formats=["markdown"],
webhook="https://your-domain.com/webhook"
)
# Webhook receives events: started, page, completed, failed
const job = await app.startBatchScrape(urls, {
formats: ['markdown'],
webhook: 'https://your-domain.com/webhook'
});
// Poll for status
const status = await app.checkBatchScrapeStatus(job.id);
8. 変更の追跡 - 新機能
スクレイピング結果を比較して、コンテンツの経時的な変化を監視します。
# Enable change tracking
doc = app.scrape(
url="https://example.com/pricing",
formats=["markdown", "changeTracking"]
)
# Response includes:
print(doc.change_tracking.status) # new, same, changed, removed
print(doc.change_tracking.previous_scrape_at)
print(doc.change_tracking.visibility) # visible, hidden
比較モード
# Git-diff mode (default)
doc = app.scrape(
url="https://example.com/docs",
formats=["markdown", "changeTracking"],
change_tracking_options={
"mode": "diff"
}
)
print(doc.change_tracking.diff) # Line-by-line changes
# JSON mode (structured comparison)
doc = app.scrape(
url="https://example.com/pricing",
formats=["markdown", "changeTracking"],
change_tracking_options={
"mode": "json",
"schema": {"type": "object", "properties": {"price": {"type": "number"}}}
}
)
# Costs 5 credits per page
変更状態:
new- 以前に確認されていないページsame- 前回のスクレイピング以降、変更なしchanged- コンテンツが変更されましたremoved- ページにアクセスできなくなりました
認証
# Get API key from https://www.firecrawl.dev/app
# Store in environment
FIRECRAWL_API_KEY=fc-your-api-key-here
API キーをハードコードしないでください!
Cloudflare Workers との統合
Firecrawl SDK は Cloudflare Workers では実行できません(Node.js が必要です)。REST API を直接使用してください。
interface Env {
FIRECRAWL_API_KEY: string;
}
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const { url } = await request.json<{ url: string }>();
const response = await fetch('https://api.firecrawl.dev/v2/scrape', {
method: 'POST',
headers: {
'Authorization': `Bearer ${env.FIRECRAWL_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url,
formats: ['markdown'],
onlyMainContent: true
})
});
const result = await response.json();
return Response.json(result);
}
};
レート制限と料金
警告:ステルスモードの料金変更(2025年5月)
ステルスモードを積極的に使用すると、リクエストごとに 5 クレジットが必要になりました。デフォルトの動作では「auto」モードが使用され、基本モードで失敗した場合にのみステルスクレジットが課金されます。
推奨パターン:
# Use auto mode (default) - only charges 5 credits if stealth is needed
doc = app.scrape(url, formats=["markdown"])
# Or conditionally enable stealth for specific errors
if error_status_code in [401, 403, 500]:
doc = app.scrape(url, formats=["markdown"], proxy="stealth")
統合課金(2025年11月)
クレジットとトークンが単一のシステムに統合されました。Extract エンドポイントではクレジットを使用します(15 トークン = 1 クレジット)。
料金プラン
| プラン | 月間クレジット数 | 備考 |
|---|---|---|
| 無料 | 500 | テストに適しています |
| ホビー | 3,000 | 月額 $19 |
| スタンダード | 100,000 | 月額 $99 |
| グロース | 500,000 | 月額 $399 |
クレジットコスト:
- スクレイピング:1 クレジット(基本)、5 クレジット(ステルス)
- クロール:ページあたり 1 クレジット
- 検索:10 件の結果あたり 2 クレジット
- Extract:ページあたり 5 クレジット(v2.6.0 でトークンから変更)
- Agent:動的(複雑さに基づく)
- Change Tracking の JSON モード:+5 クレジット
よくある問題と解決策
| 問題 | 原因 | 解決策 |
|---|---|---|
| コンテンツが空 | JS が読み込まれていない | wait_for: 5000 を追加するか、actions を使用します |
| レート制限を超過 | クォータ超過 | ダッシュボードを確認し、プランをアップグレードします |
| タイムアウトエラー | ページの応答が遅い | timeout を延長し、stealth: true を使用します |
| ボット検出 | スクレイピング対策 | stealth: true を使用し、location を追加します |
| API キーが無効 | 形式が間違っている | fc- で始まる必要があります |
既知の問題の防止
このスキルは、文書化されている 10 件の問題を防ぎます。
問題 #1:ステルスモードの料金変更(2025年5月)
エラー:ステルスモード使用時にクレジットコストが予想外に増加する 出典:ステルスモードのドキュメント | 変更履歴 発生理由:2025年5月8日以降、ステルスモードのプロキシリクエストにはリクエストごとに 5 クレジットが必要です(以前は標準料金に含まれていました)。これは大幅な料金変更です。 防止策:デフォルトの auto モードを使用します。基本モードで失敗した場合にのみステルスクレジットが課金されます。
# RECOMMENDED: Use auto mode (default)
doc = app.scrape(url, formats=['markdown'])
# Auto retries with stealth (5 credits) only if basic fails
# Or conditionally enable based on error status
try:
doc = app.scrape(url, formats=['markdown'], proxy='basic')
except Exception as e:
if e.status_code in [401, 403, 500]:
doc = app.scrape(url, formats=['markdown'], proxy='stealth')
ステルスモードのオプション:
auto(デフォルト):基本モードで失敗した後、ステルスモードが成功した場合にのみ 5 クレジットが課金されますbasic:標準プロキシを使用し、1 クレジットが必要ですstealth:積極的に使用すると、リクエストごとに 5 クレジットが必要です
問題 #2:v2.0.0 の破壊的変更 — メソッド名の変更
エラー:AttributeError: 'FirecrawlApp' object has no attribute 'scrape_url'
出典:v2.0.0 リリース | 移行ガイド
発生理由:v2.0.0(2025年8月)では、すべての言語の SDK メソッド名が変更されました
防止策:新しいメソッド名を使用します
JavaScript/TypeScript:
scrapeUrl()→scrape()crawlUrl()→crawl()またはstartCrawl()asyncCrawlUrl()→startCrawl()checkCrawlStatus()→getCrawlStatus()
Python:
scrape_url()→scrape()crawl_url()→crawl()またはstart_crawl()
# OLD (v1)
doc = app.scrape_url("https://example.com")
# NEW (v2)
doc = app.scrape("https://example.com")
問題 #3:v2.0.0 の破壊的変更 — フォーマットの変更
エラー:'extract' is not a valid format
出典:v2.0.0 リリース
発生理由:以前の "extract" フォーマットは、v2.0.0 で "json" に名称が変更されました
防止策:JSON 抽出には新しいオブジェクト形式を使用します
# OLD (v1)
doc = app.scrape_url(
url="https://example.com",
params={
"formats": ["extract"],
"extract": {"prompt": "Extract title"}
}
)
# NEW (v2)
doc = app.scrape(
url="https://example.com",
formats=[{"type": "json", "prompt": "Extract title"}]
)
# With schema
doc = app.scrape(
url="https://example.com",
formats=[{
"type": "json",
"prompt": "Extract product info",
"schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"price": {"type": "number"}
}
}
}]
)
スクリーンショット形式も変更されました:
# NEW: Screenshot as object
formats=[{
"type": "screenshot",
"fullPage": True,
"quality": 80,
"viewport": {"width": 1920, "height": 1080}
}]
Issue #4: v2.0.0 の破壊的変更 — クロールオプション
エラー: 'allowBackwardCrawling' is not a valid parameter
出典: v2.0.0 リリース
発生理由: v2.0.0 で複数のクロールパラメーターの名前が変更または削除されました
防止策: 新しいパラメーター名を使用してください
パラメーターの変更:
allowBackwardCrawling→ 代わりにcrawlEntireDomainを使用maxDepth→ 代わりにmaxDiscoveryDepthを使用ignoreSitemap(bool)→sitemap("only", "skip", "include")
# OLD (v1)
app.crawl_url(
url="https://docs.example.com",
params={
"allowBackwardCrawling": True,
"maxDepth": 3,
"ignoreSitemap": False
}
)
# NEW (v2)
app.crawl(
url="https://docs.example.com",
crawl_entire_domain=True,
max_discovery_depth=3,
sitemap="include" # "only", "skip", or "include"
)
Issue #5: v2.0.0 のデフォルト動作の変更
エラー: 古いキャッシュ済みコンテンツが予期せず返される 出典: v2.0.0 リリース 発生理由: v2.0.0 では複数のデフォルト値が変更されました 防止策: 新しいデフォルト値に注意してください
デフォルト値の変更:
maxAgeのデフォルト値が 2 日 になりました(デフォルトでキャッシュされます)blockAds、skipTlsVerification、removeBase64Imagesがデフォルトで有効になりました
# Force fresh data if needed
doc = app.scrape(url, formats=['markdown'], max_age=0)
# Disable cache entirely
doc = app.scrape(url, formats=['markdown'], store_in_cache=False)
Issue #6: ジョブステータスの競合状態
エラー: 作成直後にクロールのステータスを確認すると "Job not found" が発生する
出典: GitHub Issue #2662
発生理由: ジョブ作成からステータスエンドポイントが利用可能になるまでの間に、データベースのレプリケーション遅延が発生します
防止策: 最初のステータス確認まで 1〜3 秒待つか、再試行ロジックを実装してください
import time
# Start crawl
job = app.start_crawl(url="https://docs.example.com")
print(f"Job ID: {job.id}")
# REQUIRED: Wait before first status check
time.sleep(2) # 1-3 seconds recommended
# Now status check succeeds
status = app.get_crawl_status(job.id)
# Or implement retry logic
def get_status_with_retry(job_id, max_retries=3, delay=1):
for attempt in range(max_retries):
try:
return app.get_crawl_status(job_id)
except Exception as e:
if "Job not found" in str(e) and attempt < max_retries - 1:
time.sleep(delay)
continue
raise
status = get_status_with_retry(job.id)
Issue #7: DNS エラーで HTTP 200 が返される
エラー: DNS 解決に失敗しても 4xx ではなく、HTTP 200 ステータスとともに success: false が返される
出典: GitHub Issue #2402 | v2.7.0 で修正済み
発生理由: 一貫したエラー処理のため、v2.7.0 で変更されました
防止策: success フィールドと code フィールドを確認し、HTTP ステータスだけに依存しないでください
const result = await app.scrape('https://nonexistent-domain-xyz.com');
// DON'T rely on HTTP status code
// Response: HTTP 200 with { success: false, code: "SCRAPE_DNS_RESOLUTION_ERROR" }
// DO check success field
if (!result.success) {
if (result.code === 'SCRAPE_DNS_RESOLUTION_ERROR') {
console.error('DNS resolution failed');
}
throw new Error(result.error);
}
注: DNS 解決エラーが発生した場合も、失敗したにもかかわらず 1 クレジットが課金されます。
Issue #8: ボット検出が引き続きクレジットを消費する
エラー: Cloudflare のエラーページが「成功した」スクレイピングとして返され、クレジットが課金される 出典: GitHub Issue #2413 発生理由: ボット検出によってアクセスが阻止されても、Fire-1 エンジンはクレジットを課金します 防止策: 処理前にコンテンツがエラーページではないことを検証し、保護されたサイトにはステルスモードを使用してください
# First attempt without stealth
doc = app.scrape(url="https://protected-site.com", formats=["markdown"])
# Validate content isn't an error page
if "cloudflare" in doc.markdown.lower() or "access denied" in doc.markdown.lower():
# Retry with stealth (costs 5 credits if successful)
doc = app.scrape(url, formats=["markdown"], stealth=True)
コストへの影響: 基本のスクレイピングでは失敗時も 1 クレジットが課金され、ステルスモードで再試行するとさらに 5 クレジットが課金されます。
Issue #9: セルフホスト環境でのアンチボットフィンガープリント対策の弱さ
エラー: アンチボット対策が施されたサイトで "All scraping engines failed!"(SCRAPE_ALL_ENGINES_FAILED)が発生する
出典: GitHub Issue #2257
発生理由: セルフホスト版の Firecrawl には、クラウドサービスに備わっている高度なアンチフィンガープリント技術がありません
防止策: 強力なアンチボット対策が施されたサイトには Firecrawl のクラウドサービスを使用するか、プロキシを設定してください
# Self-hosted fails on Cloudflare-protected sites
curl -X POST 'http://localhost:3002/v2/scrape' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"url": "https://www.example.com/",
"pageOptions": { "engine": "playwright" }
}'
# Error: "All scraping engines failed!"
# Workaround: Use cloud service instead
# Cloud service has better anti-fingerprinting
注: これは、デフォルトの docker-compose 設定を使用するセルフホスト版 v2.3.0 以降に影響します。次の警告が表示されます:「⚠️ 警告:プロキシサーバーが指定されていません。IP アドレスがブロックされる可能性があります。」
Issue #10: キャッシュパフォーマンスのベストプラクティス(コミュニティ提供)
非効率な方法: キャッシュを活用しないと、リクエストが 500% 遅くなる可能性があります
出典: 高速スクレイピングのドキュメント | ブログ記事
重要な理由: v2 以降、maxAge のデフォルト値は 2 日ですが、用途によっては異なる戦略が必要です
防止策: コンテンツの種類に応じた適切なキャッシュ戦略を使用してください
# Fresh data (real-time pricing, stock prices)
doc = app.scrape(url, formats=["markdown"], max_age=0)
# 10-minute cache (news, blogs)
doc = app.scrape(url, formats=["markdown"], max_age=600000) # milliseconds
# Use default cache (2 days) for static content
doc = app.scrape(url, formats=["markdown"]) # maxAge defaults to 172800000
# Don't store in cache (one-time scrape)
doc = app.scrape(url, formats=["markdown"], store_in_cache=False)
# Require minimum age before re-scraping (v2.7.0+)
doc = app.scrape(url, formats=["markdown"], min_age=3600000) # 1 hour minimum
パフォーマンスへの影響:
- キャッシュ済みの応答:ミリ秒
- 新規スクレイピング:秒
- 速度の差:最大 500%
パッケージのバージョン
| パッケージ | バージョン | 最終確認日 |
|---|---|---|
| firecrawl-py | 4.13.0+ | 2026-01-20 |
| @mendable/firecrawl-js | 4.11.1+ | 2026-01-20 |
| API バージョン | v2 | 現行 |
公式ドキュメント
- ドキュメント: https://docs.firecrawl.dev
- Python SDK: https://docs.firecrawl.dev/sdks/python
- Node.js SDK: https://docs.firecrawl.dev/sdks/node
- API リファレンス: https://docs.firecrawl.dev/api-reference
- GitHub: https://github.com/mendableai/firecrawl
- ダッシュボード: https://www.firecrawl.dev/app
トークン削減率: 手動での統合と比べて約65% エラー防止: 文書化された問題10件(v2への移行、ステルスモードの料金、ジョブステータスの競合状態、DNS エラー、ボット検出時の課金、セルフホスト版の制限、キャッシュの最適化) 本番環境対応: はい 最終確認日: 2026-01-21 | スキルバージョン: 2.0.0 | 変更点: TIER 1-2 の調査結果に基づき、文書化された10件のエラーを含む「既知の問題の防止」セクションを追加。v2 への移行ガイダンスを追加。ステルスモードの料金変更と統一された課金モデルを文書化