メインコンテンツへスキップ
v2 APIの変更: JSONスキーマ抽出はv2で完全にサポートされていますが、APIのフォーマットが変更されました。v2では、スキーマは formats: [{type: "json", schema: {...}}] のようにフォーマットオブジェクト内に直接埋め込まれます。v1の jsonOptions パラメータはv2では廃止されています。

Firecrawlで構造化データをスクレイプして抽出する

FirecrawlはAIを用いて、ウェブページから構造化データを3ステップで取得します:
  1. スキーマを設定(任意): 取得したいデータを指定するために(OpenAIの形式の)JSONスキーマを定義するか、厳密なスキーマが不要な場合はウェブページのURLとpromptだけを指定します。
  2. リクエストを送信: URLとスキーマを、JSONモードを用いて/scrape エンドポイントに送ります。詳しくはこちら: Scrape Endpoint Documentation
  3. データを取得: スキーマに一致するクリーンな構造化データが返ってきます。すぐに利用できます。
これにより、必要なフォーマットでウェブデータを素早く簡単に取得できます。

構造化データの抽出

/scrape による JSONモード

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

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

class CompanyInfo(BaseModel):
    company_mission: str
    supports_sso: bool
    is_open_source: bool
    is_in_yc: bool

result = app.scrape(
    'https://firecrawl.dev',
    formats=[{
      "type": "json",
      "schema": CompanyInfo.model_json_schema()
    }],
    only_main_content=False,
    timeout=120000
)

print(result)
出力:
JSON
{
    "success": true,
    "data": {
      "json": {
        "company_mission": "AI対応のウェブスクレイピングとデータ抽出",
        "supports_sso": true,
        "is_open_source": true,
        "is_in_yc": true
      },
      "metadata": {
        "title": "Firecrawl",
        "description": "AI対応のウェブスクレイピングとデータ抽出",
        "robots": "follow, index",
        "ogTitle": "Firecrawl",
        "ogDescription": "AI対応のウェブスクレイピングとデータ抽出",
        "ogUrl": "https://firecrawl.dev/",
        "ogImage": "https://firecrawl.dev/og.png",
        "ogLocaleAlternate": [],
        "ogSiteName": "Firecrawl",
        "sourceURL": "https://firecrawl.dev/"
      },
    }
}

スキーマ不要の構造化データ

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

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

result = app.scrape(
    'https://firecrawl.dev',
    formats=[{
      "type": "json",
      "prompt": "ページから企業のミッションを抽出してください。"
    }],
    only_main_content=False,
    timeout=120000
)

print(result)
出力:
JSON
{
    "success": true,
    "data": {
      "json": {
        "company_mission": "AI搭載のウェブスクレイピングとデータ抽出",
      },
      "metadata": {
        "title": "Firecrawl",
        "description": "AI搭載のウェブスクレイピングとデータ抽出",
        "robots": "follow, index",
        "ogTitle": "Firecrawl",
        "ogDescription": "AI搭載のウェブスクレイピングとデータ抽出",
        "ogUrl": "https://firecrawl.dev/",
        "ogImage": "https://firecrawl.dev/og.png",
        "ogLocaleAlternate": [],
        "ogSiteName": "Firecrawl",
        "sourceURL": "https://firecrawl.dev/"
      },
    }
}

実例:企業情報の抽出

以下は、ウェブサイトから構造化された企業情報を抽出する包括的な例です:
from firecrawl import Firecrawl
from pydantic import BaseModel

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

class CompanyInfo(BaseModel):
    company_mission: str
    supports_sso: bool
    is_open_source: bool
    is_in_yc: bool

result = app.scrape(
    'https://firecrawl.dev/',
    formats=[{
        "type": "json",
        "schema": CompanyInfo.model_json_schema()
    }]
)

print(result)
出力:
Output
{
  "success": true,
  "data": {
    "json": {
      "company_mission": "WebサイトをLLM対応データに変換",
      "supports_sso": true,
      "is_open_source": true,
      "is_in_yc": true
    }
  }
}

JSON フォーマットのオプション

v2 で JSONモード を使用する場合、formats にスキーマを直接埋め込んだオブジェクトを含めます: formats: [{ type: 'json', schema: { ... }, prompt: '...' }] パラメータ:
  • schema: 取得したい構造化出力を記述する JSON Schema(スキーマベースの抽出では必須)。
  • prompt: 抽出をガイドするための任意のプロンプト(スキーマなしの抽出でも使用)。
重要: v1 と異なり、v2 には個別の jsonOptions パラメータはありません。スキーマは formats 配列内のフォーマットオブジェクトに直接含める必要があります。