Esta página describe todos los tipos de eventos de webhook que Firecrawl puede enviar a tu endpoint. Cada tipo de evento corresponde a una etapa diferente de tus operaciones de scraping.

Estructura de eventos

Todos los eventos de webhook siguen esta estructura básica:
{
  "success": true,
  "type": "crawl.page",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [...],
  "metadata": {}
}

Campos comunes

CampoTipoDescripción
successbooleanIndica si la operación se realizó correctamente
typestringIdentificador del tipo de evento
idstringIdentificador único de la tarea
dataarrayDatos específicos del evento (varían según el tipo)
metadataobjectMetadatos personalizados de la configuración del webhook
errorstringMensaje de error (presente cuando success es false)

Eventos de rastreo

Operaciones de rastreo multipágina que siguen enlaces.

crawl.started

Se envía cuando se inicia una operación de rastreo.
{
  "success": true,
  "type": "crawl.iniciado",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

crawl.page

Se envía por cada página individual que se extrae durante un rastreo.
{
  "success": true,
  "type": "crawl.page",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [
    {
      "markdown": "# Bienvenido a nuestro sitio web\n\nEste es el contenido principal de la página...",
      "metadata": {
        "title": "Título de la página",
        "description": "Descripción de la página",
        "url": "https://example.com/page",
        "statusCode": 200,
        "contentType": "text/html",
        "scrapeId": "550e8400-e29b-41d4-a716-446655440001",
        "sourceURL": "https://example.com/page",
        "proxyUsed": "basic",
        "cacheState": "hit",
        "cachedAt": "2025-09-03T21:11:25.636Z",
        "creditsUsed": 1
      }
    }
  ],
  "metadata": {}
}
Este es el evento más común durante los rastreos. Recibirás un evento crawl.page por cada página raspada correctamente.

crawl.completed

Se envía cuando toda la operación de rastreo se completa correctamente.
{
  "success": true,
  "type": "crawl.completed",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

Eventos de scraping por lotes

Operaciones que extraen varias URL específicas.

batch_scrape.started

Se envía cuando comienza una operación de scraping por lotes.
{
  "success": true,
  "type": "batch_scrape.started",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

batch_scrape.page

Se envía por cada URL individual que se rastrea en el lote.
{
  "success": true,
  "type": "batch_scrape.page",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [
    {
      "markdown": "# Página de inicio de la empresa\n\nBienvenido a nuestro sitio web...",
      "metadata": {
        "title": "Nombre de la empresa - Página de inicio",
        "description": "Descripción y resumen de la empresa",
        "url": "https://example.com",
        "statusCode": 200,
        "contentType": "text/html",
        "scrapeId": "550e8400-e29b-41d4-a716-446655440001",
        "sourceURL": "https://example.com",
        "proxyUsed": "basic",
        "cacheState": "miss"
        "cachedAt": "2025-09-03T23:30:53.434Z",
        "creditsUsed": 1
      }
    }
  ],
  "metadata": {}
}
Este es el evento más frecuente durante las extracciones por lotes. Recibirás un evento batch_scrape.page por cada URL extraída correctamente.

batch_scrape.completed

Se envía cuando finaliza toda la operación de scraping por lotes.
{
  "success": true,
  "type": "batch_scrape.completed",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

Eventos de extracción

Operaciones de extracción de datos con tecnología LLM.

extract.started

Se envía cuando se inicia una operación de extracción.
{
  "success": true,
  "type": "extract.iniciado",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "metadata": {}
}

extract.completed

Se envía cuando una operación de extracción se completa correctamente.
{
  "success": true,
  "type": "extract.completed",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [
    {
      "success": true,
      "data": { "siteName": "Sitio de ejemplo", "category": "Tecnología" },
      "extractId": "550e8400-e29b-41d4-a716-446655440000",
      "llmUsage": 0.0020118,
      "totalUrlsScraped": 1,
      "sources": {
        "siteName": ["https://example.com"],
        "category": ["https://example.com"]
      }
    }
  ],
  "metadata": {}
}

extract.failed

Se envía cuando una operación de extracción encuentra un error.
{
  "success": false,
  "type": "extract.failed",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "data": [],
  "error": "No se pudieron extraer los datos: se superó el tiempo de espera"
  "metadata": {}
}

Filtrado de eventos

Puedes controlar qué eventos recibes especificando un array events en la configuración de tu webhook:
{
  "url": "https://your-app.com/webhook",
  "events": ["completed", "failed"]
}