Skip to main content

高度なスクレイピングガイド

Firecrawl の API 全体で、スクレイピングオプション、ブラウザ アクション、クロール、マップ、エージェントエンドポイントを構成します。
6 min read

Firecrawl の scrape、crawl、map、agent 各エンドポイントで利用できるすべてのオプションのリファレンスです。

基本的なスクレイピング#

単一のページをスクレイピングしてクリーンなMarkdownコンテンツを取得するには、/scrape エンドポイントを使用します。

PDFのスクレイピング#

FirecrawlはPDFに対応しています。PDFを確実に解析したい場合は、parsers オプション (例: parsers: ["pdf"]) を使用してください。mode オプションで解析戦略を制御できます。

  • auto (デフォルト) — まず高速なテキストベース抽出を試み、必要に応じてOCRにフォールバックします。
  • fast — テキストベースの解析のみ (埋め込みテキスト) 。最も高速ですが、スキャンされたページや画像の多いページはスキップされます。
  • ocr — すべてのページで強制的にOCR解析を行います。スキャンされたドキュメントや、auto がページを誤判定する場合に使用してください。

{ type: "pdf" }"pdf" は、どちらもデフォルトで mode: "auto" になります。

スクレイピングのオプション#

/scrape エンドポイントを使用する場合、以下のオプションでリクエストをカスタマイズできます。

フォーマット (formats)#

formats 配列は、スクレイパーが返す出力フォーマットを制御します。デフォルト: ["markdown"]

文字列フォーマット: 名前をそのまま渡します (例: "markdown")。

FormatDescription
markdownページコンテンツをクリーンな Markdown に変換したもの。
html不要な要素を削除して処理した HTML。
rawHtmlサーバーから返されたオリジナルの HTML をそのまま返すもの。
rawBase64元の HTTP レスポンスボディを Base64 エンコードした、プレーンな Base64 文字列。リクエスト内で唯一のフォーマットである必要があります。MIME タイプは metadata.contentType に含まれます。
linksページ上で見つかったすべてのリンク。
imagesページ上で見つかったすべての画像。
summaryページコンテンツの LLM 生成サマリー。
brandingブランドアイデンティティ (色、フォント、タイポグラフィ、余白、UI コンポーネント) を抽出。
product複数ソースの構造化データを使って、商品ページから構造化された商品情報 (タイトル、価格、在庫状況、画像、バリアント) を抽出。

オブジェクトフォーマット: type と追加オプションを含むオブジェクトを渡します。

FormatOptionsDescription
jsonprompt?: string, schema?: objectLLM を使って構造化データを抽出します。JSON スキーマおよび/または自然言語のプロンプトを指定します (最大 10,000 文字)。
screenshotfullPage?: boolean, quality?: number, viewport?: { width, height }スクリーンショットを取得します。リクエストごとに最大 1 枚。ビューポートの最大解像度は 7680×4320。スクリーンショット URL は 24 時間後に期限切れになります。
changeTrackingmodes?: ("json" | "git-diff")[], tag?: string, schema?: object, prompt?: stringスクレイプ結果間の変更を追跡します。formats 配列に "markdown" も含まれている必要があります。
attributesselectors: [{ selector: string, attribute: string }]CSS セレクタにマッチする要素から特定の HTML 属性を抽出します。

モバイルスクレイピング#

モバイル端末をエミュレートするには、mobile: true を設定します。これは、レスポンシブサイトでデスクトップではコンテンツが非表示になる場合や、モバイルブラウザ向けに異なるレイアウトが返される場合に有効です。

地域別のサイトでは、location とモバイルのスクリーンショットを組み合わせることで、実際にレンダリングされたレイアウトを確認できます。

mobile: true を指定してもサイトがデスクトップ向けレイアウトを返す場合は、headers でモバイル用の User-Agent を追加してください。

コンテンツフィルタリング#

これらのパラメータは、ページのどの部分を出力に含めるかを制御します。onlyMainContenttrue (デフォルト) の場合、ナビゲーションやフッターなどの共通レイアウト部分は除去されます。includeTagsexcludeTags はフィルタリング後の結果ではなく元のページ DOM に対して適用されるため、セレクタはソース HTML 内での要素を対象にする必要があります。タグフィルタリングの起点としてページ全体を使用するには、onlyMainContent: false を設定します。

ParameterTypeDefaultDescription
onlyMainContentbooleantrueメインコンテンツのみを返します。ページ全体を対象にするには false を設定します。
includeTagsarray含める CSS セレクタ — タグ、クラス、ID、または属性セレクタ (例: ["h1", "p", ".main-content", "[data-testid=\"main\"]"])。
excludeTagsarray除外する CSS セレクタ — タグ、クラス、ID、または属性セレクタ (例: ["#ad", "#footer", "[role=\"banner\"]"])。

タイミングとキャッシュ#

ParameterTypeDefaultDescription
waitForinteger (ms)0スマート待機に加えて、スクレイピング前に追加で待機する時間。必要な場合にのみ使用してください。
maxAgeinteger (ms)172800000この値より新しい場合はキャッシュされたバージョンを返す (デフォルトは2日) 。常に最新を取得するには 0 を指定。
timeoutinteger (ms)60000リクエストを中断するまでの最大時間 (デフォルトは60秒) 。最小値は1000 (1秒) 。

PDF 解析#

ParameterTypeDefaultDescription
parsersarray["pdf"]PDF の処理方法を制御します。[] で解析をスキップしてbase64 を返す (1 クレジット固定) 。
PropertyTypeDefaultDescription
type"pdf"(required)パーサーの種類。
mode"fast" | "auto" | "ocr""auto"fast: テキストベースの抽出のみを実行。auto: fast で処理し、必要に応じて OCR をフォールバックとして使用。ocr: OCR のみを強制的に使用。
maxPagesinteger解析するページ数の上限を設定。
pagesbooleanfalseドキュメントの pages フィールドに、物理ページごとの Markdown も返します。追加コストなし。
blocksbooleanfalseドキュメントの blocks フィールドに、ページごとの型付きレイアウトブロック (正規化された境界ボックス、ブロックタイプ、読み取り順、Markdown の文字スパン) も返します。追加コストなし。
pageMarkersbooleanfalseドキュメントの Markdown 内の改ページ位置に <!-- page N --> マーカーを付加します (ページ間のみ。改ページをまたいで結合されたページでは番号が飛ぶ場合があります — 解析 を参照)。追加コストなし。

アクション#

スクレイピングの前にブラウザアクションを実行します。これは、動的コンテンツ、ページ遷移、またはユーザー操作が必要なページで役立ちます。1リクエストにつき最大50個のアクションを含めることができ、すべての wait アクションと waitFor を合わせた待機時間の合計は60秒を超えてはいけません。

アクションパラメータ説明
waitmilliseconds?: number, selector?: string一定時間待機するまたは要素が表示されるまで待機します (指定できるのはどちらか一方のみです) 。selector を使用する場合は、30秒でタイムアウトします。
clickselector: string, all?: booleanCSSセレクタに一致する要素をクリックします。all: true を設定すると、一致したすべての要素をクリックします。
writetext: string現在フォーカスされているフィールドにテキストを入力します。先に click アクションで要素にフォーカスする必要があります。
presskey: stringキーボードのキーを押します (例: "Enter""Tab""Escape") 。
scrolldirection?: "up" | "down", selector?: stringページ全体または特定の要素をスクロールします。方向のデフォルトは "down" です。
screenshotfullPage?: boolean, quality?: number, viewport?: { width, height }スクリーンショットを取得します。viewport の最大解像度は 7680×4320 です。
scrape(none)アクションシーケンスのこの時点で、現在のページの HTML を取得します。
executeJavascriptscript: stringページ内で JavaScript コードを実行します。戻り値はレスポンスの actions.javascriptReturns 配列で利用できます。
pdfformat?: string, landscape?: boolean, scale?: numberPDFを生成します。対応フォーマット: "A0" から "A6""Letter""Legal""Tabloid""Ledger"。デフォルトは "Letter" です。

アクション実行時の注意点#

  • Write を使う前に、対象要素へフォーカスするための click が必要です。
  • Scroll は、ページ全体ではなく特定の要素をスクロールするために、任意の selector を指定できます。
  • Wait は、milliseconds (固定の待機時間) または selector (指定要素が表示されるまで待機) のいずれかを受け取ります。
  • アクションは 逐次的に 実行されます。各ステップは、次のステップが開始する前に完了します。
  • アクションは PDF では利用できません。URL が PDF に解決される場合、そのリクエストは失敗します。

高度なアクション例#

スクリーンショットを撮影する:

cURL

複数の要素をクリックする:

cURL

PDF を生成する:

cURL

JavaScript を実行する (例: ページに埋め込まれたデータを抽出する) :

cURL

executeJavascript アクションの戻り値は、レスポンス内の actions.javascriptReturns 配列に格納されます。

フルスクレイプの例#

次のリクエストでは、複数のスクレイプオプションを組み合わせています。

cURL

このリクエストは、Markdown、HTML、raw HTML、リンク、およびページ全体のスクリーンショットを返します。コンテンツの対象を <h1><p><a>.main-content に絞り、#ad#footer を除外し、スクレイピング前に1秒待機し、タイムアウトを15秒に設定し、PDF解析を有効にします。

詳細は Scrape API reference を参照してください。

formats を使った JSON 抽出#

formats の JSON フォーマットオブジェクトを使うと、1 回の処理で構造化データを抽出できます。

エージェントエンドポイント#

自律的に複数ページにまたがるデータを抽出するには、/v2/agent エンドポイントを使用します。エージェントは非同期で動作します。まずジョブを開始し、その後、結果が返ってくるまでポーリングします。

Agent は、このエンドポイントの正規の参照先であり、実行トレース、webhook、完全なパラメータリストが含まれます。

エージェントオプション#

ParameterTypeDefaultDescription
promptstring(required)抽出するデータを自然言語で記述した指示 (最大 10,000 文字) 。
urlsarrayエージェントの処理対象を限定する URL。
schemaobject抽出データの構造を定義する JSON スキーマ。
maxCreditsnumber2500エージェントが消費できる最大クレジット数。ダッシュボードでは最大 2,500 まで対応しています。より高い上限を設定する場合は、API 経由で設定してください (2,500 を超える値は常に有料リクエストとして課金されます) 。
strictConstrainToURLsbooleanfalsetrue の場合、エージェントは指定された URL のみを巡回します。
modelstring"spark-2"使用する AI モデル。Spark 1 モデルは非推奨であり、現在は "spark-2" にルーティングされます。
effortstring(unset)推論予算: "low""medium"、または "high"。すべての実行は "spark-2" で行われるため、model の有無にかかわらず effort を送信できます。

エージェントのステータスを確認する#

進捗状況を確認するには、GET /v2/agent/{jobId} をポーリングします。レスポンスの status フィールドは "processing""completed"、または "failed" のいずれかになります。

cURL

Python および Node 用の SDK には、ジョブを開始し、完了するまで自動的にポーリングするための便利なメソッド firecrawl.agent() も用意されています。

複数ページのクロール#

複数のページをクロールするには、/v2/crawl エンドポイントを使用します。クロールは非同期で実行され、ジョブ ID が返されます。クロールするページ数を制御するには、limit パラメータを使用します。省略した場合、クロールは最大10,000ページまで処理します。

cURL

レスポンス#

クロールジョブを確認する#

ジョブ ID を使用してクロールのステータスを確認し、結果を取得します。

cURL

コンテンツが 10MB を超える場合、またはクロールジョブがまだ実行中の場合、レスポンスには next パラメータが含まれることがあります。これは、結果の次のページを指す URL です。

クロール用promptとパラメータのプレビュー#

自然言語のpromptを指定すると、Firecrawl がクロール設定を導き出します。まずはその内容をプレビューしてください。

cURL

クローラーオプション#

/v2/crawl エンドポイントでは、次のオプションでクロールの挙動をカスタマイズできます。

パスフィルタリング#

ParameterTypeDefaultDescription
includePathsarrayデフォルトでは URL のパス名のみに適用される、インクルード対象とする URL の正規表現パターン。
excludePathsarrayデフォルトでは URL のパス名のみに適用される、除外対象とする URL の正規表現パターン。
regexOnFullURLbooleanfalseパス名ではなく、完全な URL に対してパターンをマッチさせます。
Warning

開始 URL も includePaths に対してチェックされます。いずれのパターンにもマッチしない場合、クロールの結果が 0 ページになる可能性があります。

クロール範囲#

ParameterTypeDefaultDescription
maxDiscoveryDepthinteger新しいURLを発見する際の最大リンク深度。
limitinteger10000クロールするページ数の上限。
crawlEntireDomainbooleanfalse同一階層や上位階層のページも探索してドメイン全体をカバーする。
allowExternalLinksbooleanfalse外部ドメインへのリンクもたどる。
allowSubdomainsbooleanfalseメインドメインのサブドメインもたどる。
delaynumber (s)スクレイピング間のディレイ。これを設定すると、同時実行数は1に固定される。

サイトマップと重複排除#

ParameterTypeDefaultDescription
sitemapstring"include""include": サイトマップ + リンク発見を使用します。"skip": サイトマップを無視します。"only": サイトマップ上の URL のみをクロールします。
deduplicateSimilarURLsbooleantrueURL のバリエーション (www., https, 末尾のスラッシュ, index.html) を正規化し、同一の URL として扱います。
ignoreQueryParametersbooleanfalse重複排除の前にクエリ文字列を除去します (例: /page?a=1/page?a=2 は 1 つの URL と見なされます) 。

クローリング時のスクレイプオプション#

ParameterTypeDefaultDescription
scrapeOptionsobject{ formats: ["markdown"] }ページ単位のスクレイプ設定。上記のすべての scrape options が利用可能です。

クロールの例#

cURL

/v2/map エンドポイントは、指定したWeb サイトに関連するURLを特定します。

cURL

Map オプション#

ParameterTypeDefaultDescription
searchstringテキストに一致するリンクに絞り込みます。
limitinteger100返されるリンクの最大数。
sitemapstring"include""include""skip"、または "only"
includeSubdomainsbooleantrueサブドメインを含みます。

API リファレンス: Map Endpoint Documentation

Firecrawl をホワイトリストに追加する#

自分のウェブサイトのスクレイピングを Firecrawl に許可する#

  • User Agent: ファイアウォールやセキュリティルールで FirecrawlAgent を許可してください。
  • IP addresses: Firecrawl は、外向き通信に固定の送信元 IP アドレスを使用していません。

アプリケーションから Firecrawl API への呼び出しを許可する#

ファイアウォールがアプリケーションから外部サービスへのアウトバウンドリクエストをブロックしている場合は、アプリケーションが Firecrawl API (api.firecrawl.dev) に到達できるよう、Firecrawl の API サーバーの IP アドレスをホワイトリストに追加する必要があります。

  • IP Address: 35.245.250.27

この IP をファイアウォールのアウトバウンド許可リストに追加し、バックエンドから Firecrawl へ scrape、crawl、map、および agent リクエストを送信できるようにしてください。