v2 APIの変更: JSONスキーマ抽出はv2で完全にサポートされていますが、APIのフォーマットが変更されました。v2では、スキーマは formats: [{type: "json", schema: {...}}] のようにフォーマットオブジェクト内に直接埋め込まれます。v1の jsonOptions パラメータはv2では廃止されています。
Firecrawlで構造化データをスクレイプして抽出する
FirecrawlはAIを用いて、ウェブページから構造化データを3ステップで取得します:
-
スキーマを設定(任意):
取得したいデータを指定するために(OpenAIの形式の)JSONスキーマを定義するか、厳密なスキーマが不要な場合はウェブページのURLと
promptだけを指定します。
-
リクエストを送信:
URLとスキーマを、JSONモードを用いて/scrape エンドポイントに送ります。詳しくはこちら:
Scrape Endpoint Documentation
-
データを取得:
スキーマに一致するクリーンな構造化データが返ってきます。すぐに利用できます。
これにより、必要なフォーマットでウェブデータを素早く簡単に取得できます。
スクレイピングしたページから構造化データを抽出するために使用します。
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)
出力:
{
"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)
出力:
{
"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)
出力:
{
"success": true,
"data": {
"json": {
"company_mission": "WebサイトをLLM対応データに変換",
"supports_sso": true,
"is_open_source": true,
"is_in_yc": true
}
}
}
v2 で JSONモード を使用する場合、formats にスキーマを直接埋め込んだオブジェクトを含めます:
formats: [{ type: 'json', schema: { ... }, prompt: '...' }]
パラメータ:
schema: 取得したい構造化出力を記述する JSON Schema(スキーマベースの抽出では必須)。
prompt: 抽出をガイドするための任意のプロンプト(スキーマなしの抽出でも使用)。
重要: v1 と異なり、v2 には個別の jsonOptions パラメータはありません。スキーマは formats 配列内のフォーマットオブジェクトに直接含める必要があります。