> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Extract

> LLM を用いてページから構造化データを抽出する

<Note>
  **Agent の紹介: Extract の次世代版**
  `/extract` の後継となる [`/agent`](/ja/features/agent) をリリースしました。より高速かつ信頼性が高く、URL を指定する必要もありません。必要な内容を指示するだけで、AI エージェントがデータの検索と抽出を自動で行います。[今すぐ Agent を試す →](/ja/features/agent)
</Note>

`/extract` エンドポイントは、複数の URL やドメイン全体から構造化データを収集する作業を簡略化します。ワイルドカード (例: `example.com/*`) を含めることもできる URL のリストと、取得したい情報を記述するプロンプトまたはスキーマを指定してください。Firecrawl がクロール、解析、集約の処理を担い、大規模・小規模いずれのデータセットにも対応します。

<Info>課金体系を簡素化し、Extract でも他のエンドポイントと同様にクレジット制を採用しました。各クレジットは 15 トークンに相当します。</Info>

<div id="using-extract">
  ## `/extract` の使用方法
</div>

ワイルドカードを含め、1つまたは複数のURLから構造化データを抽出できます:

* **単一ページ**\
  例: `https://firecrawl.dev/some-page`
* **複数ページ / ドメイン全体**\
  例: `https://firecrawl.dev/*`

`/*` を使用すると、Firecrawl はそのドメイン内で検出できるすべてのURLを自動的にクロールしてパースし、その後、指定されたデータを抽出します。この機能は実験的なものです。問題がある場合は [help@firecrawl.com](mailto:help@firecrawl.com) までメールでご連絡ください。

<div id="example-usage">
  ### 使用例
</div>

<CodeGroup>
  ```python Python theme={null}
  from firecrawl import Firecrawl

  firecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")

  schema = {
      "type": "object",
      "properties": {"description": {"type": "string"}},
      "required": ["description"],
  }

  res = firecrawl.extract(
      urls=["https://docs.firecrawl.dev"],
      prompt="ページの説明を抽出",
      schema=schema,
  )

  print(res.data["description"])
  ```

  ```js Node theme={null}
  import { Firecrawl } from 'firecrawl';

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

  const schema = {
    type: 'object',
    properties: {
      title: { type: 'string' }
    },
    required: ['title']
  };

  const res = await firecrawl.extract({
    urls: ['https://docs.firecrawl.dev'],
    prompt: 'Extract the page title',
    schema,
    scrapeOptions: { formats: [{ type: 'json', prompt: 'Extract', schema }] }
  });

  console.log(res.status || res.success, res.data);
  ```

  ```bash cURL theme={null}
  curl -s -X POST "https://api.firecrawl.dev/v2/extract" \
    -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "urls": ["https://docs.firecrawl.dev"],
      "prompt": "ページタイトルを抽出してください",
      "schema": {
        "type": "object",
        "properties": {"title": {"type": "string"}},
        "required": ["title"]
      },
      "scrapeOptions": {
        "formats": [{"type": "json", "prompt": "抽出してください", "schema": {"type": "object"}}]
      }
    }'
  ```
</CodeGroup>

**主要パラメータ:**

* **urls**: 1つ以上のURLを含む配列。広範なクロールのためにワイルドカード (`/*`) に対応。
* **prompt** (スキーマがない場合のみ任意) : 取得したいデータ、またはそのデータの構造化方法を記述する自然言語のプロンプト。
* **schema** (プロンプトがない場合のみ任意) : すでにJSONのレイアウトが分かっている場合に用いる、より厳密な構造定義。
* **enableWebSearch** (任意) : `true` の場合、指定ドメイン外のリンクもたどって抽出を実行。

詳細は [API Reference](https://docs.firecrawl.dev/api-reference/endpoint/extract) を参照してください。

<div id="response-sdks">
  ### レスポンス (SDK)
</div>

```json JSON theme={null}
{
  "success": true,
  "data": {
    "company_mission": "Firecrawl は、ウェブからデータを抽出する最も簡単な方法です。開発者は、単一の API コールで URL を LLM 向けのMarkdownや構造化データに確実に変換するために Firecrawl を利用しています。",
    "supports_sso": false,
    "is_open_source": true,
    "is_in_yc": true
  }
}
```

<div id="job-status-and-completion">
  ## ジョブのステータスと完了
</div>

抽出ジョブを送信すると (API またはスターター メソッド経由) 、ジョブ ID が返されます。この ID で次のことができます:

* ジョブ ステータスの取得: /extract/{ID} エンドポイントにリクエストを送り、ジョブが実行中か完了済みかを確認します。
* 結果を待つ: デフォルトの `extract` メソッド (Python/Node) を使う場合、SDK が完了まで待機して最終結果を返します。
* 開始してポーリング: スタート メソッド (`start_extract` (Python) または `startExtract` (Node) ) を使う場合、SDK はすぐにジョブ ID を返します。進行状況の確認には `get_extract_status` (Python) または `getExtractStatus` (Node) を使用します。

<Note>
  ジョブ結果は、完了から 24 時間のあいだ API 経由で取得できます。この期間を過ぎても、[activity logs](https://www.firecrawl.dev/app/logs) から抽出履歴と結果を確認できます。
</Note>

以下は、Python、Node.js、cURL を使用して抽出ジョブのステータスを確認するコード例です:

<CodeGroup>
  ```python Python theme={null}
  from firecrawl import Firecrawl

  firecrawl = Firecrawl(
      api_key="fc-YOUR_API_KEY"
  )

  # まず抽出ジョブを開始する
  extract_job = firecrawl.start_extract([
      'https://docs.firecrawl.dev/*', 
      'https://firecrawl.dev/'
  ], prompt="これらのページから企業のミッションと機能を抽出してください。")

  # 抽出ジョブのステータスを取得
  job_status = firecrawl.get_extract_status(extract_job.id)

  print(job_status)
  # 出力例:
  # id=None
  # status='completed'
  # expires_at=datetime.datetime(...)
  # success=True
  # data=[{ ... }]
  # error=None
  # warning=None
  # sources=None
  ```

  ```js Node theme={null}
  import { Firecrawl } from 'firecrawl';

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

  const started = await firecrawl.startExtract({
    urls: ['https://docs.firecrawl.dev'],
    prompt: 'Extract title',
    schema: { type: 'object', properties: { title: { type: 'string' } }, required: ['title'] },
  });

  if (started.id) {
    const done = await firecrawl.getExtractStatus(started.id);
    console.log(done.status, done.data);
  }
  ```

  ```bash cURL theme={null}
  curl -s -X GET "https://api.firecrawl.dev/v2/extract/<jobId>" \
    -H "Authorization: Bearer $FIRECRAWL_API_KEY"
  ```
</CodeGroup>

<div id="possible-states">
  ### 取りうる状態
</div>

* **completed**: 抽出が正常に完了しました。
* **processing**: Firecrawl がリクエストを処理中です。
* **failed**: エラーが発生し、データを完全に抽出できませんでした。
* **cancelled**: ユーザーによってジョブがキャンセルされました。

<div id="pending-example">
  #### 処理待ちの例
</div>

```json JSON theme={null}
{
  "success": true,
  "data": [],
  "status": "processing",
  "expiresAt": "2025-01-08T20:58:12.000Z"
}
```

<div id="completed-example">
  #### 完成例
</div>

```json JSON theme={null}
{
  "success": true,
  "data": {
      "company_mission": "Firecrawl は、ウェブからデータを抽出する最も簡単な方法です。開発者は、単一の API コールで URL を LLM 向けのMarkdownまたは構造化データに確実に変換するために Firecrawl を利用します。",
      "supports_sso": false,
      "is_open_source": true,
      "is_in_yc": true
    },
  "status": "completed",
  "expiresAt": "2025-01-08T20:58:12.000Z"
}
```

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

厳密な構造を定義したくない場合は、`prompt` を渡すだけで構いません。基盤のモデルが適切な構造を自動で選択するため、探索的または柔軟なリクエストに適しています。

<CodeGroup>
  ```python Python theme={null}
  from firecrawl import Firecrawl

  # APIキーを使って Firecrawl を初期化する
  firecrawl = Firecrawl(api_key='your_api_key')

  data = firecrawl.extract([
    'https://docs.firecrawl.dev/',
    'https://firecrawl.dev/'
  ], prompt="Extract Firecrawl's mission from the page.")
  print(data)
  ```

  ```js Node theme={null}
  import { Firecrawl } from "firecrawl";

  const firecrawl = new Firecrawl({
  apiKey: "fc-YOUR_API_KEY"
  });

  const scrapeResult = await firecrawl.extract([
  'https://docs.firecrawl.dev/',
  'https://firecrawl.dev/'
  ], {
  prompt: "Extract Firecrawl's mission from the page."
  });

  console.log(scrapeResult);
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.firecrawl.dev/v2/extract \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer YOUR_API_KEY' \
      -d '{
        "urls": [
          "https://docs.firecrawl.dev/",
          "https://firecrawl.dev/"
        ],
        "prompt": "ページからFirecrawlのミッションを抽出してください。"
      }'
  ```
</CodeGroup>

```json JSON theme={null}
{
  "success": true,
  "data": {
    "company_mission": "WebサイトをLLM対応のデータに変換。あらゆるサイトをクロールして得たクリーンなデータでAIアプリを強化。"
  }
}
```

<div id="improving-results-with-web-search">
  ## Web検索で結果を向上させる
</div>

リクエストで `enableWebSearch = true` を設定すると、指定したURLの範囲を超えてクロールが拡張されます。これにより、リンク先のページから補助的・関連情報を取得できます。

以下は、ドライブレコーダー (ダッシュカム) に関する情報を抽出し、関連ページのデータで結果を補強する例です:

<CodeGroup>
  ```python Python theme={null}
  from firecrawl import Firecrawl

  # APIキーで Firecrawl を初期化します

  firecrawl = Firecrawl(api_key='your_api_key')

  data = firecrawl.extract([
  'https://nextbase.com/dash-cams/622gw-dash-cam'
  ], prompt="価格、機能、長所・短所、レビューを含む、優れたドライブレコーダーの詳細を抽出してください。", enable_web_search=True)
  print(data)
  ```

  ```js Node theme={null}
  import { Firecrawl } from "firecrawl";

  const firecrawl = new Firecrawl({
  apiKey: "fc-YOUR_API_KEY"
  });

  const scrapeResult = await firecrawl.extract([
  'https://nextbase.com/dash-cams/622gw-dash-cam'
  ], {
  prompt: "価格、機能、長所・短所、レビューを含む、優れたドライブレコーダーに関する詳細を抽出してください。",
  enableWebSearch: true // より適切な文脈を得るためにウェブ検索を有効化
  });

  console.log(scrapeResult);
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.firecrawl.dev/v2/extract \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer YOUR_API_KEY' \
      -d '{
        "urls": ["https://nextbase.com/dash-cams/622gw-dash-cam"],
        "prompt": "価格、機能、長所・短所、レビューを含む、最高のドライブレコーダーに関する詳細を抽出してください。",
        "enableWebSearch": true
      }'
  ```
</CodeGroup>

<div id="example-response-with-web-search">
  ### ウェブ検索を使った応答例
</div>

```json JSON theme={null}
{
  "success": true,
  "data": {
    "dash_cams": [
      {
        "name": "Nextbase 622GW",
        "price": "$399.99",
        "features": [
          "4K動画録画",
          "手ブレ補正",
          "Alexa内蔵",
          "What3Words対応"
        ],
        /* 以下の情報は、enableWebSearch パラメータで見つかった
        https://www.techradar.com/best/best-dash-cam などの他サイトをもとに補足されています
        */
        "pros": [
          "優れた映像品質",
          "夜間撮影に強い",
          "GPS内蔵"
        ],
        "cons": ["価格が高い", "アプリが不安定な場合がある"]
      }
    ],
  }

```

この応答には、関連ページから収集した追加のコンテキストが含まれており、より網羅的で正確な情報を提供します。

<div id="extracting-without-urls">
  ## URL なしでの抽出
</div>

`/extract` エンドポイントは、特定の URL を指定せずに、プロンプトを使って構造化データを抽出できるようになりました。リサーチや正確な URL が分からない場合に便利です。現在はアルファ版です。

<CodeGroup>
  ```python Python theme={null}
  from pydantic import BaseModel

  class ExtractSchema(BaseModel):
      company_mission: str


  # 抽出用のプロンプトを定義
  prompt = 'Firecrawlのウェブサイトから企業ミッションを抽出してください。'

  # 抽出を実行
  scrape_result = firecrawl.extract(prompt=prompt, schema=ExtractSchema)

  print(scrape_result)
  ```

  ```js Node theme={null}
  import { z } from "zod";

  // 抽出した内容を格納するスキーマを定義
  const schema = z.object({
    company_mission: z.string(),
  });

  const scrapeResult = await firecrawl.extract([], {
    prompt: "Firecrawl のウェブサイトから企業ミッションを抽出してください。",
    schema: schema
  });

  console.log(scrapeResult);
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.firecrawl.dev/v2/extract \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer YOUR_API_KEY' \
      -d '{
        "urls": [],
        "prompt": "Firecrawl のウェブサイトから企業のミッションを抽出してください。",
        "schema": {
          "type": "object",
          "properties": {
            "company_mission": {
              "type": "string"
            }
          },
          "required": ["company_mission"]
        }
      }'
  ```
</CodeGroup>

<div id="known-limitations-beta">
  ## 既知の制限事項 (ベータ)
</div>

1. **大規模サイトのカバレッジ**\
   巨大なサイト (例：「Amazonの全商品」) を単一のリクエストで完全にカバーすることは、まだサポートしていません。

2. **複雑な論理クエリ**\
   「2025年の投稿をすべて見つけて」のようなリクエストは、期待するデータを確実にすべて返せない場合があります。より高度なクエリ機能を開発中です。

3. **稀に発生する不一致**\
   特に非常に大規模または動的なサイトでは、実行ごとに結果が異なることがあります。通常は主要な情報を捉えますが、多少のばらつきが生じる可能性があります。

4. **ベータ版の状態**\
   `/extract` はまだベータ版のため、機能やパフォーマンスは今後も進化します。改善のためのバグ報告やフィードバックをお待ちしています。

<div id="using-fire-1">
  ## FIRE-1 の使用
</div>

FIRE-1 は Firecrawl のスクレイピング機能を強化する AI エージェントです。ブラウザのアクションを制御し、複雑なウェブサイト構造を横断して、従来のスクレイピングを超える包括的なデータ抽出を実現します。

複数ページにまたがる遷移や要素とのインタラクションが必要な複雑な抽出タスクには、`/extract` エンドポイントで FIRE-1 エージェントを活用できます。

**例 (cURL) ：**

```bash theme={null}
curl -X POST https://api.firecrawl.dev/v2/extract \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "urls": ["https://example-forum.com/topic/123"],
      "prompt": "このフォーラムスレッドからすべてのユーザーコメントを抽出してください。",
      "schema": {
        "type": "object",
        "properties": {
          "comments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "author": {"type": "string"},
                "comment_text": {"type": "string"}
              },
              "required": ["author", "comment_text"]
            }
          }
        },
        "required": ["comments"]
      },
      "agent": {
        "model": "FIRE-1"
      }
    }'
```

> FIRE-1 はすでに稼働しており、プレビュー版として利用可能です。

<div id="billing-and-usage-tracking">
  ## 請求と利用状況の追跡
</div>

請求を簡素化し、Extract は他のエンドポイントと同様にクレジット制になりました。1 クレジットは 15 トークンに相当します。

[ダッシュボード](https://www.firecrawl.dev/app/extract)で Extract の利用状況を確認できます。

ご意見やサポートが必要な方は、[help@firecrawl.com](mailto:help@firecrawl.com) までメールでご連絡ください。

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