跳转到主要内容
Firecrawl 提供三种从网页提取结构化数据的方式。它们分别适用于不同的使用场景,在自动化程度和可控性上各不相同。

快速对比

功能/agent/extract/scrape (JSON 模式)
状态已启用请改用 /agent已启用
是否需要 URL否(可选)是(支持通配符)是(单一 URL)
范围全网范围发现多页面/多域名单页面
URL 发现自动进行全网搜索从给定 URL 进行爬取
处理方式异步异步同步
是否需要 Schema否(prompt 或 schema)否(prompt 或 schema)否(prompt 或 schema)
计费动态计费(每天 5 次免费运行)基于 token(1 点数 = 15 个 token)1 点数/页
最适合调研、发现、复杂信息收集多页面抽取(在已知 URL 的情况下)已知单页面抽取

1. /agent 端点

/agent 端点是 Firecrawl 最先进的功能,是 /extract 的后继者。它使用 AI 代理自主在全网进行搜索、导航和数据采集。

关键特性

  • URL 可选:只需通过 prompt 描述你的需求;URL 完全可选
  • 自主导航:代理会自动搜索并深入浏览站点来找到你的数据
  • 深度网页搜索:自主在多个域名和页面间发现所需信息
  • 并行处理:同时处理多个数据源以提升返回速度
  • 可用模型spark-1-mini(默认,成本低 60%)和 spark-1-pro(精度更高)

示例

from firecrawl import Firecrawl
from pydantic import BaseModel, Field
from typing import List, Optional

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

class Founder(BaseModel):
    name: str = Field(description="Full name of the founder")
    role: Optional[str] = Field(None, description="Role or position")
    background: Optional[str] = Field(None, description="专业背景")

class FoundersSchema(BaseModel):
    founders: List[Founder] = Field(description="List of founders")

result = app.agent(
    prompt="Find the founders of Firecrawl",
    schema=FoundersSchema,
    model="spark-1-mini"
)

print(result.data)

最佳用例:自主研究与探索

场景:你需要查找关于获得 A 轮融资的 AI 初创公司的信息,包括其创始人及融资金额。 为什么用 /agent:你不知道从哪些网站可以获取这些信息。agent 会自主在网上搜索,访问相关来源(Crunchbase、新闻网站、公司页面),并为你整理结构化数据。 更多详情请参见 Agent 文档

2. /extract 端点

请改用 /agent:我们建议迁移到 /agent——它更快、更可靠、无需提供 URL,并且能覆盖所有 /extract 的用例并支持更多场景。
/extract 端点使用基于 LLM 的提取能力,从指定的 URL 或整个域名中收集结构化数据。

关键特性

  • 通常需要提供 URL:至少提供一个 URL(支持通配符,如 example.com/*
  • 域级爬取:可以爬取并解析在某个域名下发现的所有 URL
  • 网页搜索增强:可选参数 enableWebSearch,用于跟踪指定域名之外的链接
  • 可选 Schema:同时支持严格的 JSON schema 或自然语言提示词
  • 异步处理:返回用于状态查询的任务 ID

URL 限制

/extract 的核心问题在于,你通常需要提前知道 URL:
  1. 发现缺口:对于类似“找出 YC W24 公司”这样的任务,你并不知道哪些 URL 包含所需数据。你需要在调用 /extract 之前先单独执行一次搜索。
  2. 笨拙的网页搜索:虽然有 enableWebSearch,但它只能从你提供的 URL 开始——对于以发现为主的任务来说,这个流程非常别扭。
  3. /agent 被创建的原因/extract 很擅长从已知位置抽取数据,但在“先发现数据在哪里”这方面就没那么有效。

示例

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"])

最佳使用场景:有针对性的多页面提取

场景:你有竞争对手的文档 URL,想从 docs.competitor.com/* 中提取出他们所有的 API 端点。 为什么这里使用 /extract 很合适:你已经知道确切的域名。但即便如此,如今在提供 URL 的前提下,/agent 通常会得到更好的效果。 更多详情,请参阅 Extract 文档

3. 使用 JSON 模式的 /scrape 端点

使用 JSON 模式的 /scrape 端点是可控性最高的方案——它使用 LLM 将页面内容解析为你指定的 schema,从单个已知 URL 中提取结构化数据。

关键特性

  • 仅支持单个 URL:用于一次仅从一个特定页面提取数据
  • 必须提供精确 URL:必须明确包含数据的精确 URL
  • Schema 可选:可以使用 JSON schema,或仅提供 prompt(由 LLM 决定结构)
  • 同步:立即返回数据(无需轮询任务状态)
  • 额外 formats:可以在一次请求中同时获取 JSON 抽取结果以及 markdown、HTML、截图等

示例

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)

最佳适用场景:单页精确抽取

场景:你在构建一个价格监控工具,需要从已知 URL 的特定产品页面中抽取价格、库存状态和产品详情。 为什么使用 /scrape 搭配 JSON 模式:你确切知道哪个页面包含所需数据,需要对单页进行精确抽取,并且希望同步返回结果,而不想处理任务管理的开销。 更多详情请参阅 JSON 模式文档

决策指南

您是否知道包含数据的确切 URL?
  • → 使用 /agent(自主网页发现)
    • 单个页面? → 使用 /scrape 配合 JSON 模式
    • 多个页面? → 使用 /agent 配合 URL (或使用 /scrape 配合批量处理)

按场景推荐

场景推荐使用的 Endpoint
「查找所有 AI 初创公司及其融资情况」/agent
「从这个特定的产品页面中提取数据」/scrape(JSON 模式)
「获取 competitor.com 上的所有博文」/agent 配合 URL
「监控多个已知 URL 的价格变化」/scrape 配合批量处理
「调研某一特定行业的公司」/agent
「从 50 个已知公司页面中提取联系信息」/scrape 配合批量处理

价格

Endpoint费用备注
/scrape (JSON 模式)1 credit/页固定且可预测
/extract按 Token 计费(1 credit = 15 tokens)随内容变化
/agent动态计费每天可免费运行 5 次;视复杂度而定

示例:“查找 Firecrawl 的创始人”

Endpoint工作方式消耗积分
/scrape你先手动找到 URL,然后抓取 1 个页面约 1 个积分
/extract你提供一个或多个 URL,即可抽取结构化数据可变(按 token 计费)
/agent只需发送提示词(prompt)——agent 会自动发现并抽取约 15 个积分
取舍/scrape 成本最低,但需要你事先知道 URL。/agent 成本更高,但会自动完成网址发现。 有关详细定价,请参见 Firecrawl Pricing

迁移:/extract/agent

如果你当前正在使用 /extract 接口,迁移过程非常简单: 迁移前(使用 /extract):
result = app.extract(
    urls=["https://example.com/*"],
    prompt="提取产品信息",
    schema=schema
)
之后(使用 Agent):
result = app.agent(
    urls=["https://example.com"],  # 可选 - 可完全省略
    prompt="Extract product information from example.com",
    schema=schema,
    model="spark-1-mini"  # 或使用 "spark-1-pro" 获得更高准确度
)
关键优势在于:使用 /agent 时,你甚至可以省略 URL,只需描述你的需求。

关键要点

  1. 已经知道精确 URL? 使用 /scrape 搭配 JSON 模式——这是最便宜(1 积分/页面)、最快(同步)、且最可预测的选项。
  2. 需要自动化调研? 使用 /agent——它会自动完成信息发现,每天有 5 次免费运行,之后根据复杂度动态计费。
  3. /extract 迁移 到用于新项目的 /agent——/agent 是功能更强的继任方案。
  4. 成本与便利性的权衡:当你已经知道 URL 时,/scrape 性价比最高;/agent 成本更高,但免去了手动发现 URL 的工作。

延伸阅读