CrawlForge MCP
MonitoreoAvanzado3 credits

track_changes

Almacene una instantánea de una página y compare la página en vivo con ella cuando quiera. Obtiene si algo cambió, cuánto, qué líneas se añadieron o eliminaron, y una puntuación de similitud estructural que indica si el marcado en sí fue reconstruido.

Casos de uso

Detecte un scraper a punto de romperse

Una structural_similarity baja significa que el marcado de la página fue reconstruido, que es lo que realmente rompe los selectores: detéctelo antes de que su pipeline de extracción empiece a devolver resultados vacíos.

Vigile páginas de precios de competidores

Limite el alcance a la tabla de precios con selector, compare según su propio calendario y lea las líneas añadidas y eliminadas para ver qué se movió.

Rastree documentos legales y de políticas

Compare términos de servicio, políticas de privacidad o páginas regulatorias y conserve un registro auditable de exactamente qué líneas cambiaron.

Detecte cambios incompatibles en documentación de API

Capture una línea base de la referencia o el changelog de un proveedor y compare antes de cada una de sus versiones.

Verifique que un despliegue cambió solo lo previsto

Capture una línea base antes de publicar, compare después y confirme que la diferencia coincide con el cambio previsto.

Endpoint

POST/api/v1/tools/track_changes
Auth Required
1 solicitud/s en el plan Free
3 credits

Parameters

Este endpoint acepta cuatro parámetros. Ejemplos anteriores enviaban objetos trackingOptions, monitoringOptions y storageOptions: la API REST alojada acepta esas claves y las ignora, así que enviarlas no cambia nada. Los controles equivalentes existen en el servidor MCP de CrawlForge.
NameTypeRequiredDefaultDescription
url
stringRequired-
La página que se va a capturar o comparar.
Example: https://competitor.com/pricing
operation
stringOptionalcompare
O `"create_baseline"` o `"compare"`. Pasar `"monitor"` devuelve 501: el monitoreo programado es una función del servidor MCP. Cualquier otro valor se rechaza con 400.
Example: compare
selector
stringOptional-
Selector CSS que limita el rastreo a una parte de la página, por ejemplo `.pricing-table`. Las líneas base se almacenan por par (url, selector), de modo que la misma URL puede rastrearse en varios alcances de forma independiente. Devuelve 422 si el selector no coincide con nada.
Example: .pricing-table
update_baseline
booleanOptionalfalse
Solo para `compare`. Después de comparar, sobrescribe la línea base almacenada con el contenido recién obtenido. Úselo para comparación continua, donde cada llamada informa el cambio desde la llamada anterior en lugar de desde la captura original.
Example: false
respect_robots
booleanOptionaltrue
Respeta el robots.txt del sitio de destino. Con el valor `true`, una ruta que robots.txt no permita a `CrawlForge` se rechaza con un 403 antes de descargar nada y no se cobran credits. Póngalo en `false` solo para destinos con los que tenga su propio acuerdo: la respuesta incluye entonces una entrada `warnings` y la anulación queda registrada en su API key.
Example: true

Operaciones

Cree una línea base una vez y luego compare con ella tantas veces como quiera.

create_baseline
Obtiene la página, la reduce a texto visible normalizado y la almacena con un hash de contenido y una firma estructural. Las líneas base se conservan 90 días por cuenta de API. Ejecute esto primero: comparar sin una línea base devuelve 404.
compare
Obtiene la página de nuevo y la compara línea por línea con la línea base almacenada. Devuelve el porcentaje de cambio, la similitud estructural, los conteos y muestras de las líneas añadidas y eliminadas. Es la operación predeterminada.

Cómo leer una comparación

Las dos puntuaciones responden preguntas distintas, y la combinación es más útil que cualquiera por separado.

change_percent: cuánto texto se movió
Líneas añadidas más eliminadas como proporción del documento más grande, de 0 a 100. Alto en cualquier actualización real de contenido; también alto en páginas con marcas de tiempo, contadores de visitas o testimonios rotativos, así que espere un piso ruidoso en páginas dinámicas.
structural_similarity: ¿sigue siendo el mismo marcado?
Puntuación de 0 a 1 que compara el vocabulario de etiquetas y la profundidad de anidamiento. Un change_percent alto con una structural_similarity alta es el mismo diseño con texto nuevo. Una puntuación baja significa que la página fue reconstruida, y eso es lo que rompe los selectores.
La detección se basa en texto: la página se obtiene por HTTP y nunca se ejecuta JavaScript, así que el contenido renderizado en el cliente es invisible para este endpoint. Para rastreo renderizado en navegador, monitoreo programado, webhooks, historial de cambios y estadísticas, use el servidor MCP de CrawlForge.
structural_similarity es null, no 0, cuando la línea base almacenada es anterior a este campo. Cero es una puntuación real que significa que no sobrevivió nada estructural, así que una comparación no medida informa null en su lugar. Vuelva a ejecutar create_baseline, o pase update_baseline una vez, para empezar a puntuarla.

Ejemplos de solicitud

terminalBash
# Step 1: capture the baseline (once per url + selector, kept 90 days)
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://competitor.com/pricing",
    "operation": "create_baseline",
    "selector": ".pricing-table"
  }'

# Step 2: compare against it, as often as you like
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://competitor.com/pricing",
    "operation": "compare",
    "selector": ".pricing-table"
  }'

# Rolling comparison: diff against the previous call, not the original capture
curl -X POST https://crawlforge.dev/api/v1/tools/track_changes \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://competitor.com/pricing",
    "operation": "compare",
    "selector": ".pricing-table",
    "update_baseline": true
  }'

Ejemplo de respuesta

200 OK1,180ms
{
"success": true,
"data": {
"operation": "compare",
"url": "https://competitor.com/pricing",
"selector": ".pricing-table",
"changed": true,
"change_percent": 12.5,
"structural_similarity": 0.9713,
"added_count": 4,
"removed_count": 2,
"added_samples": [
"Pro $79 / month",
"Includes 50,000 credits",
"Enterprise",
"Contact sales"
],
"removed_samples": [
"Pro $99 / month",
"Includes 25,000 credits"
],
"baseline_captured_at": "2026-08-01T12:00:00.000Z",
"compared_at": "2026-08-26T14:30:00.000Z",
"baseline_updated": false
},
"credits_used": 3,
"credits_remaining": 997,
"processing_time": 1180
}
Field Descriptions
data.changedVerdadero cuando el hash del contenido difiere del de la línea base: la comprobación más rápida si solo necesita un sí o un no.
data.change_percentLíneas añadidas más eliminadas como porcentaje del documento más grande, de 0 a 100.
data.structural_similaritySimilitud de marcado de 0 a 1. Null cuando la línea base es anterior a este campo.
data.added_samplesHasta 20 líneas añadidas, cada una truncada a 500 caracteres. No es la diferencia completa: use added_count para el total real.
data.removed_samplesHasta 20 líneas eliminadas, con los mismos límites que added_samples.
data.baseline_updatedSi esta llamada sobrescribió la línea base, reflejando el parámetro update_baseline.
credits_used3 credits, cobrados por llamada exitosa. Las llamadas fallidas no se cobran.

Manejo de errores

No se encontró línea base (404 BASELINE_NOT_FOUND)

Llamó a compare antes de almacenar una línea base, o la línea base de 90 días expiró. Ejecute create_baseline para ese par exacto (url, selector) primero.

El selector no coincidió con nada (422 SELECTOR_NOT_FOUND)

El selector CSS no devolvió elementos. Verifíquelo contra el marcado en vivo: un selector que funciona en las herramientas de desarrollo después de ejecutarse JavaScript puede no existir en el HTML sin procesar que obtiene este endpoint.

Destino inalcanzable (502 FETCH_FAILED)

La página devolvió un estado distinto de 2xx. Los sitios con protección antibots suelen terminar aquí: obténgalos con stealth_mode en su lugar.

Monitoreo programado no disponible (501 OPERATION_NOT_AVAILABLE)

operation: "monitor" no está implementado en la API REST alojada. Llame a compare según su propio calendario, o use el servidor MCP de CrawlForge.

Parámetros inválidos (400 VALIDATION_ERROR)

URL mal formada, o un operation fuera de create_baseline, compare y monitor. El arreglo details de la respuesta nombra el campo que falla.

Almacenamiento no disponible (503 STORAGE_UNAVAILABLE)

No se pudo acceder al almacenamiento de líneas base. Reintente: no se cobran credits por llamadas fallidas.

Bloqueado por robots.txt (403 Forbidden)

El robots.txt del sitio de destino no permite esta ruta a CrawlForge. Establezca respect_robots: false para anularlo si tiene su propio acuerdo con el destino: la anulación queda registrada en su API key. La anulación no alcanza a un host incluido en la lista de exclusión permanente de CrawlForge, que se rechaza sea cual sea el valor de respect_robots.

Cómo reducir falsos positivos: Limite el alcance con selector en lugar de rastrear páginas enteras. Una línea base de página completa recoge navegación, pie de página, banners de cookies y contenido rotativo, que suele ser lo que produce un cambio en cada comparación.

Costo en credits

3 credits
3 credits por llamada
Tanto create_baseline como compare cuestan 3 credits. Las llamadas fallidas no se cobran. No hay programador en la API REST, así que la frecuencia de sus comparaciones (y por tanto su costo) está totalmente bajo su control.

Desglose de costos:

create_baseline: 3 credits, una vez por par (url, selector), válido 90 días

compare: 3 credits por llamada

Ejemplo de costo de sondeo, por URL:

Cada hora: 24 llamadas/día = 72 credits/día

Cada 6 horas: 4 llamadas/día = 12 credits/día

Diario: 1 llamada/día = 3 credits/día

Recomendaciones por plan:

Plan Free: 1.000 credits de prueba únicos = unas 5 URL comparadas cada 6 horas durante un mes

Plan Hobby: 5.000 credits/mes = unas 13 URL comparadas cada 6 horas ($19/mes)

Plan Professional: 50.000 credits/mes = unas 138 URL comparadas cada 6 horas ($99/mes)

Herramientas relacionadas

fetch_url
Obtención HTTP sin procesar cuando quiera comparar el contenido usted mismo (1 credit)
extract_content
Extraiga el contenido principal antes de comparar, para páginas ruidosas (2 credits)
stealth_mode
Alcance páginas con protección antibots que aquí devuelven 502 (5 credits)
batch_scrape
Obtenga muchas URL en una sola llamada (5 credits por URL)
¿Listo para probar track_changes? Regístrese gratis y obtenga 1.000 credits para capturar la línea base de sus primeras páginas.

Pie de página

CrawlForge MCP

Web scraping empresarial para agentes de IA. 29 herramientas MCP especializadas diseñadas para desarrolladores modernos que crean sistemas inteligentes.

Producto

  • Funciones
  • Playground
  • Precios
  • Casos de uso
  • Integraciones
  • Alternativas
  • Registro de cambios

Recursos

  • Primeros pasos
  • Referencia de la API
  • Plantillas
  • Guías
  • Blog
  • Glosario
  • Preguntas frecuentes
  • Mapa del sitio

Desarrolladores

  • Protocolo MCP
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

Empresa

  • Acerca de
  • Contacto
  • Privacidad
  • Términos
  • Uso aceptable
  • Cookies

Mantente al día

Recibe las últimas novedades sobre nuevas herramientas y funciones.

Creado con Next.js y el protocolo MCP

© 2025-2026 CrawlForge. Todos los derechos reservados.