Programa comprobaciones periódicas, detecta cambios y recibe notificaciones por webhook o correo electrónico
El monitoreo de Firecrawl ejecuta comprobaciones recurrentes y te notifica a ti o a tu agente cuando algo cambia o aparece. Usa /monitor para vigilar páginas conocidas, rastrear un sitio web de forma programada o ejecutar una búsqueda web siempre activa para encontrar nuevos resultados que coincidan con un objetivo.Todos los tipos de monitores comparten el mismo flujo de trabajo: seleccionar uno o más objetivos, establecer una programación, añadir un objetivo opcional en lenguaje natural y recibir notificaciones por webhook o correo electrónico cuando algo sea relevante. Esta página cubre la configuración compartida. Para la configuración y los ejemplos específicos de cada objetivo, ve a la página de monitoreo de Página, Sitio web o Toda la web a escala.
Monitoreo de páginas
Vigila una o más URL conocidas, compara cada scraping con la última instantánea y genera alertas ante cambios significativos en la página.
Monitoreo de sitios web
Rastrea un sitio de forma programada, detecta páginas añadidas, modificadas o eliminadas y notifica a tu webhook o bandeja de entrada.
Monitoreo de toda la web a escala
Ejecuta búsquedas web recurrentes y genera alertas cuando aparezca un resultado nuevo que coincida con tu objetivo.
Cada comprobación registra resultados por página como same, new, changed, removed o error. Puedes recibir un webhook cuando termine cada página monitoreada, un webhook por cada comprobación completada, resúmenes por correo electrónico cuando haya cambios o errores, o cualquier combinación de estas notificaciones.
Finalizada: recompensa por comentarios sobre /monitor
Ya hemos contactado a todas las personas entrevistadas que cumplían los requisitos para la recompensa. ¡Estate atento a futuras recompensas en nuestra documentación!
Cada monitor acepta entre 1 y 50 objetivos, y puedes mezclar tipos de objetivo en un solo monitor. retentionDays es 30 de forma predeterminada y puede configurarse hasta 365.Cada llamada de creación devuelve el nuevo monitor con su cron normalizado, nextRunAt calculado y estimatedCreditsPerMonth. Cuando la evaluación está habilitada, estimatedCreditsPerMonth es una estimación de cota superior porque los créditos de evaluación solo se cobran por las páginas modificadas que realmente se evalúan:
Response
{ "success": true, "data": { "id": "019df960-06e7-7383-9d89-82c0113dc31a", "name": "Hacker News AI monitor", "status": "active", "schedule": { "cron": "*/30 * * * *", "timezone": "UTC" }, "nextRunAt": "2026-05-17T16:00:00.000Z", "lastRunAt": null, "currentCheckId": null, "goal": "Alert when a new Hacker News story related to AI enters the top 10. Ignore changes to stories that are not about AI. Do not alert on changes outside the top 10.", "judgeEnabled": true, "targets": [ { "id": "019df960-09bb-7c11-8001-1f12f50ab1c2", "type": "scrape", "urls": ["https://news.ycombinator.com"] } ], "webhook": null, "notification": { "email": { "enabled": true, "recipients": ["alerts@example.com"], "includeDiffs": true } }, "retentionDays": 30, "estimatedCreditsPerMonth": 2880, "lastCheckSummary": null, "createdAt": "2026-05-17T15:30:00.000Z", "updatedAt": "2026-05-17T15:30:00.000Z" }}
Añade un goal en lenguaje claro cuando solo quieras recibir alertas por cambios significativos. Si goal está presente y se omite judgeEnabled, Firecrawl habilita la evaluación automáticamente. La evaluación se ejecuta en las páginas que han cambiado y devuelve un judgment con meaningful, confidence, reason y meaningfulChanges.La forma en que se aplica el objetivo depende del objetivo: los monitores de página y sitio web evalúan las páginas modificadas, mientras que los monitores de toda la web a escala evalúan cada nuevo resultado de búsqueda.Usa judgeEnabled: false si quieres guardar un objetivo sin evaluar todavía los cambios. El evaluador solo se ejecuta cuando el monitor tiene tanto judgeEnabled como un goal no vacío.
Se requiere un goal para los objetivos search (supervisión de toda la web a escala) a menos que establezcas judgeEnabled: false. Es opcional para los objetivos scrape y crawl.
Cada comprobación siempre consume créditos por las operaciones subyacentes de scraping o rastreo. Si la evaluación está habilitada, el evaluador añade 1 crédito por cada página modificada que valida. Las comprobaciones sin páginas modificadas no usan créditos del evaluador.
Los buenos objetivos son breves y explícitos: indica qué debe activar una alerta, especifica de nuevo cualquier criterio de alcance, como top N, precio, tipo de puesto, empresa, región, tema, estado o entidad, e incluye exclusiones solo cuando formen parte de la intención. Si el objetivo es amplio, mantenlo amplio; por ejemplo, “cualquier cambio” no debería añadir filtros de ruido que oculten cambios.Por ejemplo, un monitor con este objetivo:
Alerta cuando una nueva historia de Hacker News relacionada con IA entre al top 10. Ignora los cambios en historias que no sean sobre IA. No alertes sobre cambios fuera del top 10.
podría generar un webhook monitor.page como este cuando una historia coincidente pase a estar dentro del alcance:
monitor.page
{ "success": true, "type": "monitor.page", "id": "019df960-5f2a-75fb-a98b-bd2d32ca67d4", "webhookId": "f1e2d3c4-0000-0000-0000-000000000000", "data": [ { "monitorId": "019df960-06e7-7383-9d89-82c0113dc31a", "checkId": "019df960-5f2a-75fb-a98b-bd2d32ca67d4", "url": "https://news.ycombinator.com", "status": "changed", "previousScrapeId": "019df94f-82c3-7e41-81f0-00c72b2d9c52", "currentScrapeId": "019df960-73ee-7ac2-97a9-fb0e442c21f1", "error": null, "isMeaningful": true, "judgment": { "meaningful": true, "confidence": "high", "reason": "A new AI-related story entered the Hacker News top 10.", "meaningfulChanges": [ { "type": "added", "after": "4. Show HN: Open-source AI coding assistant", "reason": "This is a new AI-related story inside the top 10." } ] }, "diff": { "text": "--- previous\n+++ current\n@@ -1,5 +1,6 @@\n # Hacker News\n 1. Database internals for beginners\n 2. A new approach to CSS\n 3. Building reliable queues\n+4. Show HN: Open-source AI coding assistant\n" } } ], "metadata": { "environment": "production" }}
El intervalo mínimo es de 5 minutos. Las respuestas de la API siempre devuelven la expresión cron normalizada. En las programaciones de texto, timezone controla cuándo se ejecutan frases como daily at 9am. Las programaciones en texto se distribuyen según el ID del monitor antes de convertirse a cron, para que varios monitores no se ejecuten todos en el mismo instante.
Los monitores de Página y sitio web comparan el markdown de cada página de forma predeterminada e informan same, changed, new, removed o error. Si quieres detectar cambios en campos estructurados específicos (precio, encabezado, indicador de disponibilidad, elementos de una lista, etc.), habilita el seguimiento de cambios en modo JSON añadiendo un formato changeTracking con modes: ["json"] a scrapeOptions del objetivo.
El seguimiento de cambios se aplica a los objetivos scrape y crawl. Los monitores de escala web completos (search) generan alertas sobre resultados nuevos en lugar de comparar páginas conocidas. Consulta Statuses and dedup.
Cuando scrapeOptions.formats es solo ["markdown"], cada página con cambios en la respuesta de check incluye un diff de texto unificado y un AST al estilo de parseDiff:
Pasa un formato changeTracking con modes: ["json"] junto con un esquema JSON (o un prompt) que describa los campos que te interesan. Firecrawl extrae ese JSON en cada comprobación y genera un diff por campo con claves basadas en la ruta del campo, además de un snapshot.json con la extracción actual completa para que los consumidores no tengan que volver a obtener el scraping original.
from firecrawl import Firecrawlfrom pydantic import BaseModelfrom typing import Listfirecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")class Plan(BaseModel): name: str price: str features: List[str]class Pricing(BaseModel): plans: List[Plan]monitor = firecrawl.create_monitor( name="Pricing monitor", schedule={"text": "hourly", "timezone": "UTC"}, goal="Notify me when a pricing tier, price, or headline feature changes", targets=[ { "type": "scrape", "urls": ["https://example.com/pricing"], "scrapeOptions": { "formats": [ { "type": "changeTracking", "modes": ["json"], "prompt": "Extract pricing tiers and headline features for each plan.", "schema": Pricing.model_json_schema(), } ] }, } ], notification={ "email": { "enabled": True, "recipients": ["alerts@example.com"], "includeDiffs": True, } },)print(monitor.id)
La carga útil del diff usa rutas JSON dentro de la extracción como claves. Cada valor es un par {previous, current}:
Aunque no cambie ningún campo supervisado, si el markdown circundante sí cambia, los monitores en modo JSON seguirán devolviendo same a menos que también habilites git-diff (consulta el modo mixto más abajo). El diff se centra exclusivamente en los campos de tu esquema.
La respuesta de comprobación contiene entonces tanto diff.text (sidecar de markdown) como diff.json (diff por campo), junto con la extracción snapshot.json:
Cuando un monitor tiene un webhook, Firecrawl puede enviar dos eventos del monitor:
monitor.page: Se envía a medida que finaliza cada scraping supervisado en el worker de scraping.
monitor.check.completed: Se envía después de que se consolida la comprobación completa. Incluye el estado de la comprobación y los recuentos de resumen. Usa los eventos monitor.page o la API de comprobación del monitor para obtener resultados a nivel de página.
monitor.page incluye isMeaningful y judgment cuando se ejecuta la evaluación de cambios significativos en una página modificada.
success es true cuando la comprobación se completa sin errores de página. Es false en comprobaciones fallidas o parciales, y error contiene el motivo del fallo cuando está disponible.
Cuando un monitor tiene un objetivo y la evaluación está habilitada, los resúmenes por correo electrónico priorizan las páginas modificadas relevantes. Si todas las páginas modificadas se consideran ruido y no hay páginas nuevas, eliminadas o con errores, el correo electrónico no se envía.Si se omite recipients, Firecrawl envía correos a los miembros del equipo que pueden recibir correos electrónicos de alerta del sistema.
Puedes configurar hasta 25 destinatarios explícitos.
Cuando se añade un nuevo destinatario a un monitor, Firecrawl le envía un correo electrónico con un enlace de confirmación. Así se garantiza que acepta explícitamente recibir notificaciones de ese monitor. Si el destinatario ya es miembro del equipo, no hace falta confirmación.
Usa GET /v2/monitor/{monitorId}/checks para listar comprobaciones y GET /v2/monitor/{monitorId}/checks/{checkId} para inspeccionar una comprobación. Los SDKs aplican paginación automática de forma predeterminada.
from firecrawl import Firecrawlfirecrawl = Firecrawl(api_key="fc-YOUR-API-KEY")check = firecrawl.get_monitor_check(monitor_id, check_id, limit=25, status="changed")for page in check.pages: print(page.url, page.status) if page.judgment: print(page.judgment.meaningful, page.judgment.reason) if page.diff and page.diff.text: print(page.diff.text) if page.snapshot and page.snapshot.json: print(page.snapshot.json)
La lista de comprobaciones se puede filtrar por el status de la comprobación: queued, running, completed, failed, partial o skipped_overlap.La respuesta de detalle de la comprobación incluye estimatedCredits, actualCredits, conteos resumidos y un array paginado de pages. estimatedCredits es la reserva máxima para la comprobación; actualCredits es el importe final cobrado una vez que Firecrawl sabe cuántas páginas cambiaron y requirieron evaluación. Usa la URL next de nivel superior para obtener la siguiente página de resultados, igual que en la paginación del rastreo. Puedes filtrar páginas por status: same, new, changed, removed o error. Cada página modificada incluye datos diff integrados; las páginas de monitores en modo JSON también incluyen un snapshot con la extracción actual.
Modo Markdown
Modo JSON
Modo mixto
Markdown-mode response
{ "success": true, "next": "https://api.firecrawl.dev/v2/monitor/019df960-06e7-7383-9d89-82c0113dc31a/checks/019df960-5f2a-75fb-a98b-bd2d32ca67d4?skip=25&limit=25", "data": { "id": "019df960-5f2a-75fb-a98b-bd2d32ca67d4", "monitorId": "019df960-06e7-7383-9d89-82c0113dc31a", "status": "completed", "estimatedCredits": 2, "actualCredits": 2, "summary": { "totalPages": 1, "same": 0, "changed": 1, "new": 0, "removed": 0, "error": 0 }, "pages": [ { "id": "019df960-7708-7c62-a5dc-6206f16ac122", "targetId": "019df960-09bb-7c11-8001-1f12f50ab1c2", "url": "https://example.com/blog", "status": "changed", "previousScrapeId": "019df94f-82c3-7e41-81f0-00c72b2d9c52", "currentScrapeId": "019df960-73ee-7ac2-97a9-fb0e442c21f1", "statusCode": 200, "error": null, "metadata": { "title": "Example Blog", "creditsUsed": 1 }, "judgment": { "meaningful": true, "confidence": "high", "reason": "The page headline changed to announce a new release cadence.", "meaningfulChanges": [ { "type": "changed", "before": "Welcome to our weekly update.", "after": "Welcome to our weekly update — now with daily releases!", "reason": "The headline changed in a way that matches the monitor goal." } ] }, "createdAt": "2026-05-17T15:35:00.000Z", "diff": { "text": "--- previous\n+++ current\n@@ -1,3 +1,3 @@\n # Latest posts\n-Welcome to our weekly update.\n+Welcome to our weekly update — now with daily releases!\n", "json": { "files": [ { "from": "previous", "to": "current", "chunks": [] } ] } } } ], "next": "https://api.firecrawl.dev/v2/monitor/019df960-06e7-7383-9d89-82c0113dc31a/checks/019df960-5f2a-75fb-a98b-bd2d32ca67d4?skip=25&limit=25" }}
Los monitores no tienen una tarifa adicional por monitor. Cada comprobación consume los créditos del scraping, rastreo o búsqueda subyacentes que realiza, más un crédito opcional por cada página modificada cuando está habilitada la evaluación de cambios significativos.
Componente
Créditos
Monitor de scraping
1 crédito por URL por comprobación
Monitor de rastreo
1 crédito por página descubierta por comprobación
Monitor web
2 créditos por cada 10 resultados por comprobación
Evaluación del monitor web
1 crédito por resultado evaluado, cuando la evaluación con IA está habilitada (cubre el scraping y la evaluación del resultado)
Evaluación de cambios significativos habilitada
1 crédito adicional por cada página modificada que valide el evaluador
Complementos de formato (JSON, PDF, question, enhanced mode, etc.)