このページでは、Firecrawlがエンドポイントに送信する可能性のあるWebhookイベントの種類を網羅します。各イベントタイプは、スクレイピング処理の異なる段階に対応しています。

イベント構造

すべてのWebhookイベントは、次の基本構造に従います。
{
  "success": true,
  "type": "crawl.page",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [...],
  "metadata": {}
}

共通フィールド

FieldTypeDescription
successboolean操作が成功したかどうか
typestringイベントタイプの識別子
idstringジョブの一意の識別子
dataarrayイベント固有のデータ(イベントタイプにより異なる)
metadataobjectWebhook 設定で指定したカスタムメタデータ
errorstringエラーメッセージ(successfalse の場合に含まれる)

クロールイベント

リンクを辿って複数ページをクロールする処理。

crawl.started

クロールが開始されると送信されます。
{
  "success": true,
  "type": "crawl.started",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

crawl.page

クロール中にスクレイピングされた各ページごとに送信されます。
{
  "success": true,
  "type": "crawl.page",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [
    {
      "markdown": "# 当サイトへようこそ\n\nこれはページの主なコンテンツです...",
      "metadata": {
        "title": "ページタイトル",
        "description": "ページの説明",
        "url": "https://example.com/page",
        "statusCode": 200,
        "contentType": "text/html",
        "scrapeId": "550e8400-e29b-41d4-a716-446655440001",
        "sourceURL": "https://example.com/page",
        "proxyUsed": "basic",
        "cacheState": "hit"
        "cachedAt": "2025-09-03T21:11:25.636Z",
        "creditsUsed": 1
      }
    }
  ],
  "metadata": {}
}
これはクロール中に最も頻繁に発生するイベントです。スクレイプに成功した各ページごとに、crawl.page イベントを1件受け取ります。

crawl.completed

クロール処理が最後まで正常に完了した際に送信されます。
{
  "success": true,
  "type": "crawl.completed",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

バッチスクレイプイベント

特定の複数のURLをスクレイプする処理。

batch_scrape.started

バッチスクレイプの開始時に送信されます。
{
  "success": true,
  "type": "batch_scrape.started",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

batch_scrape.page

バッチ内でスクレイプされる各URLごとに送信されます。
{
  "success": true,
  "type": "batch_scrape.page",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [
    {
      "markdown": "# 企業ホームページ\n\n当社のウェブサイトへようこそ…",
      "metadata": {
        "title": "企業名 - ホームページ",
        "description": "企業の説明と概要",
        "url": "https://example.com",
        "statusCode": 200,
        "contentType": "text/html",
        "scrapeId": "550e8400-e29b-41d4-a716-446655440001",
        "sourceURL": "https://example.com",
        "proxyUsed": "basic",
        "cacheState": "ミス"
        "cachedAt": "2025-09-03T23:30:53.434Z",
        "creditsUsed": 1
      }
    }
  ],
  "metadata": {}
}
これはバッチスクレイプ中に最もよく発生するイベントです。スクレイプに成功した各URLごとに batch_scrape.page イベントが1件届きます。

batch_scrape.completed

バッチスクレイプ処理がすべて完了した時に送信されます。
{
  "success": true,
  "type": "batch_scrape.completed",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

抽出イベント

LLM を用いたデータ抽出処理。

extract.started

抽出処理が開始されると送信されます。
{
  "success": true,
  "type": "extract.started",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

extract.completed

抽出オペレーションが正常に完了したときに送信されます。
{
  "success": true,
  "type": "extract.completed",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [
    {
      "success": true,
      "data": { "siteName": "Example Site", "category": "Technology" },
      "extractId": "550e8400-e29b-41d4-a716-446655440000",
      "llmUsage": 0.0020118,
      "totalUrlsScraped": 1,
      "sources": {
        "siteName": ["https://example.com"],
        "category": ["https://example.com"]
      }
    }
  ],
  "metadata": {}
}

extract.failed

抽出処理でエラーが発生したときに送信されます。
{
  "success": false,
  "type": "extract.failed",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "error": "データの抽出に失敗しました:タイムアウトを超過しました"
  "metadata": {}
}

イベントのフィルタリング

Webhook の設定で events 配列を指定すると、受信するイベントを制御できます。
{
  "url": "https://your-app.com/webhook",
  "events": ["completed", "failed"]
}