Skip to main content

Rastrear

Rastrea recursivamente un sitio web y obtén contenido de cada página
9 min read

Rastrear envía una URL a Firecrawl y descubre y extrae de forma recursiva todas las subpáginas accesibles. Gestiona automáticamente sitemaps, renderizado de JavaScript y límites de tasa, y devuelve Markdown limpio o datos estructurados para cada página.

  • Descubre páginas mediante sitemap y recorrido recursivo de enlaces
  • Admite filtrado por ruta, límites de profundidad y control de subdominios/enlaces externos
  • Devuelve resultados mediante polling, WebSocket o webhook
Pruébalo en el Playground

Prueba el rastreo en el playground interactivo, sin escribir código.

Instalación#

Uso básico#

Envía un trabajo de rastreo llamando a POST /v2/crawl con una URL inicial. El endpoint devuelve un ID de trabajo que usas para consultar los resultados.

Info

Cada página rastreada consume 1 crédito. El limit de rastreo predeterminado es de 10.000 páginas. Antes de comenzar, el endpoint de rastreo comprueba que tus créditos restantes alcancen para cubrir el limit; si no es así, devuelve un error 402 (Pago requerido). Establece un limit más bajo que se ajuste al tamaño de rastreo previsto (por ejemplo, limit: 100) para evitarlo. Se aplican créditos adicionales para ciertas opciones: el modo JSON cuesta 4 créditos adicionales por página y el análisis de PDF cuesta 1 crédito por página de PDF.

Opciones de scraping#

Todas las opciones del endpoint Scrape están disponibles en rastreo mediante scrapeOptions (JS) / scrape_options (Python). Se aplican a cada página que el crawler raspa, incluidos formatos, proxy, caché, acciones, ubicación y etiquetas.

Verificar el estado del rastreo#

Usa el ID del trabajo para consultar el estado del rastreo y recuperar los resultados.

Note

Los resultados de los trabajos están disponibles a través de la API durante 24 horas después de su finalización. Después de este periodo, aún puedes ver tu historial de rastreos y resultados en los activity logs.

Note

Las páginas en el array data de los resultados del rastreo son páginas que Firecrawl extrajo correctamente, incluso si el sitio de destino devolvió un error HTTP como 404. El campo metadata.statusCode muestra el código de estado HTTP del sitio de destino. Para recuperar las páginas que Firecrawl no pudo extraer (por ejemplo, errores de red, tiempos de espera o bloqueos por robots.txt), usa el endpoint dedicado Get Crawl Errors (GET /crawl/{id}/errors).

Manejo de respuestas#

La respuesta varía según el estado del rastreo. Para respuestas incompletas o de gran tamaño que superen los 10 MB, se proporciona un parámetro de URL next. Debes solicitar esta URL para obtener los siguientes 10 MB de datos. Si el parámetro next no está presente, indica el final de los datos del rastreo.

Info

Los parámetros skip y next solo son relevantes cuando se consume la API directamente. Si usas el SDK, la paginación se gestiona automáticamente y todos los resultados se devuelven de una vez.

Métodos del SDK#

Hay dos maneras de usar crawl con el SDK.

Rastrear y esperar#

El método crawl espera a que el rastreo termine y devuelve la respuesta completa. Gestiona la paginación automáticamente. Esto se recomienda para la mayoría de los casos de uso.

La respuesta incluye el estado del rastreo y todos los datos extraídos:

Iniciar y luego verificar el estado#

El método startCrawl / start_crawl devuelve de inmediato un ID de rastreo. Luego puedes verificar el estado manualmente. Esto es útil para rastreos de larga duración o lógica de sondeo personalizada.

La respuesta inicial devuelve el ID del trabajo:

Resultados en tiempo real con WebSocket#

El método watcher proporciona actualizaciones en tiempo real a medida que se rastrean las páginas. Inicia un rastreo y luego suscríbete a los eventos para procesar los datos de inmediato.

Webhooks#

Puedes configurar webhooks para recibir notificaciones en tiempo real a medida que avanza el rastreo. Esto te permite procesar las páginas conforme se van extrayendo, en lugar de esperar a que finalice todo el rastreo.

cURL

Tipos de eventos#

EventoDescripción
crawl.startedSe emite cuando comienza el rastreo
crawl.pageSe emite por cada página extraída correctamente
crawl.completedSe emite cuando finaliza el rastreo
crawl.failedSe emite si el rastreo encuentra un error

Carga útil#

Verificación de firmas de webhooks#

Cada solicitud de webhook de Firecrawl incluye un encabezado X-Firecrawl-Signature que contiene una firma HMAC-SHA256. Verifica siempre esta firma para asegurarte de que el webhook sea auténtico y no haya sido manipulado.

  1. Obtén tu secreto de webhook en la pestaña Advanced de la configuración de tu cuenta
  2. Extrae la firma del encabezado X-Firecrawl-Signature
  3. Calcula el HMAC-SHA256 del cuerpo sin procesar (raw) de la solicitud usando tu secreto
  4. Compárala con el encabezado de la firma usando una función segura frente a ataques de temporización
Warning

Nunca proceses un webhook sin verificar primero su firma. El encabezado X-Firecrawl-Signature contiene la firma en el formato: sha256=abc123def456...

Para ver ejemplos completos de implementación en JavaScript y Python, consulta la documentación de seguridad de webhooks. Para consultar la documentación completa sobre webhooks, incluidos payloads de eventos detallados, estructura de payloads, configuración avanzada y solución de problemas, consulta la documentación de webhooks.

Referencia de configuración#

El conjunto completo de parámetros disponibles al enviar un trabajo de rastreo:

ParámetroTipoPredeterminadoDescripción
urlstring(obligatorio)La URL inicial desde la que se realizará el rastreo
limitinteger10000Número máximo de páginas que se rastrearán
maxDiscoveryDepthinteger(ninguno)Profundidad máxima desde la URL raíz según los saltos de descubrimiento de enlaces, no la cantidad de segmentos / en la URL. Cada vez que se encuentra una nueva URL en una página, se le asigna una profundidad una unidad mayor que la de la página en la que fue descubierta. El sitio raíz y las páginas del sitemap tienen una profundidad de descubrimiento de 0. Las páginas en la profundidad máxima igualmente se extraen, pero no se siguen los enlaces que contienen.
includePathsstring[](ninguno)Patrones regex de rutas de URL que se incluirán. Solo se rastrean las rutas que coinciden.
excludePathsstring[](ninguno)Patrones regex de rutas de URL que se excluirán del rastreo
regexOnFullURLbooleanfalseHace coincidir includePaths/excludePaths con la URL completa (incluidos los parámetros de consulta) en lugar de solo con la ruta
crawlEntireDomainbooleanfalseSigue enlaces internos a URL del mismo nivel o superiores, no solo a rutas hijas
allowSubdomainsbooleanfalseSigue enlaces a subdominios del dominio principal
allowExternalLinksbooleanfalseSigue enlaces a sitios web externos. Los enlaces externos se siguen un salto (no se rastrean sus propios enlaces), y se omiten los enlaces que apuntan a la página de inicio de un sitio externo — consulta Enlaces externos.
sitemapstring"include"Gestión del sitemap: "include" (predeterminado), "skip" o "only"
ignoreQueryParametersbooleanfalseEvita volver a extraer la misma ruta con distintos parámetros de consulta
ignoreRobotsTxtbooleanfalseIgnora las reglas de robots.txt del sitio web. Solo Enterprise — contacta con support@firecrawl.com para habilitarlo.
robotsUserAgentstring(ninguno)Cadena User-Agent personalizada para evaluar robots.txt. Cuando se establece, robots.txt se obtiene con este User-Agent y las reglas se comparan con él en lugar del predeterminado. Solo Enterprise — contacta con support@firecrawl.com para habilitarlo.
delaynumber(ninguno)Retraso en segundos entre extracciones para respetar los límites de tasa. Establecer esto fuerza la concurrencia a 1.
maxConcurrencyinteger(ninguno)Número máximo de extracciones concurrentes. De forma predeterminada, usa el límite de concurrencia de tu equipo.
scrapeOptionsobject(ninguno)Opciones aplicadas a cada página extraída (formatos, proxy, caché, acciones, etc.)
webhookobject(ninguno)Configuración del webhook para notificaciones en tiempo real
promptstring(ninguno)Prompt en lenguaje natural para generar opciones de rastreo. Los parámetros establecidos explícitamente anulan los equivalentes generados.

Detalles importantes#

Warning

De forma predeterminada, el rastreo ignora los subenlaces que no son descendientes de la URL que proporcionas. Por ejemplo, website.com/other-parent/blog-1 no se devolvería si hicieras rastreo de website.com/blogs/. Usa el parámetro crawlEntireDomain para incluir rutas hermanas y superiores. Para hacer rastreo de subdominios como blog.website.com al hacer rastreo de website.com, usa el parámetro allowSubdomains.

  • Descubrimiento del sitemap: De forma predeterminada, el crawler incluye el sitemap del sitio web para descubrir URL (sitemap: "include"). Si estableces sitemap: "skip", solo se encontrarán las páginas accesibles mediante enlaces HTML desde la URL raíz. Recursos como PDF o páginas muy anidadas incluidas en el sitemap, pero no enlazadas directamente desde el HTML, no se encontrarán. Para obtener la máxima cobertura, mantén la configuración predeterminada.
  • Uso de créditos: Cada página rastreada cuesta 1 crédito. El modo JSON añade 4 créditos por página y el análisis de PDF cuesta 1 crédito por cada página del PDF.
  • Expiración de resultados: Los resultados del trabajo están disponibles a través de la API durante 24 horas después de completarse. Después de ese plazo, consulta los resultados en los activity logs.
  • Errores de rastreo: El array data contiene las páginas que Firecrawl extrajo correctamente. Usa el endpoint Get Crawl Errors para recuperar las páginas que fallaron debido a errores de red, tiempos de espera o bloqueos de robots.txt.
  • Enlaces externos: Con allowExternalLinks: true, el crawler sigue los enlaces que apuntan fuera de tu dominio y scrapea cada página enlazada una vez; después no rastrea los enlaces encontrados en esas páginas externas. Los enlaces a la página de inicio de un sitio externo (una URL raíz sin ruta, por ejemplo, https://example.com/) se omiten intencionadamente para evitar incluir un sitio no relacionado completo; estos aparecen en Get Crawl Errors con el código EXTERNAL_LINK. Se siguen las redirecciones hasta su destino, incluido un enlace que se resuelve en su URL canónica (por ejemplo, http → https o la variante www), por lo que solo se omiten las redirecciones que llegan a una página de inicio externa.
  • Resultados no deterministas: Los resultados del rastreo pueden variar entre ejecuciones con la misma configuración. Las páginas se extraen de forma concurrente, por lo que el orden en que se descubren los enlaces depende de la latencia de la red y de qué páginas terminan de cargarse primero. Esto significa que diferentes ramas de un sitio pueden explorarse en distinta medida cerca del límite de profundidad, especialmente con valores altos de maxDiscoveryDepth. Para obtener resultados más deterministas, establece maxConcurrency en 1 o usa sitemap: "only" si el sitio tiene un sitemap completo.

¿Eres un agente de IA que necesita una clave de API de Firecrawl? Consulta firecrawl.dev/agent-onboarding/SKILL.md para obtener instrucciones de incorporación automatizada.