# スクレイピング

> あらゆるURLをクリーンなデータに変換

import InstallationPython from "/snippets/ja/v2/installation/python.mdx";
import InstallationNode from "/snippets/ja/v2/installation/js.mdx";
import InstallationCLI from "/snippets/ja/v2/installation/cli.mdx";
import ScrapePython from "/snippets/ja/v2/scrape/base/python.mdx";
import ScrapeNode from "/snippets/ja/v2/scrape/base/js.mdx";
import ScrapeCURL from "/snippets/ja/v2/scrape/base/curl.mdx";
import ScrapeCLI from "/snippets/ja/v2/scrape/base/cli.mdx";
import ScrapeResponse from "/snippets/ja/v2/scrape/base/output.mdx";
import ExtractCURL from "/snippets/ja/v2/scrape/json/base/curl.mdx";
import ExtractPython from "/snippets/ja/v2/scrape/json/base/python.mdx";
import ExtractNode from "/snippets/ja/v2/scrape/json/base/js.mdx";
import ExtractOutput from "/snippets/ja/v2/scrape/json/base/output.mdx";
import ExtractNoSchemaCURL from "/snippets/ja/v2/scrape/json/no-schema/curl.mdx";
import ExtractNoSchemaPython from "/snippets/ja/v2/scrape/json/no-schema/python.mdx";
import ExtractNoSchemaNode from "/snippets/ja/v2/scrape/json/no-schema/js.mdx";
import ExtractNoSchemaOutput from "/snippets/ja/v2/scrape/json/no-schema/output.mdx";
import ScrapeActionsPython from "/snippets/ja/v2/scrape/actions/python.mdx";
import ScrapeActionsNode from "/snippets/ja/v2/scrape/actions/js.mdx";
import ScrapeActionsCURL from "/snippets/ja/v2/scrape/actions/curl.mdx";
import ScrapeActionsOutput from "/snippets/ja/v2/scrape/actions/output.mdx";
import BatchScrapePython from "/snippets/ja/v2/batch-scrape/short/python.mdx";
import BatchScrapeNode from "/snippets/ja/v2/batch-scrape/short/js.mdx";
import BatchScrapeCURL from "/snippets/ja/v2/batch-scrape/short/curl.mdx";
import BatchScrapeOutput from "/snippets/ja/v2/batch-scrape/base/output.mdx";
import BatchScrapeAsyncOutput from "/snippets/ja/v2/batch-scrape/base/async-output.mdx";
import ScrapeLocationPython from "/snippets/ja/v2/scrape/location/python.mdx";
import ScrapeLocationNode from "/snippets/ja/v2/scrape/location/js.mdx";
import ScrapeLocationCURL from "/snippets/ja/v2/scrape/location/curl.mdx";
import ScrapeBrandingPython from "/snippets/ja/v2/scrape/branding/base/python.mdx";
import ScrapeBrandingNode from "/snippets/ja/v2/scrape/branding/base/js.mdx";
import ScrapeBrandingCURL from "/snippets/ja/v2/scrape/branding/base/curl.mdx";
import ScrapeBrandingOutput from "/snippets/ja/v2/scrape/branding/base/output.mdx";
import ScrapeBrandingCombinedPython from "/snippets/ja/v2/scrape/branding/combined/python.mdx";
import ScrapeBrandingCombinedNode from "/snippets/ja/v2/scrape/branding/combined/js.mdx";
import ScrapeBrandingCombinedCURL from "/snippets/ja/v2/scrape/branding/combined/curl.mdx";
import ScrapeProductPython from "/snippets/ja/v2/scrape/product/base/python.mdx";
import ScrapeProductNode from "/snippets/ja/v2/scrape/product/base/js.mdx";
import ScrapeProductCURL from "/snippets/ja/v2/scrape/product/base/curl.mdx";
import ScrapeProductOutput from "/snippets/ja/v2/scrape/product/base/output.mdx";
import ScrapeProductCombinedPython from "/snippets/ja/v2/scrape/product/combined/python.mdx";
import ScrapeProductCombinedNode from "/snippets/ja/v2/scrape/product/combined/js.mdx";
import ScrapeProductCombinedCURL from "/snippets/ja/v2/scrape/product/combined/curl.mdx";
import ScrapeAudioPython from "/snippets/ja/v2/scrape/audio/python.mdx";
import ScrapeAudioNode from "/snippets/ja/v2/scrape/audio/js.mdx";
import ScrapeAudioCURL from "/snippets/ja/v2/scrape/audio/curl.mdx";
import ScrapeVideoPython from "/snippets/ja/v2/scrape/video/python.mdx";
import ScrapeVideoNode from "/snippets/ja/v2/scrape/video/js.mdx";
import ScrapeVideoCURL from "/snippets/ja/v2/scrape/video/curl.mdx";
import ScrapeQuestionPython from "/snippets/ja/v2/scrape/question/python.mdx";
import ScrapeQuestionNode from "/snippets/ja/v2/scrape/question/js.mdx";
import ScrapeQuestionCURL from "/snippets/ja/v2/scrape/question/curl.mdx";
import ScrapeHighlightsPython from "/snippets/ja/v2/scrape/highlights/python.mdx";
import ScrapeHighlightsNode from "/snippets/ja/v2/scrape/highlights/js.mdx";
import ScrapeHighlightsCURL from "/snippets/ja/v2/scrape/highlights/curl.mdx";
import PlaygroundCTA from "/snippets/ja/shared/playground-cta-scrape.mdx";

Firecrawl は Web ページを Markdown に変換し、LLM アプリケーションに最適な形式にします。

* 複雑な処理を管理します: プロキシ、キャッシュ、レート制限、JavaScript でブロックされたコンテンツ
* 動的コンテンツに対応します: 動的な Web サイト、JavaScript でレンダリングされるサイト、PDF、画像
* クリーンな Markdown、構造化データ、スクリーンショット、または HTML を出力します。

詳細は、[Scrape Endpoint APIリファレンス](https://docs.firecrawl.dev/api-reference/endpoint/scrape)を参照してください。

<PlaygroundCTA />

<Note>リクエストが失敗した場合は、エラーコード、原因、対処法、再試行に関するガイダンスの一覧については[Errors](/ja/api-reference/errors)を参照してください。</Note>

<div id="scraping-a-url-with-firecrawl">
  ## FirecrawlでURLをスクレイピングする
</div>

<div id="scrape-endpoint">
  ### /scrape エンドポイント
</div>

URL をスクレイピングして、その内容を取得するために使用します。

<div id="installation">
  ### インストール
</div>

<CodeGroup>
  <InstallationPython />

  <InstallationNode />

  <InstallationCLI />
</CodeGroup>

<div id="usage">
  ### 使い方
</div>

<CodeGroup>
  <ScrapePython />

  <ScrapeNode />

  <ScrapeCURL />

  <ScrapeCLI />
</CodeGroup>

パラメータの詳細は、[APIリファレンス](https://docs.firecrawl.dev/api-reference/endpoint/scrape)を参照してください。

<Tip>
  **PDFとドキュメント:** `/scrape` は、URLからPDF、DOCX、その他のドキュメント形式を自動検出します。PDFのURLは通常のWebページと同じように渡せます。Firecrawlが解析して、整形されたmarkdownを返します。URLでアクセスできないローカルファイルの場合は、代わりに[`/parse`](/ja/features/parse)を使用してください。

  ```python Python
  doc = firecrawl.scrape("https://example.com/report.pdf", formats=["markdown"])
  print(doc.markdown)
  ```
</Tip>

<Info>
  各スクレイピングで1クレジットを消費します。次のオプションには追加クレジットが必要です。JSONモードは1ページあたり追加で4クレジット、questionフォーマットとhighlightsフォーマットは各フォーマットごとに1ページあたり追加で4クレジット、PII マスキングは1ページあたり追加で4クレジット、PDF解析はPDFの1ページあたり1クレジットを消費し、音声または動画抽出は1ページあたり追加で4クレジットかかります。
</Info>

<div id="response">
  ### レスポンス
</div>

SDK はデータオブジェクトを直接返します。cURL は以下のとおり、ペイロードをそのまま返します。

<ScrapeResponse />

<div id="response-metadata-and-status-codes">
  ### レスポンスのメタデータとステータスコード
</div>

スクレイピングのレスポンスには、2つの異なるステータスレイヤーがあります。両者を区別することが重要です。

* **API リクエストのステータス**: Firecrawl API 呼び出し自体の HTTP ステータスと、レスポンスボディ内の `success` ブール値です。リクエストが受理・処理されると、対象ページが非 2xx コードを返した場合でも、HTTP `200` と `success: true` が返されます。
* **ページのステータス** (`data.metadata.statusCode`): 対象 Web サイトがそのページに対して返した HTTP ステータスです (例: `200`、`301`、`404`、`403`、`500`) 。これにより、ページ自体の応答を確認できます。

したがって、信頼できる確認手順は次のとおりです。まずリクエストが成功したこと (HTTP `200` + `success: true`) を確認し、次に実際のページの結果として `data.metadata.statusCode` を確認します。Firecrawl では、`statusCode` が 2xx または `304` の場合、ページは正常に読み込まれたと見なします。それ以外の場合は、ページが正常に読み込まれなかったことを意味します。ページがエラーステータスを返した場合、`data.metadata.error` に追加の詳細が含まれることがあります。

<div id="scrape-formats">
  ## スクレイピングのフォーマット
</div>

出力のフォーマットを選択できます。複数の出力フォーマットを指定することも可能です。サポートされているフォーマットは次のとおりです:

* Markdown (`markdown`)
* Summary (`summary`)
* HTML (`html`) - ページの HTML をクリーンアップしたバージョン
* Raw HTML (`rawHtml`) - ページから取得した未加工の HTML

- Raw Base64 (`rawBase64`) - Base64 エンコードされた元の HTTP レスポンスボディ。リクエスト内で唯一のフォーマットである必要があります

* Screenshot (`screenshot`、`fullPage`、`quality`、`viewport` などのオプションあり) — スクリーンショットの URL は 24 時間後に期限切れになります
* Links (`links`)
* JSON (`json`) - 構造化された出力
* Images (`images`) - ページ内のすべての画像 URL を抽出
* Branding (`branding`) - ブランドアイデンティティとデザインシステムを抽出
* Product (`product`) - 商品ページから構造化された商品データ (タイトル、価格、在庫状況、バリアント) を抽出
* Audio (`audio`) - 対応している動画 URL (例: YouTube) から MP3 音声を抽出 (署名付き GCS URL を返します。1 時間後に期限切れになります)
* Video (`video`) - 対応している動画 URL (例: YouTube) から最高品質の動画を抽出 (署名付き GCS URL を返します。1 時間後に期限切れになります)
* Query (`query`、`prompt` と任意の `mode` を使用) - ページについて自然言語で質問できます。回答は `answer` フィールドで返されます

出力のキーは、選択したフォーマットに対応します。

`rawBase64` フォーマットは、Base64 エンコードされた元の HTTP レスポンスボディを返します。`rawBase64` フィールドにはデータ URI ではなく、Base64 文字列そのものが格納されます。MIME タイプは `metadata.contentType` から取得します。API は他のフォーマットとの併用を拒否するため、`rawBase64` は単独でリクエストしてください。レスポンスには `markdown`、`html`、`rawHtml` フィールドは含まれず、その URL にある単一のファイルのみが含まれます。CSS、画像、その他のサブリソースは含まれません。

<div id="extract-structured-data">
  ## 構造化データの抽出
</div>

<div id="scrape-with-json-endpoint">
  ### /scrape (json あり) エンドポイント
</div>

スクレイピングしたページから構造化データを抽出するために使用します。

<Tip>
  商品を抽出する場合、商品ページでは [`product` format](#extract-product-data) が構造化された商品フィールド (タイトル、価格、在庫状況、variants) を決定論的に返します。LLM の呼び出しも schema の定義も不要です。カスタムフィールドが必要な場合や、商品ページ以外を対象にする場合は `json` を使用してください。
</Tip>

<CodeGroup>
  <ExtractPython />

  <ExtractNode />

  <ExtractCURL />
</CodeGroup>

出力:

<ExtractOutput />

<div id="extracting-without-schema">
  ### スキーマなしでの抽出
</div>

エンドポイントに `prompt` を渡すだけで、スキーマなしで抽出できます。LLM がデータ構造を決定します。

<CodeGroup>
  <ExtractNoSchemaPython />

  <ExtractNoSchemaNode />

  <ExtractNoSchemaCURL />
</CodeGroup>

出力:

<ExtractNoSchemaOutput />

<div id="json-format-options">
  ### JSON フォーマットのオプション
</div>

`json` フォーマットを使用する場合は、`formats` 内に以下のパラメータを含むオブジェクトを渡します:

* `schema`: 構造化出力のための JSON Schema。
* `prompt`: スキーマがある場合や、軽い指示で十分な場合に抽出を補助する任意のプロンプト。

<div id="extract-brand-identity">
  ## ブランドアイデンティティの抽出
</div>

<div id="scrape-with-branding-endpoint">
  ### /scrape (ブランディング付き) エンドポイント
</div>

ブランディングフォーマットは、色、フォント、タイポグラフィ、余白・間隔、UIコンポーネントなど、ウェブページからブランドアイデンティティに関する包括的な情報を抽出します。デザインシステムの分析やブランド監視、ウェブサイトのビジュアルアイデンティティを把握する必要があるツールの構築に有用です。

<CodeGroup>
  <ScrapeBrandingPython />

  <ScrapeBrandingNode />

  <ScrapeBrandingCURL />
</CodeGroup>

<div id="response-2">
  ### レスポンス
</div>

ブランディングフォーマットは、以下の構造を持つ包括的な `BrandingProfile` オブジェクトを返します。

<ScrapeBrandingOutput />

<div id="branding-profile-structure">
  ### ブランディングプロファイルの構造
</div>

`branding` オブジェクトには次のプロパティが含まれます:

* `colorScheme`: 検出された配色 (`"light"` または `"dark"`)
* `logo`: メインロゴの URL
* `colors`: ブランドカラーを含むオブジェクト:
  * `primary`, `secondary`, `accent`: 主要なブランドカラー
  * `background`, `textPrimary`, `textSecondary`: UI カラー
  * `link`, `success`, `warning`, `error`: セマンティックカラー
* `fonts`: ページで使用されているフォントファミリーの配列
* `typography`: タイポグラフィの詳細情報:
  * `fontFamilies`: 基本、見出し、コード用のフォントファミリー
  * `fontSizes`: 見出しと本文のサイズ定義
  * `fontWeights`: ウェイトの定義 (light、regular、medium、bold)
  * `lineHeights`: テキスト種別ごとの行の高さ
* `spacing`: 余白とレイアウト情報:
  * `baseUnit`: 基準となるスペーシング単位 (px)
  * `borderRadius`: 既定の角丸半径
  * `padding`, `margins`: スペーシング値
* `components`: UI コンポーネントのスタイル:
  * `buttonPrimary`, `buttonSecondary`: ボタンスタイル
  * `input`: 入力フィールドのスタイル
* `icons`: アイコンのスタイル情報
* `images`: ブランド画像 (ロゴ、favicon、og:image)
* `animations`: アニメーションおよびトランジション設定
* `layout`: レイアウト構成 (グリッド、ヘッダー／フッターの高さ)
* `personality`: ブランドの特性 (トーン、エネルギー、対象ユーザー)

<div id="combining-with-other-formats">
  ### 他のフォーマットとの併用
</div>

ブランディング用フォーマットを他のフォーマットと組み合わせることで、ページの包括的なデータを取得できます:

<CodeGroup>
  <ScrapeBrandingCombinedPython />

  <ScrapeBrandingCombinedNode />

  <ScrapeBrandingCombinedCURL />
</CodeGroup>

<div id="extract-product-data">
  ## 商品データを抽出
</div>

`product` フォーマットでは、商品データを**決定論的に**抽出できます。これは [`json` フォーマット](#extract-structured-data) と同様の構造化された出力ですが、LLM の呼び出しやユーザー定義のスキーマは不要で、商品ページ向けに特化しています。これまで `json` スキーマで商品フィールドを取得していた場合は、代わりに `formats: ["product"]` を使ってください。こちらのほうが高速かつ低コストですが、対応は商品に限定されます。

戻り値は、`title`、`brand`、`category`、`description`、`variants` を含む `product` オブジェクトです。各 `variant` には `price`、`original price`、`availability`、`images` が含まれ、価格監視、カタログ取り込み、価格比較ツールに役立ちます。

<div id="scrape-with-product-endpoint">
  ### /scrape (product付き) エンドポイント
</div>

<CodeGroup>
  <ScrapeProductPython />

  <ScrapeProductNode />

  <ScrapeProductCURL />
</CodeGroup>

<div id="response-3">
  ### レスポンス
</div>

productフォーマットでは、以下の構造を持つ `product` オブジェクトが返されます。

<ScrapeProductOutput />

<div id="product-object-structure">
  ### Product オブジェクトの構造
</div>

`product` オブジェクトには、次のプロパティが含まれます。

* `title`: 商品名
* `brand`: ブランド名 (任意)
* `category`: 商品カテゴリ (任意)
* `url`: 商品の正規 URL
* `description`: 商品の説明 (任意)
* `variants`: 商品バリアントの配列。価格、在庫状況、画像は各バリアントごとに保持されます。SKU が 1 つの商品でも、これらを持つバリアントが必ず 1 つだけ返されます。各バリアントには次が含まれます。
  * `id`, `sku`, `title`: バリアントの識別子とラベル (いずれも任意)
  * `values`: オプション名から値への map (例: `{ "color": "Charcoal" }`)  (任意)
  * `price`: 現在の価格オブジェクト (任意) :
    * `amount`: 数値の価格
    * `currency`: 通貨コード。ページで取得できた場合にのみ返されます (任意)
    * `formatted`: ページ上で表示されている価格表記 (任意)
  * `sale`: バリアントが割引されている場合にのみ存在します (任意) 。内容:
    * `originalPrice`: 元の価格 (割引前) 。形式は `price` と同じです
  * `availability`: 在庫状況の情報。バリアントには常に含まれます:
    * `inStock`: バリアントが在庫ありかどうか
    * `text`: ページ上の生の在庫状況テキスト (任意)
  * `images`: バリアント画像の配列。各画像には `url` と任意の `alt` テキストが含まれます (任意)

<div id="how-product-extraction-works">
  ### 商品抽出の仕組み
</div>

`product` フォーマットは、ページ上の構造化データから決定論的に商品を抽出します。LLM は関与しません。複数のソースを、**JSON-LD &gt; schema.org microdata &gt; RDFa &gt; 埋め込み状態 (`__NEXT_DATA__`/Nuxt/Apollo/Redux/Remix) &gt; AliExpress `runParams` &gt; GA4 `dataLayer` &gt; OpenGraph/`<meta>`** の優先順位でマージします。このマージは同一性を考慮して行われるため、異なる商品のフィールドが混在することはありません。通貨は、ページ上のソースに含まれている場合にのみ返されます。

<Note>
  商品抽出はフェイルクローズです。あいまいなページでは商品は返されず、OpenGraph のような弱いソースは価格が存在する場合にのみ利用されます。抽出可能な商品がないページでは、レスポンスには `product` オブジェクトが含まれず、`warning` が追加されます (例: &quot;No product found...&quot;) 。
</Note>

<Note>
  **セルフホスティング:** `product` フォーマットは専用の商品抽出サービスによって提供されます。Firecrawl Cloud ではそのまま利用できます。セルフホストする場合は、そのサービスを指すように `PRODUCT_EXTRACTION_SERVICE_URL` を設定してください。未設定の場合、`product` フォーマットをリクエストすると `warning` が返され、商品は返されません (音声/動画フォーマットが各サービスで採用しているのと同じパターンです) 。
</Note>

<div id="combining-with-other-formats-2">
  ### 他のフォーマットと組み合わせる
</div>

productフォーマットは他のフォーマットと組み合わせることで、網羅的なページデータを取得できます。

<CodeGroup>
  <ScrapeProductCombinedPython />

  <ScrapeProductCombinedNode />

  <ScrapeProductCombinedCURL />
</CodeGroup>

<div id="audio-extraction">
  ## 音声抽出
</div>

`audio` フォーマットでは、対応する Web サイト (YouTube など) から音声を MP3 ファイルとして抽出し、署名付きの Google Cloud Storage URL を返します。これは、音声処理パイプラインや文字起こしサービス、ポッドキャスト向けツールの構築に役立ちます。

<Info>
  音声抽出のコストは 1 ページあたり 5 クレジットです (基本 1 + 追加 4) 。
</Info>

<CodeGroup>
  <ScrapeAudioPython />

  <ScrapeAudioNode />

  <ScrapeAudioCURL />
</CodeGroup>

<div id="video-extraction">
  ## 動画抽出
</div>

`video` フォーマットでは、対応している Web サイト (例: YouTube) から最高画質の動画を抽出し、署名付きの Google Cloud Storage URL を返します。これは、動画処理パイプラインやモデレーションツール、メディアアーカイブ用ワークフローの構築に役立ちます。

<Info>
  動画抽出のコストは 1 ページあたり 5 クレジットです (基本 1 + 追加 4) 。
</Info>

<CodeGroup>
  <ScrapeVideoPython />

  <ScrapeVideoNode />

  <ScrapeVideoCURL />
</CodeGroup>

<span id="question-format" />

<div id="question-format">
  ## 質問フォーマット
</div>

`question` フォーマットを使うと、ページについて自然言語で質問できます。Firecrawl は、レスポンスの `answer` フィールドに回答を返します。

<Info>
  `question` フォーマットのコストは、1 ページあたり 5 クレジットです (基本 1 + LLM 呼び出しの追加 4) 。
</Info>

フォーマットオブジェクト内のオプション:

* `question` (`type: "question"` の場合は必須) : 回答する質問。最大 10,000 文字。

`question` は他のフォーマットと組み合わせることもできます。たとえば、`markdown` と `question` を一緒にリクエストすると、1 回の呼び出しでページの内容と回答を取得できます。

<CodeGroup>
  <ScrapeQuestionPython />

  <ScrapeQuestionNode />

  <ScrapeQuestionCURL />
</CodeGroup>

`question` フォーマットは、`scrapeOptions` を介して `/search` でも利用でき、各検索結果に対して同じ抽出を実行します。

<span id="highlights-format" />

<div id="highlights-format">
  ## Highlights フォーマット
</div>

ページから関連するソーステキストを見つけるには、`highlights` フォーマットを使用します。Firecrawl は、選択されたテキストをレスポンスの `highlights` フィールドに返します。

<Info>
  `highlights` フォーマットのコストは 1 ページあたり 5 クレジット です (基本 1 + LLM 呼び出しの追加 4) 。
</Info>

フォーマットオブジェクト内のオプション:

* `query` (`type: "highlights"` の場合は必須) : ソーステキストを選択するためのリクエスト。最大 10,000 文字。

`highlights` は他のフォーマットと組み合わせることもできます。たとえば、`markdown` と `highlights` を一緒にリクエストすると、ページコンテンツとソーステキストを 1 回の呼び出しで取得できます。

<CodeGroup>
  <ScrapeHighlightsPython />

  <ScrapeHighlightsNode />

  <ScrapeHighlightsCURL />
</CodeGroup>

`highlights` フォーマットは、`scrapeOptions` を介して `/search` でも利用でき、各 search result に対して同じ extraction を実行します。

<div id="pii-redaction">
  ## PII のリダクション
</div>

返される `markdown` に含まれる個人を特定できる情報をリダクションするには、`redactPII: true` を設定します。`markdown` フィールドには、リダクション後の結果が含まれます。

SDK、cURL、CLI、MCP の例については、[PII Redaction](/ja/features/pii-redaction) を参照してください。

<div id="interacting-with-the-page-with-actions">
  ## アクションを使ってページとやり取りする
</div>

Firecrawl を使うと、スクレイピングの前に Web ページ上でさまざまなアクションを実行できます。これは、動的コンテンツとのインタラクション、ページ遷移、ユーザー操作が必要なコンテンツへのアクセスに特に有効です。

<Tip>
  **アクションよりも [Interact](/ja/features/interact) を推奨します。スクレイピングしたページを操作するための、より新しく強力な方法です。**

  Interact は、呼び出しをまたいで維持されるステートフルなブラウザセッションとして動作するため、次のいずれかを使ってページを段階的に操作できます。

  * **自然言語**: 柔軟で非決定的なフロー向け。例: *「『wireless headphones』を検索し、評価 4 以上かつ 200 ドル未満に絞り込んで、結果を返す」*。
  * **Playwright または agent-browser code**: 決定的な手順向け。例: `await page.click('#export')`.

  Interact は、プロファイル、永続セッション、ライブで埋め込み可能なブラウザビュー (エンドユーザー自身がブラウザを操作できるインタラクティブモードを含む) にも対応しています。
</Tip>

以下は、アクションを使って google.com に移動し、Firecrawl を検索し、最初の結果をクリックしてスクリーンショットを取得する例です。

ページの読み込み時間を確保するため、他のアクションの前後には基本的に `wait` アクションを使用することが重要です。

<div id="example">
  ### 例
</div>

<CodeGroup>
  <ScrapeActionsPython />

  <ScrapeActionsNode />

  <ScrapeActionsCURL />
</CodeGroup>

<div id="output">
  ### 出力
</div>

<CodeGroup>
  <ScrapeActionsOutput />
</CodeGroup>

スクレイピング後に、認証済みセッション、複数ステップのナビゲーション、ページのライブビューなど、より高度なブラウザ制御が必要なワークフローでは、アクション 配列を拡張するよりも [Interact](/ja/features/interact) の利用を推奨します。

<div id="location-and-language">
  ## ロケーションと言語
</div>

ターゲットの地域と言語設定に基づいて関連性の高いコンテンツを得るため、国と言語の優先順を指定します。

<div id="how-it-works">
  ### 仕組み
</div>

ロケーション設定を指定すると、Firecrawl は利用可能な場合は適切なプロキシを使用し、対応する言語とタイムゾーンをエミュレートします。指定がない場合、ロケーションのデフォルトは「US」です。

<div id="usage-2">
  ### 使い方
</div>

場所と言語の設定を使うには、リクエストボディに `location` オブジェクトを含め、次のプロパティを指定します:

* `country`: ISO 3166-1 alpha-2 の国コード (例: &#39;US&#39;, &#39;AU&#39;, &#39;DE&#39;, &#39;JP&#39;) 。既定値は &#39;US&#39;。
* `languages`: 優先度順に並べた、リクエストで使用する希望言語およびロケールの配列。既定値は指定した location の言語。

<CodeGroup>
  <ScrapeLocationPython />

  <ScrapeLocationNode />

  <ScrapeLocationCURL />
</CodeGroup>

対応している地域の詳細は、[Proxies ドキュメント](/ja/features/proxies)を参照してください。

<div id="caching-and-maxage">
  ## キャッシュと maxAge
</div>

リクエストを高速化するため、Firecrawl は最近のコピーがある場合、デフォルトでキャッシュから結果を返します。

* **デフォルトの鮮度ウィンドウ**: `maxAge = 172800000` ms (2日) 。キャッシュされたページがこの値より新しければ即時に返し、そうでなければスクレイプしてからキャッシュします。
* **パフォーマンス**: データが厳密な最新性を要さない場合、スクレイプを最大5倍高速化できます。
* **常に最新を取得**: `maxAge` を `0` に設定します。この設定ではキャッシュを完全にバイパスするため、すべてのリクエストがスクレイピングパイプライン全体を通過し、リクエストが完了するまでの時間が長くなり、失敗する可能性も高くなります。すべてのリクエストで厳密な最新性が必須でない場合は、0以外の `maxAge` を使用してください。
* **保存しない**: このリクエストの結果を Firecrawl にキャッシュ/保存させたくない場合は、`storeInCache` を `false` に設定します。
* **キャッシュのみの参照**: 新しいスクレイプを実行せず、キャッシュのみを参照するには `minAge` を設定します。値はミリ秒単位で、キャッシュデータが満たす必要のある最小経過時間を指定します。キャッシュデータが見つからない場合は、エラーコード `SCRAPE_NO_CACHED_DATA` を伴う `404` が返されます。経過時間に関係なく任意のキャッシュデータを受け入れるには、`minAge` を `1` に設定します。
* **変更トラッキング**: `changeTracking` を含むリクエストはキャッシュをバイパスするため、`maxAge` は無視されます。
* **クレジット**: キャッシュされた結果でも、1ページあたり1クレジットがかかります。キャッシュによって改善されるのは速度であり、クレジット使用量ではありません。

例 (常に最新コンテンツを取得) :

<CodeGroup>
  ```python Python
  from firecrawl import Firecrawl
  firecrawl = Firecrawl(api_key='fc-YOUR_API_KEY')

  doc = firecrawl.scrape(url='https://example.com', max_age=0, formats=['markdown'])
  print(doc)
  ```

  ```js Node
  import { Firecrawl } from 'firecrawl';

  const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

  const doc = await firecrawl.scrape('https://example.com', { maxAge: 0, formats: ['markdown'] });
  console.log(doc);
  ```

  ```bash cURL
  curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
    -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "url": "https://example.com",
      "maxAge": 0,
      "formats": ["markdown"]
    }'
  ```
</CodeGroup>

例 (10分のキャッシュウィンドウを使用) :

<CodeGroup>
  ```python Python
  from firecrawl import Firecrawl
  firecrawl = Firecrawl(api_key='fc-YOUR_API_KEY')

  doc = firecrawl.scrape(url='https://example.com', max_age=600000, formats=['markdown', 'html'])
  print(doc)
  ```

  ```js Node

  const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });

  const doc = await firecrawl.scrape('https://example.com', { maxAge: 600000, formats: ['markdown', 'html'] });
  console.log(doc);
  ```

  ```bash cURL
  curl -s -X POST "https://api.firecrawl.dev/v2/scrape" \
    -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "url": "https://example.com",
      "maxAge": 600000,
      "formats": ["markdown", "html"]
    }'
  ```
</CodeGroup>

<div id="freshness-and-item-status">
  ### 鮮度と項目のステータス
</div>

`maxAge` は、Firecrawl がキャッシュされたコピーを返せるかどうかを制御するものであり、ページが表す状態が最新かどうかを示すものではありません。鮮度が重要な場合は、`maxAge: 0` を指定してキャッシュを回避し、返されたコンテンツ、リダイレクト、ソース固有のステータスシグナルを確認してください。レスポンスが成功しただけでは、状態が最新であることの証明にはなりません。

チェックリストと例については、[鮮度と有効性の検証](/ja/developer-guides/usage-guides/verifying-freshness-and-liveness)を参照してください。

<div id="batch-scraping-multiple-urls">
  ## 複数のURLのバッチスクレイピング
</div>

複数のURLを同時にバッチスクレイピングできるようになりました。開始URLと任意のパラメータを引数として受け取ります。params引数では、出力フォーマットなど、バッチスクレイピングジョブの追加オプションを指定できます。

<div id="how-it-works-2">
  ### 仕組み
</div>

これは `/crawl` エンドポイントの動作に非常によく似ています。バッチスクレイプのジョブを送信し、進行状況を確認するためのジョブIDを返します。

SDK は同期型と非同期型の2つのメソッドを提供します。同期型はバッチスクレイプジョブの結果を返し、非同期型はバッチスクレイプのステータス確認に使えるジョブIDを返します。

<div id="usage-3">
  ### 使い方
</div>

<CodeGroup>
  <BatchScrapePython />

  <BatchScrapeNode />

  <BatchScrapeCURL />
</CodeGroup>

<div id="response-4">
  ### Response
</div>

SDK の同期メソッドを使用している場合は、バッチスクレイプジョブの結果が返ります。同期メソッド以外では、バッチスクレイプのステータス確認に使用できるジョブ ID が返ります。

<div id="synchronous">
  #### 同期処理
</div>

<BatchScrapeOutput />

<div id="asynchronous">
  #### 非同期
</div>

その後、ジョブIDを使って `/batch/scrape/{id}` エンドポイントを呼び出し、バッチスクレイプのステータスを確認できます。 このエンドポイントは、ジョブの実行中、または完了直後に使用することを想定しています。**バッチスクレイプのジョブは24時間で有効期限が切れるため**です。

<BatchScrapeAsyncOutput />

<div id="enhanced-mode">
  ## 強化モード
</div>

複雑なウェブサイト向けに、Firecrawl はプライバシーを保護しながら成功率を向上させる強化モードを提供しています。

[強化モード](/ja/features/enhanced-mode)について詳しくはこちら。

<div id="zero-data-retention-zdr">
  ## ゼロデータ保持 (ZDR)
</div>

Firecrawl は、厳格なデータ取り扱い要件を持つチーム向けに、ゼロデータ保持 (ZDR) をサポートしています。有効にすると、Firecrawl はページのコンテンツや抽出されたデータを、request の存続期間を超えて保持しません。

ZDR を有効にするには、request で `zeroDataRetention: true` を設定します。

```bash cURL
curl -X POST https://api.firecrawl.dev/v2/scrape \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer fc-YOUR_API_KEY" \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "zeroDataRetention": true
  }'
```

ZDR は Enterprise プランで利用でき、チームで有効化する必要があります。利用を開始するには、[firecrawl.dev/enterprise](https://www.firecrawl.dev/enterprise) をご覧ください。

ZDR では、基本のスクレイピングコストに加えて、**1ページあたり追加で1クレジット**が発生します。

<Note>
  ZDR モードではスクリーンショットは利用できません。スクリーンショットでは永続ストレージへのアップロードが必要になるため、ZDR の保証とは両立しません。`zeroDataRetention: true` と `screenshot` 形式の両方を含むリクエストはエラーを返します。
</Note>

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