Firecrawl 会在任务生命周期的各个阶段发送 Webhook 事件,因此你无需轮询,即可实时跟踪进度、获取结果并处理失败情况。
快速参考#
| 事件 | 触发条件 |
|---|---|
crawl.started | 爬取任务开始处理 |
crawl.page | 在爬取过程中抓取某个页面时 |
crawl.completed | 爬取任务结束,且所有页面均已处理完成 |
batch_scrape.started | 批量抓取作业开始处理 |
batch_scrape.page | 在批量抓取过程中抓取某个 URL 时 |
batch_scrape.completed | 批次中的所有 URL 均已处理完成 |
extract.started | 提取任务开始处理 |
extract.completed | 提取成功完成 |
extract.failed | 提取失败 |
agent.started | 代理任务开始处理 |
agent.action | 代理执行某个工具 (抓取、搜索等) |
agent.completed | 代理成功完成 |
agent.failed | 代理遇到错误 |
agent.cancelled | 代理任务被用户取消 |
monitor.page | 受监控页面的抓取已完成 |
monitor.check.completed | 监控检查完成,且页面级变更已可用 |
负载结构#
所有 webhook 事件均采用以下结构:
| 字段 | 类型 | 描述 |
|---|---|---|
success | boolean | 操作是否成功 |
type | string | 事件类型 (例如 crawl.page) |
id | string | 任务 ID |
data | array or object | 与事件相关的数据 (见下方示例) |
metadata | object | 来自你在 webhook 配置中的自定义元数据 |
error | string | 错误信息 (当 success 为 false 时) |
爬取事件#
crawl.started#
在爬取任务开始处理时发送。
crawl.page#
在爬取过程中,每抓取到一个页面就会发送此事件。data 数组包含页面内容和元数据。
crawl.completed#
在爬取任务结束且所有页面都已处理时发送。
批量抓取事件#
batch_scrape.started#
在批量抓取任务开始处理时发送。
batch_scrape.page#
针对批处理中每个被抓取的 URL 发送。data 数组包含页面内容和元数据。
batch_scrape.completed#
在批次中的所有 URL 均处理完成后发送。
监控事件#
monitor.page#
每个受监控页面抓取完成时都会发送此事件。该事件由抓取工作器流程发出,因此会在完整的监控检查完成汇总前到达。
monitor.check.completed#
在监控检查完成时发送。data 对象包含检查状态和汇总计数。页面级结果仅会通过 monitor.page 事件发送,或由监控检查 API 返回。
当检查完成且没有页面错误时,success 为 true。对于部分完成或失败的检查,success 为 false,且 error 可能包含错误消息。
提取事件#
extract.started#
当提取任务开始处理时发送。
extract.completed#
在提取操作成功完成后发送。data 数组包含提取的数据和用量信息。
extract.failed#
当提取失败时发送。error 字段中包含失败原因。
代理事件#
适用于通过 /v2/agent 使用 webhook 启动的任务。
agent.started#
当 Agent 任务开始执行时发送。
agent.action#
在每次调用工具 (scrape、search 等) 后发送。
action 事件中的 creditsUsed 值是目前累计使用 credits 总量的预估值。最终准确的 credits 消耗量仅在
completed、failed 或 cancelled 事件中可用。
agent.completed#
当 agent 成功完成时会发送该事件。data 数组包含提取的数据以及消耗的总额度 (credits) 。
agent.failed#
当 agent 遇到错误时会发送该事件。error 字段包含失败原因。
agent.cancelled#
当用户取消代理作业时发送。
事件过滤#
默认情况下,你会接收到所有事件。若只想订阅特定事件,请在 webhook 配置中通过指定 events 数组:
如果你只关心任务是否完成,而不需要逐页级更新时,这会很有用。

