- 它可处理各种复杂情况:代理、缓存、限流、被 JS 阻止的内容
- 处理动态内容:动态网站、JS 渲染的网站、PDF 和图片
- 输出干净的 markdown、结构化数据、截图或 html。
在 Playground 中体验
在交互式 Playground 中测试抓取——无需写代码。
如果请求失败,请参见 Errors 了解完整的错误代码目录、原因、补救措施和重试指南。
使用 Firecrawl 抓取 URL
/scrape 端点
安装
使用方式
每次抓取会消耗 1 个额度。某些选项会产生额外消耗:JSON 模式每页额外消耗 4 个额度,question 和 highlights formats 每种格式每页额外消耗 4 个额度,高级代理 (enhanced proxy) 每页额外消耗 4 个额度,PII 脱敏每页额外消耗 4 个额度,PDF 解析每个 PDF 页面额外消耗 1 个额度,音频或视频提取每页额外消耗 4 个额度。
响应
各 SDK 会直接返回数据对象。cURL 将按下方所示原样返回载荷。抓取 formats
- Markdown (
markdown) - 摘要 (
summary) - HTML (
html) - 页面 HTML 的清洗版本 - 原始 HTML (
rawHtml) - 按页面返回的不经修改的 HTML - 截图 (
screenshot,可选项包括fullPage、quality、viewport) — 截图 URL 会在 24 小时后过期 - 链接 (
links) - JSON (
json) - 结构化输出 - 图片 (
images) - 提取页面中的所有图片 URL - 品牌 (
branding) - 提取品牌识别与设计系统 - Product (
product) - 从产品页面提取结构化产品 (标题、价格、可用性、变体) - 音频 (
audio) - 从支持的视频 URL (例如 YouTube) 中提取 MP3 音频 (返回签名 GCS URL,1 小时后过期) - 视频 (
video) - 从支持的视频 URL (例如 YouTube) 中提取最佳质量的视频 (返回签名 GCS URL,1 小时后过期) - Query (
query,带有prompt和可选的mode) - 针对页面提出一个自然语言问题;答案会在answer字段中返回
提取结构化数据
/scrape (使用 JSON) 端点
JSON
无需 schema 的提取
prompt,即可在不提供 schema 的情况下进行提取。LLM 会自行决定数据结构。
JSON
JSON 格式选项
json 格式时,在 formats 中传入一个对象,包含以下参数:
schema:用于结构化输出的 JSON Schema。prompt:可选提示;在提供 schema 时或仅需轻量指引时用于辅助抽取。
提取品牌识别度
/scrape (品牌信息) 端点
响应
品牌配置会返回一个完整的BrandingProfile 对象,其结构如下:
Output
品牌档案结构
branding 对象包含以下属性:
colorScheme: 检测到的配色方案 ("light"或"dark")logo: 主徽标的 URLcolors: 包含品牌颜色的对象:primary、secondary、accent: 主要品牌色background、textPrimary、textSecondary: 界面颜色link、success、warning、error: 语义颜色
fonts: 页面中使用的字体系列数组typography: 详细的排版信息:fontFamilies: 正文、标题与代码字体系列fontSizes: 标题与正文的尺寸定义fontWeights: 字重定义 (细体、常规、中等、粗体)lineHeights: 不同文本类型的行高值
spacing: 间距与布局信息:baseUnit: 基础间距单位 (像素)borderRadius: 默认圆角padding、margins: 间距值
components: UI 组件样式:buttonPrimary、buttonSecondary: 按钮样式input: 输入框样式
icons: 图标样式信息images: 品牌图像 (logo、favicon、og:image)animations: 动画与过渡设置layout: 布局配置 (栅格、页眉/页脚高度)personality: 品牌个性特征 (语气、调性、目标受众)
与其他 formats 结合使用
提取产品数据
product 格式会以确定性方式提取结构化的产品数据——它产出的结构化输出与 json 格式相同,但无需调用 LLM,也不用自行定义 schema,专为产品页面而设计。如果你一直在用 json schema 提取产品字段,建议改用 formats: ["product"]——它更快、更便宜,但仅适用于产品。
它会返回一个 product 对象,其中包含 title、brand、category、description 和 variants;每个 variant 都带有 price、original price、availability 和 图片——适合用于价格监控、商品目录采集或比价工具。
/scrape (带有 product 参数) 端点
响应
product 格式会返回一个 product 对象,结构如下:
Output
产品对象结构
product 对象包含以下属性:
title:产品名称brand:产品品牌 (可选)category:产品类别 (可选)url:产品的规范 URLdescription:产品描述 (可选)variants:产品变体数组。价格、可用性和图片信息都在各个变体上——即使是单 SKU 产品,也仍会准确返回一个包含这些信息的变体。每个变体包含:id、sku、title:变体标识符和标签 (均为可选)values:选项名称到选项值的映射,例如{ "color": "Charcoal" }(可选)price:当前价格对象 (可选) :amount:数值型价格currency:货币代码,仅当页面提供该信息时才会返回 (可选)formatted:页面上显示的价格 (可选)
sale:仅在变体有折扣时才会出现 (可选) 。包含:originalPrice:原价 (折扣前价格) ,结构与price相同
availability:库存信息,在变体上始终存在:inStock:该变体是否有库存text:页面上的原始库存文本 (可选)
images:变体图片数组,每项都包含url和可选的alt文本 (可选)
产品提取的工作方式
product 格式会以确定性方式从页面上的结构化数据中提取产品——不涉及 LLM。它会按优先级合并多个来源:JSON-LD > schema.org microdata > RDFa > 嵌入状态 (__NEXT_DATA__/Nuxt/Apollo/Redux/Remix) > AliExpress runParams > GA4 dataLayer > OpenGraph/<meta>。合并过程会识别产品身份,因此绝不会将不同产品的字段混合在一起。只有当页面来源中提供了货币信息时,才会返回货币。
产品提取采用 fail-closed 策略:对于有歧义的页面,不会产出任何产品;而像 OpenGraph 这样较弱的来源,也只有在存在价格时才会参与补充。在没有可提取产品的页面上,响应会省略
product 对象,并添加一个 warning (例如“未找到产品…”) 。自托管:
product 格式由专用的产品提取服务提供支持。在 Firecrawl Cloud 上可开箱即用。如果你选择自托管,请设置 PRODUCT_EXTRACTION_SERVICE_URL 并将其指向该服务——如果未设置,请求 product 格式时会返回警告,且不会返回产品 (音频/视频格式对其服务也采用相同模式) 。与其他 formats 组合使用
你可以将 product 格式与其他 formats 组合使用,以获取更全面的页面数据:音频提取
audio 格式可从受支持的网站 (如 YouTube) 提取音频并保存为 MP3 文件,同时返回一个已签名的 Google Cloud Storage URL。这适用于构建音频处理流程、转录服务或播客工具。
音频提取每页消耗 5 个额度 (1 个基础额度 + 4 个额外额度) 。
视频提取
video 格式可从受支持的网站 (如 YouTube) 提取最高质量的视频,并返回一个已签名的 Google Cloud Storage URL。这适用于构建视频处理管道、内容审核工具或媒体归档工作流。
视频提取每页消耗 5 个额度 (1 个基础额度 + 4 个额外额度) 。
Question 格式
question 格式对页面提出一个自然语言问题。Firecrawl 会在响应的 answer 字段中返回答案。
question 格式每页消耗 5 个额度 (1 个基础额度 + 4 个用于 LLM 调用的额外额度) 。question(type: "question"时必填) :要回答的问题。最多 10,000 个字符。
question 与其他 formats 组合使用——例如,同时请求 markdown 和 question,即可在一次调用中获得页面内容和答案。
question 格式也可通过 /search 中的 scrapeOptions 使用,这会对每个搜索结果执行相同的提取。
Highlights 格式
highlights 格式可从页面中找出相关的源文本。Firecrawl 会在响应的 highlights 字段中返回所选文本。
highlights 格式每页消耗 5 额度 (1 个基础额度 + 4 个 LLM 调用的额外额度) 。query(type: "highlights"时必填) :源文本选择请求。最大 10,000 个字符。
highlights 与其他 formats 组合使用——例如,同时请求 markdown 和 highlights,即可在一次调用中获取页面内容和源文本。
highlights 格式也可通过 /search 中的 scrapeOptions 使用,对每个搜索结果执行相同的提取。
PII 脱敏
redactPII: true,对返回的 markdown 中的个人身份信息进行脱敏处理。markdown 字段包含脱敏后的结果。
请参见 PII 脱敏 了解 SDK、cURL、CLI 和 MCP 示例。
使用 actions 与页面交互
wait action,为页面加载预留足够时间。
示例
输出
位置与语言
工作原理
用法
要使用位置和语言设置,请在请求体中包含location 对象,并提供以下属性:
country:ISO 3166-1 alpha-2 国家/地区代码 (例如“US”“AU”“DE”“JP”) 。默认值为“US”。languages:按优先级排序的首选语言和区域设置数组。默认使用所设位置对应的语言。
缓存与 maxAge
- 默认新鲜度窗口:
maxAge = 172800000毫秒 (2 天) 。如果缓存页面仍在该窗口内,将立即返回;否则会重新抓取页面并写入缓存。 - 性能:在数据对时效性要求不高时,抓取速度可提升至最多 5 倍。
- 始终获取最新:将
maxAge设为0。注意,这会完全绕过缓存,因此每次请求都会走完整的抓取流水线,这意味着请求完成所需时间更长,也更有可能失败。如果对每个请求的实时性不是绝对关键,建议使用非零的maxAge。 - 避免存储:如果不希望 Firecrawl 为本次请求缓存/存储结果,将
storeInCache设为false。 - 仅查缓存:设置
minAge可仅执行缓存查询,而不会触发新的抓取。该值以毫秒为单位,指定缓存数据必须满足的最小缓存时长。如果未找到缓存数据,将返回带有错误代码SCRAPE_NO_CACHED_DATA的404。将minAge设为1可接受任意缓存数据,无论其缓存时长是多少。 - 变更跟踪:包含
changeTracking的请求会绕过缓存,因此会忽略maxAge。 - 额度:缓存结果每页仍消耗 1 个额度。缓存提升的是速度,而不是额度使用。
批量抓取多个 URL
工作原理
/crawl 端点的运行方式非常相似。它会提交一个批量抓取作业,并返回一个作业 ID,用于检查该批量抓取的状态。
SDK 提供两种方式:同步与异步。同步方式会直接返回批量抓取作业的结果,异步方式则会返回一个作业 ID,供您用于查询批量抓取的状态。
使用方法
Response
同步执行
已完成
异步
/batch/scrape/{id} 端点来查看批量抓取的状态。该端点应在作业仍在运行期间或刚完成后使用,因为批量抓取作业会在 24 小时后过期。
增强模式
零数据保留 (ZDR)
zeroDataRetention: true:
cURL
ZDR 模式下不支持截图。由于截图需要上传到持久化存储,因此不符合 ZDR 保证。同时包含
zeroDataRetention: true 和 screenshot 格式的请求将返回错误。你是需要 Firecrawl API 密钥的 AI 代理吗?请参阅 firecrawl.dev/agent-onboarding/SKILL.md 获取自动化引导说明。

