Firecrawl envía eventos de webhook en cada etapa del ciclo de vida de un trabajo, para que puedas seguir el progreso, capturar resultados y gestionar fallos en tiempo real sin necesidad de hacer polling.
Referencia rápida#
| Evento | Activador |
|---|---|
crawl.started | El trabajo de rastreo comienza a procesarse |
crawl.page | Se extrae una página durante un rastreo |
crawl.completed | El trabajo de rastreo finaliza y todas las páginas se han procesado |
batch_scrape.started | El trabajo de extracción por lotes comienza a procesarse |
batch_scrape.page | Se extrae una URL durante una extracción por lotes |
batch_scrape.completed | Todas las URL del lote se han procesado |
extract.started | El trabajo de extracción comienza a procesarse |
extract.completed | La extracción finaliza correctamente |
extract.failed | La extracción falla |
agent.started | El trabajo de agente comienza a procesarse |
agent.action | El agente ejecuta una herramienta (scrape, search, etc.) |
agent.completed | El agente finaliza correctamente |
agent.failed | El agente se encuentra con un error |
agent.cancelled | El trabajo de agente es cancelado por el usuario |
monitor.page | Finaliza la extracción de una página supervisada |
monitor.check.completed | La comprobación del monitor finaliza y los cambios a nivel de página están disponibles |
Estructura del payload#
Todos los eventos de webhook comparten esta estructura:
| Field | Type | Description |
|---|---|---|
success | boolean | Indica si la operación se completó correctamente |
type | string | Tipo de evento (por ejemplo, crawl.page) |
id | string | ID del trabajo |
data | array u object | Datos específicos del evento (consulta los ejemplos más abajo) |
metadata | object | Metadatos personalizados de tu configuración de webhook |
error | string | Mensaje de error (cuando success es false) |
Eventos de rastreo#
crawl.started#
Se envía cuando la tarea de rastreo comienza a procesarse.
crawl.page#
Se envía por cada página que se extrae. El arreglo data contiene el contenido de la página y sus metadatos.
crawl.completed#
Se envía cuando el trabajo de rastreo finaliza y todas las páginas han sido procesadas.
Eventos de scraping por lotes#
batch_scrape.started#
Se envía cuando comienza una operación de scraping por lotes.
batch_scrape.page#
Se envía por cada URL individual que se extrae. El arreglo data contiene el contenido de la página y sus metadatos.
batch_scrape.completed#
Se envía cuando se han procesado todas las URL del lote.
Eventos del Monitor#
monitor.page#
Se envía cuando finaliza el scraping de cada página supervisada. Este evento se emite desde la ruta del worker de scraping, por lo que llega antes de que se haya conciliado la verificación completa del monitor.
monitor.check.completed#
Se envía cuando finaliza una verificación del monitor. El objeto data contiene el estado de la verificación y los recuentos de resumen. Los resultados a nivel de página solo se envían mediante eventos monitor.page o los devuelve la API de verificación del monitor.
success es true cuando la verificación se completa sin errores de página. En verificaciones parciales o fallidas, success es false y error puede contener un mensaje.
Eventos de extracción#
extract.started#
Se envía cuando el trabajo de extracción comienza a ejecutarse.
extract.completed#
Se envía cuando una operación de extracción se completa correctamente. El array data contiene los datos extraídos y la información de uso.
extract.failed#
Se envía cuando falla la extracción. El campo error contiene el motivo del error.
Eventos del agente#
Se envían para los trabajos iniciados con un webhook en /v2/agent.
agent.started#
Se envía cuando el trabajo del agente comienza su procesamiento.
agent.action#
Se envía tras cada ejecución de una herramienta (scrape, search, etc.).
El valor de creditsUsed en los eventos de action es una estimación del total de créditos utilizados hasta ese momento. El recuento final y preciso de créditos solo está disponible en los eventos completed, failed o cancelled.
agent.completed#
Se envía cuando el agente finaliza correctamente. El array data contiene los datos extraídos y el total de créditos utilizados.
agent.failed#
Se envía cuando el agente se encuentra con un error. El campo error contiene el motivo del fallo.
agent.cancelled#
Se envía cuando el usuario cancela la tarea del agente.
Filtrado de eventos#
De forma predeterminada, recibes todos los eventos. Para suscribirte solo a eventos específicos, usa el array events en la configuración de tu webhook:
Esto es útil si solo te interesa que el trabajo se complete y no necesitas actualizaciones por página.

