
changeTracking 添加到你的 formats 数组中,以检测页面是新增、未变化还是已修改,并 (可选) 获取结构化的差异信息,了解具体发生了哪些变更。
- 适用于
/scrape、/crawl和/batch/scrape - 提供两种 diff 模式:用于行级变更的
git-diff,以及用于字段级比较的json - 作用范围限定在你的团队内,也可以按你传入的 tag 进一步限定
工作原理
changeTracking 的抓取都会存储一个快照,并将其与该 URL 上一次抓取生成的快照进行比较。快照会被持久化存储且不会过期,因此无论两次抓取之间间隔多长时间,对比结果都能保持准确。
响应会在
changeTracking 对象中包含以下字段:
基本用法
formats 数组中同时包含 markdown 和 changeTracking。markdown 格式是必需的,因为变更追踪会根据页面的 markdown 内容来比较差异。
响应
changeStatus 为 "new",并且 previousScrapeAt 为 null:
changeStatus 表示内容是否发生了变化:
Git-diff 模式
git-diff 模式会以类似 git diff 的格式返回逐行的变更。向 formats 数组中传入一个包含 modes: ["git-diff"] 的对象:
响应
diff 对象同时包含纯文本 diff 和 JSON 结构化表示:
diff.json 对象包含:
files:变更文件的数组 (网页通常只有一个文件)chunks:文件内的变更片段changes:逐行变更记录,包含type("add"、"del"或"normal") 、行号 (ln) 以及content
JSON 模式
json 模式会基于你定义的 schema,同时从页面的当前版本和先前版本中提取指定字段。这样可以在不解析完整差异 (diff) 的情况下,跟踪价格、库存水平或元数据等结构化数据的变化。
在请求中传入 modes: ["json"],并通过 schema 定义要提取的字段:
响应
previous 和 current 两个值:
prompt,配合 schema 一起引导 LLM 进行抽取。
JSON 模式使用 LLM 抽取,每页消耗 5 点额度。基础变更跟踪和
git-diff 模式不会产生额外费用。使用变更追踪进行 Crawl
changeTracking formats 传入 scrapeOptions 中:
使用变更跟踪的批量抓取
调度变更跟踪
Cron 任务
check-pricing.sh
crontab -e 将其加入定时任务:
云端和无服务器调度器
- AWS:通过 EventBridge 规则触发 Lambda 函数
- GCP:通过 Cloud Scheduler 触发 Cloud Function
- Vercel / Netlify:由 Cron 触发的无服务器函数
- GitHub Actions:使用
schedule和cron触发的定时工作流
工作流自动化
Webhooks
crawl.page 事件的负载 (payload) 中会为每个页面包含一个 changeTracking 对象:
配置参考
changeTracking 格式对象时可用的全部配置项如下:
数据模型
重要细节
- 快照保留:快照会被持久化存储且不会过期。即使在距离上一次抓取数月之后才再次抓取,依然会与之前的快照进行正确比较。
- 作用范围:比较的作用范围限定在你的团队内。你首次抓取任意 URL 时都会返回
"new",即便其他用户之前抓取过它。 - URL 匹配:之前的抓取记录会基于精确的源 URL、team ID、
markdown格式和tag进行匹配。请在多次抓取之间保持 URL 一致。 - 参数一致性:在针对同一 URL 的多次抓取中使用不同的
includeTags、excludeTags或onlyMainContent设置会导致比较结果不可靠。 - 比较算法:该算法对空白字符和内容顺序的变化具有鲁棒性。为处理验证码/反爬虫随机化,iframe 源 URL 会被忽略。
- 缓存:带有
changeTracking的请求会绕过索引缓存。maxAge参数会被忽略。 - 错误处理:留意响应中的
warning字段,并处理changeTracking对象可能缺失的情况 (如果查询上一轮抓取记录的数据库操作超时,就可能出现这种情况) 。
计费
你是需要 Firecrawl API 密钥的 AI 代理吗?请参见 firecrawl.dev/agent-onboarding/SKILL.md 了解自动化接入说明。

