メインコンテンツへスキップ
変更追跡 Change Tracking (変更追跡) は、ページの現在のコンテンツを最後にスクレイプしたときの状態と比較します。ページが新規か、変更なし (unchanged) か、変更あり (modified) かを検出するために changeTrackingformats 配列に追加し、必要に応じて「何が変わったか」の構造化された差分を取得できます。
  • /scrape/crawl/batch/scrape で動作
  • 2 つの diff モード: 行単位の変更用 git-diff、フィールド単位の比較用 json
  • チームごとにスコープされ、必要に応じて渡したタグごとにもスコープ可能

仕組み

changeTracking が有効なすべてのスクレイプ実行時にスナップショットが保存され、その URL に対する前回のスナップショットと比較されます。スナップショットは永続的に保存され、有効期限がないため、スクレイプ間でどれだけ時間が空いても比較結果の精度が維持されます。 レスポンスには、changeTracking オブジェクト内に次のフィールドが含まれます。

基本的な使い方

formats 配列には markdownchangeTracking の両方を指定します。変更追跡ではページの markdown コンテンツを比較するため、markdown フォーマットは必須です。

レスポンス

初回のスクレイプでは、changeStatus"new"previousScrapeAtnull になります。
以降のスクレイプでは、changeStatus にコンテンツが変更されたかどうかが反映されます。

Git-diff モード

git-diff モードは、git diff に似た形式で行単位の変更差分を返します。formats 配列内に modes: ["git-diff"] を含むオブジェクトを指定します。

レスポンス

diff オブジェクトには、プレーンテキスト形式の diff と構造化された JSON 表現の両方が含まれます。
構造化された diff.json オブジェクトには次の要素が含まれます:
  • files: 変更されたファイルの配列 (通常はウェブページごとに1つ)
  • chunks: ファイル内の変更箇所を表すセクション
  • changes: 個々の行ごとの変更。type ("add""del"、または "normal") 、行番号 (ln) 、および content を含む

JSONモード

json モードは、定義したスキーマを使って、ページの現在のバージョンと前回のバージョンの両方から特定のフィールドを抽出します。これは、ページ全体の差分を解析することなく、価格、在庫レベル、メタデータなどの構造化データの変更を追跡するのに便利です。 抽出するフィールドを定義する schema とともに modes: ["json"] を渡します:

レスポンス

スキーマ内の各フィールドは、previouscurrent の値を含めて返されます。
また、任意の prompt を渡して、スキーマとあわせて LLM による抽出をガイドすることもできます。
JSONモードは LLM 抽出を使用し、1ページあたり5クレジットかかります。基本的な変更追跡と git-diff モードには追加コストは発生しません。

タグの使用

デフォルトでは、変更追跡 (change tracking) は、チームによって同じ URL に対して実行された直近のスクレイプ結果と比較します。タグを使うと、同じ URL に対して別々の追跡履歴を維持できます。同じページを異なる間隔や異なるコンテキストで監視したい場合に便利です。

change tracking を利用したクロール

サイト全体の変更を監視するために、クロール処理に change tracking を追加します。scrapeOptions 内で changeTracking フォーマットを指定します。

changeTracking を使ったバッチスクレイプ

特定の URL 群を監視するには、batch scrape を使用します:

変更追跡のスケジュール設定

変更追跡は、定期的にスクレイピングを行う場合に最も効果を発揮します。cron、クラウドスケジューラ、ワークフローツールなどで自動化できます。

Cronジョブ

URLをスクレイピングし、変更を検知したらアラートを送るスクリプトを作成します。
check-pricing.sh
crontab -e でスケジュールを設定します:

クラウドおよびサーバーレスのスケジューラー

  • AWS: EventBridge ルールによる Lambda 関数のトリガー
  • GCP: Cloud Scheduler による Cloud Function のトリガー
  • Vercel / Netlify: Cron によってトリガーされるサーバーレス関数
  • GitHub Actions: schedule および cron トリガーによるスケジュールされたワークフロー

ワークフロー自動化

n8nZapierMake のようなノーコードプラットフォームから、スケジュール実行で Firecrawl API を呼び出し、結果を Slack、メール、データベースなどに送信できます。ワークフロー自動化ガイドも参照してください。

Webhooks

crawl や batch scrape のような非同期処理では、ポーリングするのではなく webhooks を使用して、到着しだい changeTracking の結果を受け取れます。
crawl.page イベントのペイロードには、各ページごとに changeTracking オブジェクトが含まれています。
Webhook の構成の詳細 (ヘッダー、メタデータ、イベント、再試行、署名検証) については、Webhook ドキュメントを参照してください。

設定リファレンス

changeTracking フォーマットオブジェクトを渡すときに利用できるオプション一覧:

データモデル

重要な詳細

changeTracking を使う場合は、必ず markdown フォーマットも同時に指定してください。変更追跡は、ページをその markdown コンテンツに基づいて比較します。
  • スナップショットの保持: スナップショットは永続的に保存され、有効期限はありません。前回のスクレイプから数か月後に再度スクレイプを実行しても、以前のスナップショットと正しく比較されます。
  • スコープ: 比較はチーム内に限定されます。任意の URL をチームとして初めてスクレイプした場合は、他のユーザーが同じ URL をスクレイプしていても "new" が返されます。
  • URL のマッチング: 過去のスクレイプは、ソース URL、チーム ID、markdown フォーマット、tag が完全一致したものと照合されます。スクレイプ間で URL を一貫させてください。
  • パラメータの一貫性: 同じ URL に対して異なる includeTagsexcludeTagsonlyMainContent 設定を使うと、比較結果が信頼できなくなります。
  • 比較アルゴリズム: このアルゴリズムは、空白やコンテンツ順序の変化に強く設計されています。CAPTCHA やボット対策によるランダム化に対応するため、iframe のソース URL は無視されます。
  • キャッシュ: changeTracking を指定したリクエストは、インデックス キャッシュをバイパスします。maxAge パラメータは無視されます。
  • エラー処理: レスポンス内の warning フィールドを監視し、changeTracking オブジェクトが存在しない可能性を考慮して処理してください (これは、前回スクレイプのデータベース検索がタイムアウトした場合に発生することがあります) 。

料金

Firecrawl API キーが必要な AI エージェントですか?自動オンボーディング手順については、firecrawl.dev/agent-onboarding/SKILL.md を参照してください。