- 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
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
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
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
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
crawl con el SDK.
Rastrear y esperar
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.
Iniciar y luego verificar el estado
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.
Resultados en tiempo real con WebSocket
Webhooks
cURL
Tipos de eventos
Carga útil
Verificación de firmas de webhooks
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
Ejecución y contabilización de resultados
Lectura de los contadores de estado
GET /v2/crawl/{id}) incluye los contadores que describen la ejecución:
El array
data contiene únicamente las páginas que Firecrawl extrajo correctamente. Las páginas que se intentaron pero nunca produjeron un resultado no aparecen en data: consúltalas en Get Crawl Errors, más abajo.
Paginar los resultados
next contiene la URL de la siguiente página de resultados.
next no es solo una señal de que «quedan más datos»: también se emite siempre que status no sea completed, por lo que un crawl en estado terminal failed o cancelled puede devolver una URL en next aunque no queden más resultados. No uses la ausencia de next como condición de salida del bucle: en un crawl fallido o cancelado nunca desaparece.
La condición terminal es el campo de estado. Para leer una ejecución hasta el final:
- Haz poll a
GET /v2/crawl/{id}hasta questatusseacompleted,failedocancelled. - Mientras
nextesté presente y la última página haya devuelto un arraydatano vacío, siguenextpara recopilar los resultados restantes. - Detente cuando
nextno esté presente o cuando una página no devuelva documentos nuevos.
Páginas fallidas y bloqueadas
GET /v2/crawl/{id}/errors) registra las páginas que no llegaron a data. Devuelve dos arrays:
errors— trabajos de scraping con error, cada uno conid,url,error(el mensaje de error) y untimestampdel fallo. Son páginas que Firecrawl no pudo extraer: errores de red, tiempos de espera agotados y similares. Los enlaces a la página de inicio de un sitio externo que se omitieron intencionalmente se informan aquí con el código de errorEXTERNAL_LINK.robotsBlocked— URL que se intentaron procesar, pero fueron bloqueadas por el robots.txt del sitio.
No se garantiza que esta lista sea una enumeración completa de todos los fallos: actualmente algunas clases de fallos internos se filtran de
errors antes de construir la respuesta. Tómala como el registro de fallos que Firecrawl informa, no como una prueba de que no ocurrió nada más. El código de error mencionado arriba (EXTERNAL_LINK) se devuelve hoy en los objetos de error, pero aún no forma parte del schema publicado de GET /crawl/{id}/errors; está pendiente de una actualización de la referencia de la API.data con el código de estado del sitio en metadata.statusCode.
Hasta dónde puede llegar el rastreador
- Solo rutas hijas de forma predeterminada. El crawl ignora los subenlaces que no son hijos de la URL que proporcionas. Usa
crawlEntireDomainpara rutas hermanas y superiores,allowSubdomainspara subdominios yallowExternalLinkspara seguir enlaces fuera del dominio. includePaths/excludePathsse aplican al pathname de la URL, como patrones de expresión regular; no a la URL completa ni a los parámetros de consulta. EstableceregexOnFullURL: truepara que la coincidencia se haga contra la URL completa, incluidas las cadenas de consulta. La URL inicial también se compara conincludePaths: si no coincide, el crawl puede devolver 0 páginas.- Modo sitemap. Con el valor predeterminado
sitemap: "include", las URL provienen del sitemap y del descubrimiento recursivo de enlaces."skip"usa únicamente los enlaces HTML, por lo que se omiten las páginas que solo están en el sitemap, como PDF o páginas muy anidadas."only"rastrea el sitemap y la URL inicial, y no descubre enlaces a partir del HTML. maxDiscoveryDepthlimita cuántos saltos de descubrimiento de enlaces se siguen desde la raíz. Las páginas que están en la profundidad máxima sí se extraen, pero no se siguen los enlaces encontrados en ellas.limitlimita la cantidad de páginas y su valor predeterminado es10000.ignoreQueryParametersevita volver a extraer la misma ruta con distintos parámetros de consulta.- Se respeta robots.txt salvo que
ignoreRobotsTxtesté habilitado (solo Enterprise).
maxConcurrency adopta de forma predeterminada el límite de concurrencia de tu equipo, definido por tu plan; consulta Límites de tasa.
Cuando los resultados varían entre ejecuciones
maxDiscoveryDepth.
Para que una ejecución sea más reproducible:
- Establece
maxConcurrencyen1. Como indica la referencia de configuración,maxConcurrencyes el «número máximo de scrapes concurrentes»: limita cuántas solicitudes están en curso a la vez. Eso reduce el entrelazado dependiente de la latencia, pero no elimina la variación entre ejecuciones: el descubrimiento del sitemap se encola fuera de ese límite, los sitemaps anidados se obtienen como trabajos independientes y el arraydatadevuelto se ordena por hora de finalización y no por orden de descubrimiento. Establecerdelaytambién fuerza la concurrencia a 1. - Usa
sitemap: "only"si el sitio tiene un sitemap completo, de modo que el conjunto de URL provenga del sitemap y no del descubrimiento de enlaces.
Cómo saber cuándo ha terminado un crawl
crawl.page se emite por cada página extraída correctamente, y crawl.completed (o crawl.failed) se emite cuando finaliza la ejecución. Los resultados del trabajo se pueden recuperar desde la API durante las 24 horas posteriores a su finalización; pasado ese plazo, consúltalos en los activity logs.
Referencia de configuración
Detalles importantes
- Descubrimiento del sitemap: De forma predeterminada, el rastreador 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 rastreador 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, porque las páginas se extraen de forma concurrente y el orden de descubrimiento de enlaces depende de la latencia de la red. Consulta Ejecución y contabilización de resultados para saber qué varía y cómo hacer que una ejecución sea más reproducible.
¿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.

