
O rastreio de mudanças compara o conteúdo atual de uma página com o da última vez em que você fez o scrape. Adicione changeTracking ao seu array de formats para detectar se uma página é nova, inalterada ou modificada e, opcionalmente, obter um diff estruturado do que mudou.
- Funciona com
/scrape,/crawle/batch/scrape - Dois modos de diff:
git-diffpara mudanças em nível de linha ejsonpara comparação em nível de campo - Restrito à sua equipe e, opcionalmente, a uma tag que você especificar
Como funciona#
Cada scrape com changeTracking habilitado armazena um snapshot e o compara com o snapshot anterior para essa URL. Snapshots são armazenados de forma persistente e não expiram, por isso as comparações permanecem precisas, independentemente de quanto tempo se passou entre os scrapes.
| Scrape | Resultado |
|---|---|
| Primeiro scrape | changeStatus: "new" (nenhuma versão anterior existe) |
| Conteúdo inalterado | changeStatus: "same" |
| Conteúdo modificado | changeStatus: "changed" (dados de diff disponíveis) |
| Página removida | changeStatus: "removed" |
A resposta inclui estes campos no objeto changeTracking:
| Campo | Tipo | Descrição |
|---|---|---|
previousScrapeAt | string | null | Carimbo de data e hora do scrape anterior (null no primeiro scrape) |
changeStatus | string | "new", "same", "changed" ou "removed" |
visibility | string | "visible" (localizável via links/sitemap) ou "hidden" (a URL funciona, mas não está mais linkada) |
diff | object | undefined | Diff em nível de linha (presente apenas no modo git-diff quando o status é "changed") |
json | object | undefined | Comparação em nível de campo (presente apenas no modo json quando o status é "changed") |
Uso básico#
Inclua tanto markdown quanto changeTracking no array formats. O formato markdown é obrigatório porque o rastreio de mudanças compara as páginas com base no conteúdo em markdown.
Resposta#
No primeiro scrape, changeStatus é "new" e previousScrapeAt é null:
Em raspagens posteriores, changeStatus indica se o conteúdo foi alterado:
Modo git-diff#
O modo git-diff retorna alterações linha a linha em um formato semelhante ao git diff. Passe um objeto no array formats com modes: ["git-diff"]:
Resposta#
O objeto diff contém um diff em texto simples e uma representação JSON estruturada:
O objeto estruturado diff.json contém:
files: array de arquivos modificados (geralmente um por página da web)chunks: seções de alterações dentro de um arquivochanges: alterações individuais de linha comtype("add","del"ou"normal"), número da linha (ln) econtent
Modo JSON#
O modo json extrai campos específicos tanto da versão atual quanto da versão anterior da página usando um schema que você define. Isso é útil para acompanhar mudanças em dados estruturados, como preços, níveis de estoque ou metadados, sem precisar analisar um diff completo.
Passe modes: ["json"] com um schema definindo os campos a serem extraídos:
Resposta#
Cada campo do schema é retornado com os valores previous e current:
Você também pode fornecer um prompt opcional para orientar a extração do LLM em conjunto com o schema.
O modo JSON usa extração com LLM e custa 5 créditos por página. O rastreamento básico de alterações e o modo git-diff não têm custo adicional.
Por padrão, o rastreamento de mudanças compara com a raspagem mais recente da mesma URL feita pela sua equipe. Tags permitem que você mantenha históricos de rastreamento separados para a mesma URL, o que é útil quando você monitora a mesma página em intervalos diferentes ou em contextos distintos.
Crawl com rastreio de mudanças#
Adicione rastreio de mudanças às operações de crawl para monitorar um site inteiro em busca de alterações. Passe o formato changeTracking dentro de scrapeOptions:
Raspagem em lote com rastreamento de mudanças#
Use a raspagem em lote para monitorar um conjunto específico de URLs:
Agendando o rastreamento de alterações#
O rastreamento de alterações é mais útil quando você faz scraping em uma agenda regular. Você pode automatizar isso com cron, agendadores em nuvem ou ferramentas de workflow.
Cron job#
Crie um script que extraia dados de uma URL e envie alertas quando houver alterações:
Agende isso com crontab -e:
| Agendamento | Expressão |
|---|---|
| A cada hora | 0 * * * * |
| A cada 6 horas | 0 */6 * * * |
| Diariamente às 9h | 0 9 * * * |
| Toda segunda-feira às 8h | 0 8 * * 1 |
Agendadores em ambientes cloud e serverless#
- AWS: regra do EventBridge acionando uma função Lambda
- GCP: Cloud Scheduler acionando uma Cloud Function
- Vercel / Netlify: funções serverless acionadas por cron
- GitHub Actions: workflows agendados com gatilhos
scheduleecron
Automação de fluxos de trabalho#
Plataformas no-code como n8n, Zapier e Make podem chamar a API do Firecrawl em intervalos programados e enviar os resultados para o Slack, e-mail ou bancos de dados. Veja os guias de automação de fluxos de trabalho.
Webhooks#
Para operações assíncronas como crawl e batch scrape, use webhooks para receber resultados de rastreio de mudanças assim que chegarem, em vez de fazer polling.
O payload do evento crawl.page inclui o objeto changeTracking para cada página:
Para obter detalhes sobre a configuração de webhooks (cabeçalhos, metadados, eventos, tentativas de nova entrega, verificação de assinatura), consulte a documentação de webhooks.
Referência de configuração#
O conjunto completo de opções disponível ao passar um objeto no formato changeTracking:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
type | string | (obrigatório) | Deve ser "changeTracking" |
modes | string[] | [] | Modos de diff a serem habilitados: "git-diff", "json" ou ambos |
schema | object | (nenhum) | JSON Schema para comparação em nível de campo (obrigatório para o modo json) |
prompt | string | (nenhum) | Prompt personalizado para orientar a extração pelo LLM (usado com o modo json) |
tag | string | null | Identificador separado para o histórico de rastreamento |
Modelos de dados#
Detalhes importantes#
O formato markdown deve sempre ser incluído junto com changeTracking. O rastreioDeMudanças compara páginas com base no conteúdo em markdown.
- Retenção de snapshots: Snapshots são armazenados de forma persistente e não expiram. Uma raspagem feita meses após a anterior ainda será comparada corretamente com o snapshot anterior.
- Escopo: As comparações são limitadas à sua equipe. Sua primeira raspagem de qualquer URL retorna
"new", mesmo que outros usuários já a tenham raspado. - Correspondência de URL: Raspagens anteriores são associadas com base na URL de origem exata, ID da equipe, formato
markdownetag. Mantenha as URLs consistentes entre raspagens. - Consistência de parâmetros: Usar configurações diferentes de
includeTags,excludeTagsouonlyMainContentem raspagens da mesma URL produz comparações não confiáveis. - Algoritmo de comparação: O algoritmo é resistente a mudanças em espaços em branco e na ordem do conteúdo. URLs de origem de iframes são ignoradas para lidar com a aleatoriedade de captcha/antibot.
- Cache: Solicitações com
changeTrackingcontornam o cache do índice. O parâmetromaxAgeé ignorado. - Tratamento de erros: Monitore o campo
warningnas respostas e esteja preparado para o caso de o objetochangeTrackingestar ausente (isso pode ocorrer se a consulta ao banco de dados para a raspagem anterior exceder o tempo limite).
Cobrança#
| Modo | Custo |
|---|---|
| Rastreio básico de mudanças | Sem custo adicional (créditos padrão de scraping) |
git-diff mode | Sem custo adicional |
json mode | 5 créditos por página |
Você é um agente de IA que precisa de uma chave de API do Firecrawl? Consulte firecrawl.dev/agent-onboarding/SKILL.md para instruções de integração automatizada.

