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
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.
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.
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.
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.
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.
Tipos de eventos#
| Evento | Descripción |
|---|---|
crawl.started | Se emite cuando comienza el rastreo |
crawl.page | Se emite por cada página extraída correctamente |
crawl.completed | Se emite cuando finaliza el rastreo |
crawl.failed | Se 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.
- Obtén tu secreto de webhook en la pestaña Advanced de la configuración de tu cuenta
- Extrae la firma del encabezado
X-Firecrawl-Signature - Calcula el HMAC-SHA256 del cuerpo sin procesar (raw) de la solicitud usando tu secreto
- Compárala con el encabezado de la firma usando una función segura frente a ataques de temporización
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ámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
url | string | (obligatorio) | La URL inicial desde la que se realizará el rastreo |
limit | integer | 10000 | Número máximo de páginas que se rastrearán |
maxDiscoveryDepth | integer | (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. |
includePaths | string[] | (ninguno) | Patrones regex de rutas de URL que se incluirán. Solo se rastrean las rutas que coinciden. |
excludePaths | string[] | (ninguno) | Patrones regex de rutas de URL que se excluirán del rastreo |
regexOnFullURL | boolean | false | Hace coincidir includePaths/excludePaths con la URL completa (incluidos los parámetros de consulta) en lugar de solo con la ruta |
crawlEntireDomain | boolean | false | Sigue enlaces internos a URL del mismo nivel o superiores, no solo a rutas hijas |
allowSubdomains | boolean | false | Sigue enlaces a subdominios del dominio principal |
allowExternalLinks | boolean | false | Sigue 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. |
sitemap | string | "include" | Gestión del sitemap: "include" (predeterminado), "skip" o "only" |
ignoreQueryParameters | boolean | false | Evita volver a extraer la misma ruta con distintos parámetros de consulta |
ignoreRobotsTxt | boolean | false | Ignora las reglas de robots.txt del sitio web. Solo Enterprise — contacta con support@firecrawl.com para habilitarlo. |
robotsUserAgent | string | (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. |
delay | number | (ninguno) | Retraso en segundos entre extracciones para respetar los límites de tasa. Establecer esto fuerza la concurrencia a 1. |
maxConcurrency | integer | (ninguno) | Número máximo de extracciones concurrentes. De forma predeterminada, usa el límite de concurrencia de tu equipo. |
scrapeOptions | object | (ninguno) | Opciones aplicadas a cada página extraída (formatos, proxy, caché, acciones, etc.) |
webhook | object | (ninguno) | Configuración del webhook para notificaciones en tiempo real |
prompt | string | (ninguno) | Prompt en lenguaje natural para generar opciones de rastreo. Los parámetros establecidos explícitamente anulan los equivalentes generados. |
Detalles importantes#
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 establecessitemap: "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
datacontiene 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ódigoEXTERNAL_LINK. Se siguen las redirecciones hasta su destino, incluido un enlace que se resuelve en su URL canónica (por ejemplo,http → httpso la variantewww), 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, establecemaxConcurrencyen1o usasitemap: "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.

