v2 API 变更: v2 已完全支持 JSON schema 抽取,但 API 格式有所调整。在 v2 中,schema 直接嵌入到 formats 对象中,写法为 formats: [{type: "json", schema: {...}}]。v1 的 jsonOptions 参数在 v2 中已被移除。
Firecrawl 借助 AI 通过 3 个步骤从网页获取结构化数据:
-
设置 Schema(可选):
定义一个 JSON Schema(采用 OpenAI 的格式)来明确所需数据;如果不需要严格的 Schema,也可仅提供一个
prompt,并附上网页 URL。
-
发起请求:
使用 JSON 模式将你的 URL 和 Schema 发送到我们的 /scrape 端点。查看方法:
Scrape Endpoint Documentation
-
获取数据:
返回与你的 Schema 匹配的干净、结构化数据,可直接使用。
这使你能快速、轻松地按所需 formats 获取网页数据。
用于从抓取的页面中提取结构化数据。
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,在没有 schema 的情况下进行提取。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": "将网站转换为 LLM 可用数据",
"supports_sso": true,
"is_open_source": true,
"is_in_yc": true
}
}
}
在 v2 中使用 JSON 模式时,需要在 formats 中直接包含一个内嵌 schema 的对象:
formats: [{ type: 'json', schema: { ... }, prompt: '...' }]
参数:
schema: 描述所需结构化输出的 JSON Schema(基于 schema 的提取为必填)。
prompt: 可选提示,用于引导提取(也用于无 schema 的提取)。
重要说明: 与 v1 不同,v2 中没有单独的 jsonOptions 参数。schema 必须直接包含在 formats 数组中的 format 对象内。