Screaming Frog suele asociarse a una aplicación de escritorio. Abres, lanzas un rastreo, revisas las pestañas y cierras. Pero esa es solo una pequeña parte de lo que puede hacer.
Existe otra forma de utilizarla, mucho menos conocida, en la que deja de depender de un ordenador para ejecutarse de forma autónoma en un servidor, incluso de madrugada y sin intervención humana.

Ese es el terreno del modo Headless y la línea de comandos (CLI).
Al ejecutarse sin interfaz gráfica, Screaming Frog deja de ocupar tu pantalla para ocupar un eslabón: el rastreo pasa a ser una etapa más dentro de una cadena que no lo necesita a él en primer plano ni a ti delante.
Se integra en tareas programadas con cron, en flujos de n8n, en scripts de Python o PowerShell, y encadena sus exportaciones con los procesos que vengan después.
A esa integración se suma otra capa: cada rastreo puede enriquecerse con datos de Search Console, GA4, PageSpeed, métricas de enlaces o extracciones personalizadas.
No obstante, antes de llegar ahí hay que superar el primer obstáculo: conseguir que Screaming Frog funcione correctamente en un VPS.
Esta guía recoge las notas y procedimientos que voy validando mientras aprendo a trabajar con el modo Headless y la CLI.
No es la documentación oficial de Screaming Frog ni pretende serlo: es una referencia práctica, construida a base de prueba, error y muchos logs, con la esperanza de que a otros les evite las horas que a mí nadie me ahorró.
Antes de empezar, necesitarás dos cosas:
- Una licencia de Screaming Frog SEO Spider (el modo Headless solo está disponible en la versión de pago).
- Un VPS al que puedas acceder por SSH.
Instalación de Screaming Frog SEO Spider en un VPS
Este es el primer detalle importante que conviene entender. La instalación en sí no es complicada.
La diferencia es que Screaming Frog no forma parte de los repositorios habituales de Linux.
Aunque no es un problema, sí cambia ligeramente la forma de instalarlo y de mantenerlo actualizado.
Esa diferencia explica varias de las decisiones que veremos durante la instalación y también la forma de mantener Screaming Frog actualizado en el futuro.
En su lugar, el paquete debe descargarse desde el sitio oficial de Screaming Frog e instalarse manualmente.
Aunque apt será el encargado de instalar el programa y resolver sus dependencias, el paquete no procederá de un repositorio configurado en el sistema, sino de una dirección que tú le indicarás.
Esta diferencia tiene una consecuencia importante: el sistema no actualizará automáticamente Screaming Frog cuando aparezcan nuevas versiones.
Más adelante veremos cómo solucionar este inconveniente.
Descargar el paquete del software Screaming Frog desde el servidor
No es necesario descargar el archivo .deb a tu ordenador para volver a subirlo después al VPS.
Como el paquete está disponible desde una URL pública, lo más sencillo es que el propio servidor lo descargue directamente desde la web de Screaming Frog.
Asegúrate únicamente de elegir el paquete correspondiente a la arquitectura de tu servidor (amd64 para la mayoría de VPS con procesadores Intel o AMD, y arm64 para servidores ARM).
Instalar el paquete con apt
Aunque pueda parecer un detalle menor, conviene utilizar apt en lugar de dpkg.
Ambos pueden instalar un paquete .deb, pero apt tiene la ventaja de resolver automáticamente las dependencias necesarias cuando alguna de ellas no esté presente en el sistema.
Ejecuta los siguientes comandos para descargar el paquete e instalarlo en el sistema:
wget https://download.screamingfrog.co.uk/products/seo-spider/screamingfrogseospider_24.3_amd64.deb
sudo apt install ./screamingfrogseospider_24.3_amd64.deb
Sustituye 24.3 por la versión disponible en el momento de realizar la instalación.
Fíjate también en el prefijo ./ delante del nombre del archivo.
Tiene una función importante: indica a apt que el paquete se encuentra en el directorio actual.
Si se omite, apt intentará buscar un paquete con ese nombre en los repositorios configurados del sistema y mostrará un error indicando que no puede localizarlo.
Aunque el paquete no proceda de ningún repositorio, apt seguirá resolviendo correctamente las dependencias necesarias.
En el caso de Screaming Frog, Java no es una de ellas, ya que viene incluido en el propio paquete.
Una vez finalizada la instalación, ya podrás ejecutar la CLI de Screaming Frog desde la terminal mediante el comando:
screamingfrogseospider
Consejo: si apt muestra un error durante la instalación, no pases inmediatamente a dpkg. En la mayoría de los casos, el propio mensaje de apt indica qué dependencia falta o qué acción debes realizar para resolver el problema.
Licencia y EULA en modo Headless, sin interfaz gráfica
La instalación no termina cuando el programa queda instalado.
Para poder utilizar el modo Headless también es necesario registrar la licencia y aceptar el acuerdo de licencia (EULA).
En un entorno con interfaz gráfica estos pasos se realizan desde la propia aplicación, pero en un VPS deben hacerse manualmente mediante archivos de configuración.
En un VPS no existe una ventana donde introducir la licencia.
Este paso se realiza mediante un fichero de configuración y solo es necesario hacerlo una vez.
La licencia se almacena en el fichero ~/.ScreamingFrogSEOSpider/licence.txt. La primera línea contiene el nombre de usuario y la segunda, la clave de licencia.
Cuidado con las mayúsculas. El nombre es .ScreamingFrogSEOSpider, con esas mayúsculas exactas. Y aquí Linux te tiende una trampa doble: la ruta en minúsculas también existe — es ~/.screamingfrogseospider, el fichero donde se configura la RAM, que veremos enseguida —, así que al equivocarte no recibes un «no existe» que te ponga sobre aviso, sino errores desconcertantes de otro tipo: fichero y carpeta son objetos distintos con nombre casi idéntico.
Copia el nombre tal cual y te ahorras pelearte con una ruta que responde, pero no es la que buscas.
mkdir -p ~/.ScreamingFrogSEOSpider
printf "tu-usuario\nTU-CLAVE-DE-LICENCIA\n" > ~/.ScreamingFrogSEOSpider/licence.txt
Igual que ocurre con la licencia, la aceptación del acuerdo de licencia (EULA) también debe realizarse mediante un fichero de configuración. Basta con añadir la línea eula.accepted al archivo spider.config de esa misma carpeta.
¿Cómo sabes que la aceptación surtió efecto? Screaming Frog deja su propia huella: tras la primera ejecución genera los ficheros eula.properties y eula.txt en esa misma carpeta, con la versión del acuerdo y accepted=true.
Si están ahí, el trámite quedó cerrado.
Cuando en una versión futura cambie el EULA, el propio programa lo indicará durante la ejecución, mostrando el número de versión del acuerdo que espera encontrar.
Aceptar el EULA desde un VPS fue probablemente la parte que más tiempo me llevó durante todo el proceso de instalación.
Si se te resiste, no desesperes: una vez que entiendes cómo funciona, solo tendrás que hacerlo una única vez.

Memoria y modo de almacenamiento para rastreos Headless
Una vez instalado y licenciado, merece la pena revisar dos parámetros que influyen directamente en el rendimiento del rastreo:
- RAM asignada: Screaming Frog se ejecuta sobre Java y la memoria máxima disponible se controla mediante el parámetro
-Xmxdel fichero~/.screamingfrogseospider. Por ejemplo,-Xmx4glimita Java a un máximo de 4 GB de RAM. Como regla práctica, deja siempre memoria suficiente para el sistema operativo. - Modo base de datos: En sitios con decenas de miles de URLs, utilizar el modo de almacenamiento en base de datos (Database Storage) ayuda a evitar agotar la memoria RAM. Este ajuste se guarda en el fichero de configuración
.seospiderconfig, que veremos en el siguiente apartado. A cambio de utilizar más disco, reduce considerablemente el consumo de memoria RAM.
En un caso real, un rastreo de 10.041 URLs en modo memoria con -Xmx2g tocó techo en el 12 % (unos 240 MB).
Ojo con generalizar: eso es con 10.000 URLs.
El modo memoria escala mal, y en sitios de cientos de miles de URLs ese margen desaparece rápido.
Por eso, a partir de cierto tamaño, el modo base de datos deja de ser opcional.

El primer rastreo Headless desde la CLI
Con el programa instalado, licenciado y configurado, ya puedes ejecutar el primer rastreo en modo Headless. Un ejemplo completo sería el siguiente:
nohup /usr/bin/screamingfrogseospider \
--headless \
--config "/srv/sf_config/blackflags-suave.seospiderconfig" \
--crawl https://temassobresalud.com \
--export-tabs "Internal:All" \
--output-folder "/srv/sf_exports" \
--export-format csv \
--timestamped-output \
--save-crawl \
> /srv/sf_exports/sf_log_both.txt 2>&1 &
Aunque el comando pueda parecer largo, cada flag de la CLI cumple una función concreta:
--headlessinicia Screaming Frog sin interfaz gráfica.--configes el fichero que lleva el mandato del rastreo: velocidad, modo de almacenamiento y APIs. En headless no ajustas nada sobre la marcha; SF obedece lo que diga ese.seospiderconfig. En este ejemplo,blackflags-suavelimita el rastreo a 1 URL/s.--output-folderjunto con--timestamped-outputcrea una carpeta independiente para cada rastreo, lo que facilita comparar ejecuciones con el paso del tiempo.--save-crawlguarda el archivo.seospiderpara poder abrir posteriormente el rastreo desde la versión de escritorio (su inverso,--load-crawl, permite recargar un rastreo ya guardado).--export-tabspermite exportar en CSV únicamente las pestañas que te interesen.
El resultado es una carpeta independiente para cada rastreo, con el rastreo completo, las exportaciones en CSV y toda la información preparada para analizarla manualmente o integrarla en automatizaciones.
El uso de nohup permite que el rastreo continúe ejecutándose aunque cierres la sesión SSH, mientras que la redirección final guarda tanto la salida estándar como los posibles mensajes de error en un único archivo de registro.
Y aquí va un detalle que cuesta ver: en headless no trabajas a ciegas. Cada cierto tiempo, SF escribe una línea Crawl update con la velocidad real del rastreo (mAverageUrlsPerSecond).
No hace falta restar timestamps a mano: el config te dice a qué velocidad le permitiste ir; esta línea te dice a qué velocidad fue de verdad.
En un sitio rápido coinciden.
En uno lento, el log baja del tope, y ese hueco es información. La diferencia con la GUI es sutil pero real: la interfaz te pone ese número delante quieras o no; el log te lo deja ahí y tú decides si lo miras.

El fallo silencioso de los exports (y el –help que lo evita)
El síntoma es desconcertante: el log termina en verde, «Application Exited», todo en orden… y en la carpeta de exports no hay nada nuevo.
Ni CSV, ni siquiera la carpeta con timestamp de esa ejecución. Si el nombre que pasas a --export-tabs o --bulk-export no coincide carácter a carácter con la etiqueta de la pestaña, Screaming Frog completa el rastreo y descarta en silencio el export mal escrito.
Lo comprobé provocándolo: pedí «Internal:Todo» en lugar de «Internal:All», y el log no registró ni un aviso — grepear errores solo devuelve falsos positivos. En un cron nocturno, eso es creer que tienes datos hasta la mañana en que los necesitas.
El antídoto vive en la propia CLI. En Headless no existen pestañas donde comprobar una etiqueta: los nombres válidos son, exactamente, los que imprima --help en tu versión instalada.
screamingfrogseospider --help export-tabs lista las pestañas exportables, y el mismo patrón sirve para --help bulk-export y --help save-report. De ahí se copian; de memoria, jamás.
Conectar APIs y enriquecer los rastreos
Una de las grandes ventajas del modo Headless es que puede reutilizar la misma configuración de APIs que utilizas en la versión de escritorio.
Gracias a ello, cada URL rastreada puede enriquecerse con datos procedentes de Google Search Console, Google Analytics 4, PageSpeed Insights, Ahrefs y otros servicios compatibles.
El rastreo deja de limitarse al estado HTTP o a los enlaces internos y pasa a incorporar métricas de visibilidad, rendimiento y uso real.
La configuración de estas integraciones se realiza una sola vez en la versión de escritorio, se guarda en un fichero .seospiderconfig y posteriormente se reutiliza desde el VPS en cada ejecución.
Sobre el comando del primer rastreo, enriquecerlo con Google son dos flags más:
--use-google-analytics-4 "Cuenta GA4" "Mi cuenta" "temassobresalud.com" "All Data Streams" \
--use-google-search-console "Cuenta GSC" "https://temassobresalud.com/"
Cada parámetro tiene su porqué —la cuenta, la propiedad, el data stream— y las credenciales se configuran una única vez.
En un próximo artículo veremos paso a paso cómo conectar estas APIs, subir las credenciales al servidor y ejecutar rastreos enriquecidos en modo Headless. (Aquí irá el enlace cuando el artículo esté publicado).
Programar rastreos Headless con cron
Una de las principales ventajas de ejecutar Screaming Frog en modo Headless en un VPS es poder programar rastreos automáticos mediante cron.
Así puedes lanzar auditorías periódicas sin depender de que tu ordenador esté encendido.
Un ejemplo sería el siguiente:
0 2 * * * /usr/bin/screamingfrogseospider --headless --crawl https://tudominio.com --config /home/usuario/configs/rastreo-con-apis.seospiderconfig --output-folder /home/usuario/crawls --timestamped-output --export-tabs "Internal:All" >> /home/usuario/crawls/cron.log 2>&1
Dos recomendaciones importantes:
- Guarda siempre el archivo de log: cuando un rastreo nocturno falla, ese fichero suele ser la única pista para averiguar qué ocurrió. Además de la redirección del ejemplo, la CLI ofrece
--save-logspara volcar los registros a una carpeta concreta. - Limita la velocidad de rastreo en la configuración: un rastreo demasiado agresivo puede hacer que el servidor de destino interprete tu auditoría como un comportamiento anómalo o incluso como un ataque.

Mantener Screaming Frog Headless actualizado
Como adelanté al principio, instalar Screaming Frog desde fuera de los repositorios tiene una consecuencia importante: apt no actualizará Screaming Frog solo.
Cuando salga una versión nueva, el procedimiento es repetir la descarga y la instalación:
wget https://download.screamingfrog.co.uk/products/seo-spider/screamingfrogseospider_25.2_amd64.deb
sudo apt install ./screamingfrogseospider_25.2_amd64.deb
La configuración, la licencia y el perfil sobreviven a la actualización: se almacenan en tu carpeta de usuario, no en el paquete.
Un truco que debo agradecer a Chris Lever, adaptado aquí a Linux: guarda la salida de --help en un fichero por versión (por ejemplo, screamingfrogseospider --help export-tabs > help-25.2.txt) y haz un diff al actualizar.
Detectarás flags nuevos o renombrados antes de que rompan tu pipeline, y no cuando el cron vuelva con la carpeta vacía.
Un último consejo: no actualices la víspera de un rastreo importante. Instala primero la nueva versión, ejecuta un rastreo de prueba y, cuando compruebes que todo funciona correctamente, vuelve a activar la tarea programada.
El siguiente paso
Llegados a este punto, y gracias a la CLI, Screaming Frog deja de ser una aplicación de escritorio para convertirse en un proceso automatizado que trabaja por sí solo desde el VPS.
Ese cambio de enfoque es, probablemente, la mayor ventaja de utilizar la versión Headless.
A partir de aquí empieza otra historia: enriquecer los rastreos agregando las APIs GSC & GA4, procesar las exportaciones e integrarlas en automatizaciones. Esa parte merece una guía propia.




