/extract
端点让你更轻松地从任意数量的 URL 或整个域名收集结构化数据。你只需提供一个 URL 列表(可选使用通配符,例如 example.com/*
),再配上描述所需信息的提示词或 JSON 模式即可。Firecrawl 会负责爬取、解析与汇总,无论数据集大小如何。
你可以从一个或多个 URL 提取结构化数据,支持使用通配符:
- 单个页面
示例:https://firecrawl.dev/some-page
- 多个页面 / 整个域名
示例:https://firecrawl.dev/*
当你使用 /*
时,Firecrawl 会自动在该域名内爬取并解析它能发现的所有 URL,然后提取所需的数据。此功能仍处于实验阶段;如遇问题,请发送邮件至 help@firecrawl.com。
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"])
关键参数:
- urls:一个或多个 URL 的数组。支持通配符(
/*
)以进行更广泛的爬取。
- prompt(可选,若无 schema 则必填):用自然语言描述所需数据,或说明数据应如何结构化。
- schema(可选,若无 prompt 则必填):当已知 JSON 结构时使用的更严格定义。
- enableWebSearch(可选):设为
true
时,提取可跟随链接跳出指定域名。
更多详情见 API Reference。
{
"success": true,
"data": {
"company_mission": "Firecrawl 是从网页提取数据的最简便方式。开发者通过一次 API 调用即可将 URL 稳定转换为适用于 LLM 的 Markdown 或结构化数据。",
"supports_sso": false,
"is_open_source": true,
"is_in_yc": true
}
}
当你提交一次提取作业(通过 API 或入门方法),会收到一个 Job ID。你可以用该 ID:
- 获取作业状态:向 /extract/ 端点发送请求,查看作业是否仍在运行或已完成。
- 等待结果:如果你使用默认的
extract
方法(Python/Node),SDK 会等待并返回最终结果。
- 先启动再轮询:如果你使用启动方法——
start_extract
(Python)或 startExtract
(Node),SDK 会立即返回一个 Job ID。使用 get_extract_status
(Python)或 getExtractStatus
(Node)检查进度。
此端点仅对进行中或最近完成(24 小时内)的作业有效。
以下是使用 Python、Node.js 和 cURL 检查提取作业状态的代码示例:
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
- completed: 提取已成功完成。
- processing: Firecrawl 仍在处理你的请求。
- failed: 发生错误,数据未完整提取。
- cancelled: 该任务已被用户取消。
{
"success": true,
"data": [],
"status": "processing",
"expiresAt": "2025-01-08T20:58:12.000Z"
}
{
"success": true,
"data": {
"company_mission": "Firecrawl 是从网页提取数据的最简便方式。开发者只需一次 API 调用,便可将 URL 可靠地转换为适用于 LLM 的 Markdown 或结构化数据。",
"supports_sso": false,
"is_open_source": true,
"is_in_yc": true
},
"status": "已完成",
"expiresAt": "2025-01-08T20:58:12.000Z"
}
如果你不想定义严格的结构,只需提供一个 prompt
。底层模型会自动为你选择结构,这在进行探索性或更灵活的请求时很有用。
from firecrawl import Firecrawl
# 使用你的 API 密钥初始化 FirecrawlApp
firecrawl = Firecrawl(api_key='your_api_key')
data = firecrawl.extract([
'https://docs.firecrawl.dev/',
'https://firecrawl.dev/'
], prompt="从页面中提取 Firecrawl 的使命(mission)。")
print(data)
{
"success": true,
"data": {
"company_mission": "将网站转化为可直接用于 LLM 的数据。用从任意网站抓取的干净数据驱动你的 AI 应用。"
}
}
在请求中将 enableWebSearch = true
启用后,抓取范围会扩展到所提供的 URL 集合之外,从而获取来自相关链接页面的支撑性或关联信息。
下面是一个示例:它提取有关行车记录仪的信息,并使用相关页面的数据来充实结果:
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)
{
"success": true,
"data": {
"dash_cams": [
{
"name": "Nextbase 622GW",
"price": "$399.99",
"features": [
"4K 视频录制",
"图像防抖",
"内置 Alexa",
"集成 What3Words"
],
/* 以下信息结合了其他网站的内容,例如
https://www.techradar.com/best/best-dash-cam,系通过
enableWebSearch 参数获取 */
"pros": [
"卓越的视频画质",
"出色的夜视表现",
"内置 GPS"
],
"cons": ["价格偏高", "应用可能较不稳定"]
}
],
}
该响应包含从相关页面收集的补充上下文,从而提供更全面、更准确的信息。
/extract
端点现已支持在不提供特定 URL 的情况下,基于提示提取结构化数据。适用于研究场景或在确切 URL 不确定时使用。目前处于 Alpha 阶段。
from pydantic import BaseModel
class ExtractSchema(BaseModel):
company_mission: str
# 定义用于提取的提示词
prompt = '从 Firecrawl 的网站中提取公司使命。'
# 执行提取
scrape_result = firecrawl.extract(prompt=prompt, schema=ExtractSchema)
print(scrape_result)
-
大规模站点覆盖
目前尚不支持在单个请求中完整覆盖超大型网站(例如“Amazon 上的所有产品”)。
-
复杂逻辑查询
类似“查找 2025 年的所有帖子”的请求可能无法稳定返回全部预期数据。更高级的查询能力正在开发中。
-
偶发不一致
不同运行的结果可能有所差异,尤其是在非常大型或动态的网站上。通常能捕获核心信息,但可能存在一定差异。
-
Beta 状态
由于 /extract
仍处于 Beta,功能和性能将持续演进。欢迎提交问题与反馈,帮助我们改进。
FIRE-1 是一款 AI 代理,可增强 Firecrawl 的抓取能力。它能够控制浏览器 actions,并在复杂的网站结构中导航,从而实现超越传统抓取方式的全面数据提取。
对于需要在多个页面之间导航或与页面元素交互的复杂抽取任务,你可以通过 /extract
端点使用 FIRE-1 代理。
示例(cURL):
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 已上线,目前处于预览可用状态。
你可以在 /extract 定价页面 查看价格,并通过 仪表盘的 Extract 页面 监控用量。
有反馈或需要帮助?请发送邮件至 help@firecrawl.com。