Aproximadamente el 20% de los sitios web que necesitas scrapeary utilizan Cloudflare, un robusto sistema de protección anti-bots que puede bloquearte fácilmente. Indeed está entre los sitios protegidos por el sistema anti-bots de Cloudflare, presentando su conocido desafío "Verifica que eres humano" o "Verificación adicional requerida". En este artículo, exploraremos posibles soluciones para eludir sus medidas anti-bots con el scraping y extraer con éxito la página de empleos y la página de la empresa.
Resumen del scraping en Indeed
Indeed está estructurado en varias secciones:
- Páginas de resultados de búsqueda
- Páginas de listados de empleo
- Páginas de perfil de empresa
¿Qué es el data scraping?
El data scraping, o "web scraping," se refiere a la extracción automatizada de datos de un sitio web mediante software o scripts. Este proceso permite a las empresas recopilar grandes cantidades de información rápidamente, que puede incluir listados de empleo, detalles de empresas e incluso perfiles de usuarios. Por ejemplo, los datos extraídos de Indeed pueden ser valiosos para análisis, reclutamiento e investigación competitiva, pero deben adherirse a estrictos marcos legales.
Comprendiendo la importancia del data scraping en Indeed
El data scraping permite a empresas e investigadores recopilar información valiosa de la plataforma de Indeed, como tendencias laborales, salarios, requisitos de habilidades y datos de empleadores. Esta información ayuda a tomar decisiones informadas, impulsar la investigación de mercado y crear servicios innovadores.
¿Cómo utilizan las empresas los datos que recuperan?
Las empresas utilizan los datos extraídos para rastrear tendencias de la industria, analizar competidores, mejorar estrategias de reclutamiento y crear insights del mercado laboral. Estos datos permiten a las organizaciones optimizar sus prácticas de contratación, desarrollar productos basados en datos y comprender mejor las demandas del mercado. El scraping de datos de Indeed requiere un enfoque estratégico debido a la estructura de la plataforma y las protecciones que tiene implementadas, como las medidas anti-bots de Cloudflare. Comprender cómo está organizado Indeed y cómo eludir estos protocolos de seguridad te ayudará a recopilar los datos que necesitas de manera eficiente.
Método 1: Explorando el proceso de web scraping
Pasos principales en la creación de un web scraper para Indeed
- Determina tus objetivos
Define claramente los datos que deseas extraer de Indeed. Esto podría incluir títulos de empleo, ubicación/ubicaciones, salarios o nombres de empresas. Proporcionar detalles específicos facilitará el desarrollo de un web scraper eficiente y evitará la recopilación de datos innecesarios. - Analiza los elementos de la página de empleo: Utiliza las herramientas de desarrollo del navegador para examinar la estructura de la página de empleo o de la empresa. Al identificar los elementos HTML relevantes, podrás localizar y extraer el texto requerido de los resultados de búsqueda.
- Maneja la protección de Cloudflare: Indeed emplea la protección anti-bots de Cloudflare, lo que puede obstaculizar los intentos de scraping. Para superar estas protecciones, herramientas como
Cloudscraper,FlareSolverr,Cfscrapeu otros solucionadores de Cloudflare pueden ser ventajosas. Estas herramientas emulan comportamientos de navegación humana y ayudan al web scraper a superar los desafíos de CAPTCHA y otros mecanismos de detección de bots. - Desarrolla tu web scraper: Utiliza librerías de Python como
Beautiful Soup,Scrapy, oCheerio,lxmlpara desarrollar tu web scraper. Estas librerías ayudan a navegar por las páginas web de Indeed, analizar el HTML y extraer los datos/textos/imágenes deseados. - Gestiona los límites de tasa: Hacer scraping en sitios web demasiado rápido puede activar protecciones anti-bots. Para evitar ser bloqueado, incorpora proxies rotativos e implementa retrasos en las solicitudes para imitar patrones de navegación humana. Esto te ayudará a recopilar grandes cantidades de datos mientras permaneces sin ser detectado.
- Analiza y limpia los datos: Después de extraer los datos, límpialos y estructúralos para un análisis posterior. Elimina cualquier carácter innecesario, formatea los datos de empleo.
- Almacenamiento de datos: Una vez que los datos han sido limpiados, guárdalos en un formato eficiente, como una base de datos con Postgres (Supabase, Airtable...) o un archivo CSV. Esto facilitará el análisis, visualización o procesamiento adicional según tus requisitos. Mantenimiento Regular: El scraping requiere mantenimiento continuo. Monitorea y actualiza regularmente tu web scraper para adaptarte a los cambios en la estructura de la página web de Indeed, actualizaciones de contenido y protocolos de seguridad en evolución, incluyendo las defensas de Cloudflare.
Comprendiendo la Gestión de Bots de Cloudflare
Cloudflare proporciona servicios de entrega de contenido y seguridad web, incluyendo su Web Application Firewall (WAF), que protege los sitios web contra amenazas como cross-site scripting (XSS), relleno de credenciales y ataques de Denegación de Servicio Distribuido (DDoS).

Un componente vital de Cloudflare es el Bot Manager, diseñado para proteger los sitios web del tráfico malicioso de bots. El Bot Manager identifica y mitiga los ataques de bots sin interrumpir a los usuarios legítimos. Sin embargo, Cloudflare considera cualquier tráfico de bots desconocido o no incluido en la lista blanca, como los web scrapers, como malicioso. Por lo tanto, incluso los intentos legítimos de scraping pueden ser bloqueados, lo que lleva a la denegación de acceso a sitios web protegidos por Cloudflare.
Estos errores suelen ir acompañados de un código de estado Cloudflare 403 Forbidden HTTP, indicando que la solicitud fue bloqueada debido a actividad sospechosa de bots. Para eludir estas protecciones, pueden ser necesarios solucionadores específicos de Cloudflare o técnicas como proxies rotativos, imitación de comportamiento humano o el uso de navegadores sin cabeza.
Un mal ejemplo de scraper de empleos en Python
El siguiente fragmento de código muestra un ejemplo de un método de solicitud HTTP y análisis destinado a extraer datos de empleo de Indeed utilizando librerías de Python como httpx y re:
import httpx
import re
import json
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
}
def parse_search_page(html: str):
data = re.findall(r'window.mosaic.providerData\["mosaic-provider-jobcards"\]=(\{.+?\});', html)
if data is not None and data != 'null':
return json.loads(data[0])
response = httpx.get("https://www.indeed.com/viewjob?jk=cbce6eaf017aa47b", headers=headers)
print(parse_search_page(response.text))
Esta solicitud falla, ya que el sitio web de Indeed emplea protecciones anti-bots, notablemente a través de Cloudflare, que bloquea las solicitudes HTTP que no simulan comportamiento humano. Librerías como httpx o requests generalmente son ineficaces contra estas protecciones. Para eludir Cloudflare, necesitas herramientas como navegadores sin cabeza o APIs dedicadas de web scraper que puedan imitar interacciones humanas de manera más confiable.
Método 3: API de web scraping para eludir Cloudflare
Aunque las técnicas mencionadas en este artículo pueden ser útiles, no pueden garantizar el éxito en todo momento debido a que Cloudflare actualiza frecuentemente sus medidas de seguridad. La forma más confiable de lidiar con Cloudflare es utilizar una API de web scraping, como Piloterr. Esta maneja todos los métodos de detección de Cloudflare detrás de escena, permitiéndote enfocarte en tu lógica de scraping sin preocuparte por eludir la protección anti-bots.
Piloterr funciona con todos los lenguajes de programación. Solo necesitas una única llamada a la API para eludir Cloudflare y recuperar los datos que necesitas.
Para ver cómo funciona Piloterr, usémoslo para acceder a Indeed Jobs, un sitio web fuertemente protegido por Cloudflare.
Código en Python:
# Instala el módulo requests si es necesario
import requests
# URL de Indeed
url = 'https://www.indeed.com/jobs?q=senior+java+developer&l=berlin'
api_key = ''
# Parámetros de solicitud para la API de Piloterr
params = {
'query': url,
'wait_in_seconds': 10
}
# Enviando una solicitud GET a la API de Piloterr
response = requests.get(
'https://piloterr.com/api/v2/website/rendering',
params=params,
headers={'x-api-key': api_key}
)
# Imprimiendo el HTML crudo de la página de Indeed
print(response.text)
Con esta solicitud, puedes obtener todos los empleos que contengan la palabra clave "Senior Java Developer" en la ubicación "Berlin".
Consulta la documentación para ver cómo configurar la solicitud de scraping. Simplemente pega la URL objetivo, añade un wait_in_seconds entre 5-20 segundos y podrás usar una simple solicitud HTTP para buscar empleos (y eludir el anti-bot de Cloudflare), hacer scraping de URLs y texto sin complicaciones.
Método 4: Scrape de URL de Empresa en Indeed con Python
Si estás interesado en hacer scraping de datos de empresas en Indeed, Piloterr ofrece una API de web scraping dedicada para hacer el proceso sencillo y eficiente. Al usar esta API, puedes eludir la protección de Cloudflare sin problemas y obtener datos estructurados en JSON sobre empresas en Indeed.
Caso de uso: scrape de información de empresa con Python
Para recuperar información de una empresa específica en Indeed, sigue estos pasos:
- Elige la Empresa: Encuentra la URL de la empresa en Indeed (ej., https://indeed.com/cmp/Microsoft).
- Llamada a la API: Usa una solicitud GET al endpoint dedicado de Piloterr para información de empresas en Indeed.
Código en Python:
import requests
# Define la URL de la API para información de la empresa
url = 'https://indeed.com/cmp/Microsoft'
api_key = ''
# Establece el endpoint de la API y los parámetros
api_endpoint = 'https://piloterr.com/api/v2/indeed/company/info'
params = {'query': url}
# Envía la solicitud GET con la clave de la API
response = requests.get(api_endpoint, params=params, headers={'x-api-key': api_key})
# Imprime la respuesta JSON que contiene los datos de la empresa
print(response.json())
Respuesta:
{
"founded": 1975,
"revenue": "over-$10B (USD)",
"website": "http://www.microsoft.com/",
"industry": "Information Technology",
"logo_url": "https://d2q79iu7y748jz.cloudfront.net/s/_squarelogo/96x96/88813b3f866a5b58c9685073e3b87e05",
"company_url": "https://indeed.com/cmp/Microsoft",
"description": "There’s work, and then there’s your life’s work...",
"headquarter": "One Microsoft Way Redmond, Washington 98052-6399",
"staff_range": "over-10000",
"company_name": "Microsoft",
"dynamic_sections": {...},
"similar_companies": {...}
}
- Procesa el JSON: La respuesta incluirá la información de la empresa en formato JSON, facilitando su análisis e incorporación en tus aplicaciones.
Al usar este endpoint, ahorras tiempo, ya que la respuesta ya está estructurada en JSON, permitiendo una integración fluida con tu lógica de scraping sin necesidad de analizar HTML crudo.
Nota: No contiene URLs ni empleos, este endpoint de la API se enfoca en la información de la empresa. Algunos campos en la respuesta JSON pueden ser null si la información no está disponible o si Indeed ha restringido el acceso a ciertos datos. Asegúrate de que tu código en Python maneje estos casos para evitar posibles errores en el procesamiento de datos.
Usar este endpoint ahorra tiempo, ya que la respuesta ya está estructurada en JSON, permitiendo una integración fluida con tu lógica de scraping sin necesidad de analizar texto en HTML crudo. Consulta la documentación de Piloterr para ver opciones adicionales para optimizar tus solicitudes, como especificar el tiempo de espera en segundos, parámetros de búsqueda o ajustar los encabezados del user-agent para mejorar la calidad de la respuesta.
Con Piloterr, también puedes hacer scraping de listados de empleo directamente desde los perfiles de empresas en Indeed, como esta URL: indeed.com/cmp/Google/jobs. El Indeed Job Scraper te permite extraer datos valiosos de empleos, incluyendo título del empleo, descripción de texto, nombre de la empresa, ubicación, salario, calificaciones, tipo de empleo y más.
Scrape de datos de empresas en Indeed
Aquí hay algunos casos de uso valiosos:
1. Análisis y Benchmarking de Salarios / utilizando los datos de salarios de los listados de empleo, puedes:
- Comparar compensaciones en diferentes roles y ubicaciones
- Rastrear tendencias salariales para puestos específicos
- Ayudar a los solicitantes de empleo a negociar mejores paquetes
Por ejemplo, a partir de los datos podemos ver que los salarios de los Ingenieros de Software de Microsoft varían significativamente según la ubicación y el nivel de experiencia.
2. Inteligencia del Mercado Laboral / los datos proporcionan insights sobre:
- Títulos de empleo populares y su demanda (ej., Microsoft tiene 339 posiciones de Desarrollo de Software)
- Distribución geográfica o de ubicación de oportunidades (ej., Redmond, WA tiene 438 vacantes)
- Tendencias de contratación y áreas de enfoque de la empresa
3. Planificación de Trayectorias Profesionales / los datos estructurados de títulos de empleo pueden usarse para:
- Mapear rutas de progresión profesional
- Identificar habilidades requeridas para el avance
- Comparar roles entre empresas (ej., puestos de Senior Program Manager vs Project Manager)
4. Análisis de Cultura Empresarial / utilizando los datos de reseñas y calificaciones:
- Analizar la satisfacción en el lugar de trabajo (la calificación general de Microsoft es de 4.2)
- Comparar el equilibrio entre vida laboral y personal entre empresas
- Evaluar los valores de la empresa y la experiencia de los empleados
5. Preparación para Entrevistas / los datos de entrevistas proporcionan:
- Duración del proceso ("aproximadamente dos semanas")
- Niveles de dificultad (calificados como "MEDIUM")
- Preguntas comunes de entrevistas y experiencias para un empleo
- Comentarios sobre entrevistas específicas por ubicación
6. Inteligencia Competitiva / las empresas pueden:
- Monitorear patrones de contratación de competidores
- Comparar beneficios y compensaciones para un empleo
- Rastrear la expansión en nuevos mercados o tecnologías
- Analizar empresas similares en su sector
Estos datos pueden ser particularmente valiosos para profesionales de RRHH, solicitantes de empleo y analistas de negocios que buscan tomar decisiones basadas en datos sobre empleo y tendencias laborales.
Método 5: Uso de alternativas a la caché de Google
Aunque Google ya no ofrece acceso a páginas en caché, aún puedes ver versiones archivadas de muchos sitios web a través de servicios como WebCite y el Internet Archive. Estos sitios proporcionan instantáneas de páginas web, permitiéndote acceder al contenido de sitios protegidos sin visitar directamente su dominio o pasar por la CDN de Cloudflare.

Para usar archivos cuando otros métodos fallan, aquí tienes algunos pasos a seguir:
- Verifica la disponibilidad y frescura de los datos: Asegúrate de que los datos archivados estén presentes y sean lo suficientemente recientes para satisfacer tus necesidades. Evaluar la relevancia es crucial.
- Evalúa el nivel de seguridad: Considera si la seguridad del archivo es inferior a la del sitio original. Esto podría influir en la seguridad e integridad de los datos extraídos.
Si se cumplen estas condiciones, explora el archivo del sitio objetivo para ver si hay una versión en caché accesible.
Método 6: Scrape de títulos de empleo para puestos de desarrollador con Python
Si necesitas automatizar el proceso de recuperación de sugerencias de títulos de empleo relacionados con "desarrollador", puedes usar un script simple para interactuar con el endpoint de Indeed para sugerencias de autocompletar. Esto puede ayudarte a recopilar una lista de títulos relevantes que están frecuentemente asociados con roles de desarrollador, proporcionando información sobre puestos similares o relacionados.
Puedes usar el siguiente script de Python para hacer scraping y analizar el texto, extrayendo solo las sugerencias de títulos de empleo relevantes:
import httpx
def get_job_title_suggestions(query="cto"):
url = "https://autocomplete.indeed.com/api/v0/suggestions/cmp-what-with-top-companies"
params = {
"country": "US",
"language": "en",
"count": 10,
"counts": 10,
"formatted": 1,
"query": query
}
response = httpx.get(url, params=params)
if response.status_code == 200:
suggestions = [item['suggestion'] for item in response.json() if item['suggestion'] != 'null']
return suggestions
else:
return []
# Recuperar títulos de empleo relacionados con CTO
cto_suggestions = get_job_title_suggestions("cto")
print(cto_suggestions)
Este script envía una solicitud HTTP al API de Indeed e imprime una lista de títulos de empleo sugeridos relacionados con "developer". Este endpoint de Indeed actualmente no está protegido por Cloudflare, pero podría estarlo en el futuro.
Nota: También es posible usar el mismo enfoque para recuperar sugerencias de ubicación de Indeed, proporcionando una lista de ciudades relevantes. Esto puede ser particularmente útil al desarrollar una aplicación web para ayudar a prevenir resultados nulos para el cliente al completar campos de búsqueda con opciones válidas.
¿Permite Indeed el scraping de empleos?
La legalidad del data scraping está regida por leyes de propiedad intelectual y protección de datos. El Código de Propiedad Intelectual regula la extracción de datos en términos de uso, cantidad e intención. Aquí tienes un resumen de lo que generalmente está permitido:
- Extracción de Datos No Sustanciales: Extraer una pequeña porción no sustancial de datos disponibles públicamente para uso privado suele estar permitido. Este enfoque asegura que los usuarios solo recopilen datos mínimos, lo que no compromete el valor de la base de datos.
- Uso Privado y No Comercial: Extraer datos a mayor escala podría ser aceptable si es para fines personales y no comerciales. Sin embargo, deben respetarse todos los derechos de propiedad intelectual y privacidad.
- Uso Académico y de Investigación: Para fines educativos o de investigación, puede extraerse una cantidad más sustancial de datos. Este uso suele ser no comercial y dirigido a una audiencia limitada, como estudiantes o investigadores, lo que minimiza el riesgo de infringir los términos de la plataforma.
Cumplimiento con los términos de Indeed
Los Términos de Servicio de Indeed prohíben explícitamente las actividades de scraping para uso comercial sin autorización. Restringen el uso de "bots, scripts o APIs" para hacer scraping de datos de su sitio web, especialmente cuando los datos se utilizan para fines competitivos, creación de perfiles o recopilación masiva de datos.
Cláusula de ejemplo: "Usted acepta no utilizar ningún robot, araña, scraper u otros medios automatizados para acceder al sitio de Indeed con cualquier propósito sin el permiso expreso por escrito de Indeed."
Violar estos términos podría resultar en acciones legales y fuertes multas. Indeed se reserva el derecho de buscar compensación por daños causados por scraping no autorizado, lo que puede representar pérdidas financieras y de reputación significativas para la empresa infractora.
¿Puedo usar la API de Indeed para hacer scraping de ofertas de empleo?
A partir de junio de 2023, Indeed ofrece una variedad de APIs para desarrolladores de forma gratuita. Sin embargo, estas APIs están principalmente destinadas al lado de contratación de la plataforma. Son útiles para integrar Indeed con sistemas de seguimiento de candidatos, rastrear conversiones de candidatos o programar entrevistas, pero no están diseñadas para fines de búsqueda de empleo.
Anteriormente, la API de Publicación de Empleos (incluyendo las funciones Get Job y Job Search) estaba disponible específicamente para búsquedas de empleo, permitiendo a los usuarios recopilar datos como títulos de empleo, nombres de empresas, texto de descripción, ubicaciones y tiempos de publicación. Desde que estas APIs fueron depreciadas, los usuarios han recurrido a alternativas, como un scraper de Indeed, para acceder a datos similares de búsqueda de empleo.
Conclusión
En conclusión, el data scraper en Indeed permite acceder a una gran cantidad de información valiosa, incluyendo empleos, empresas, ubicaciones y otros detalles útiles. A través de los métodos descritos, incluyendo el uso de APIs de scraping como Piloterr, es posible extraer datos de texto de una simple URL mientras se eluden protecciones como Cloudflare. Este enfoque proporciona a las empresas información crítica para mejorar estrategias de reclutamiento, análisis competitivo y estudios de tendencias del mercado. Sin embargo, es crucial cumplir con los términos de servicio de Indeed para garantizar un uso legal de estos datos.