Cómo raspar perfiles de LinkedIn en 2026: guía paso a paso
TL;DR
Solo los campos de perfil de LinkedIn que son visibles públicamente son seguros para recopilar. Cualquier cosa visible para un visitante desconectado (nombre, titular, título actual, ubicación y publicaciones públicas) se encuentra en una categoría legal y técnica diferente que los datos detrás de un muro de acceso, como conexiones, mensajes o historial laboral completo.
Los Términos de Servicio de LinkedIn prohíben explícitamente la recolección automatizada de datos, y su detección de bots puede limitar la tasa, bloquear o prohibir la cuenta o IP que realice las solicitudes.
hiQ Labs v. LinkedIn no hizo que raspar LinkedIn fuera "legal" en un sentido general. El Noveno Circuito encontró que raspar datos públicos no viola la Ley Federal de Fraude y Abuso Informático, pero una sentencia separada de 2022 encontró que hiQ violó los términos del contrato de LinkedIn, y el caso terminó en una orden de restricción permanente contra hiQ, no en una victoria para quienes raspan.
Un camino de extracción funcional utiliza requests y BeautifulSoup (o Playwright para secciones renderizadas en JavaScript) contra una URL de perfil público, analizando los datos estructurados incrustados en la página en lugar de adivinar nombres de clases CSS que cambian sin previo aviso.
La limitación de tasa, el manejo de sesión y la reputación de la IP determinan si una solicitud tiene éxito, no soluciones ingeniosas: trátalas como ingeniería de confiabilidad, no como evasión.
El GDPR y la CCPA se aplican a los datos personales raspados de la misma manera que se aplican a cualquier otro dato personal que almacenes, por lo que un fundamento legal y un límite de retención son importantes antes de que construyas cualquier base de datos de nombres y títulos.
Construir una lista de prospectos o una base de datos de contactos a partir de perfiles raspados conlleva su propia exposición legal separada del método de raspado en sí, y la recolección a gran escala comercial debe pasar por asesoría legal primero.
Introducción: qué significa realmente "raspar perfiles de LinkedIn"
Las páginas de perfil de LinkedIn combinan dos superficies de datos muy diferentes: el subconjunto visible para cualquiera con la URL, y el subconjunto visible solo después de iniciar sesión. Un visitante desconectado en linkedin.com/in/some-name generalmente ve el nombre de la persona, el titular, la empresa y el título actuales, la ubicación general y cualquier publicación que hayan hecho pública — la misma información que un motor de búsqueda puede indexar. Todo lo que va más allá de ese punto, incluidos los listados de conexiones completos, mensajes privados y la mayoría de las secciones de historial detallado, se encuentra detrás del muro de autenticación de LinkedIn.
Esta guía solo cubre la superficie pública. Muestra un enfoque funcional en Python para extraer esos datos públicos, explica por qué la decisión de cumplimiento debajo del enfoque técnico es más importante que el propio código, y es explícita sobre dónde se encuentra la línea entre "posible" y "permitido".
Casos de uso para datos públicos de perfiles de LinkedIn
Los reclutadores, equipos de ventas e investigadores extraen datos públicos de LinkedIn para un conjunto limitado de trabajos recurrentes, y cada uno tiene una tolerancia diferente al riesgo y a la escala.
Enriquecimiento del pipeline de reclutamiento — adjuntar el título actual y el titular público de un candidato a un registro existente de seguimiento de solicitantes, una búsqueda a la vez en lugar de un rastreo masivo.
Investigación del organigrama de la empresa — confirmar quién ocupa actualmente un rol en una cuenta objetivo antes de una llamada de ventas, utilizando chequeos de perfiles públicos individuales.
Investigación académica y de mercado sobre tendencias de carrera públicas — agregando títulos de rol e industrias visibles públicamente y anonimizadas en una muestra, sin retener nombres.
Monitoreo de marca y menciones — verificar si una publicación pública hace referencia a una empresa o producto, similar a monitorear cualquier otra página web pública.
Ninguno de estos casos de uso requiere tocar una lista de conexiones, una bandeja de entrada o cualquier campo restringido por un inicio de sesión — y ninguno de ellos justifica ejecutar un rastreo automatizado sin límites a través de toda la base de miembros de LinkedIn. El mismo patrón dirigido y de página única se muestra en raspar datos de productos públicos de Amazon: extraer una página a la vez, en un horario definido, en lugar de tratar todo el sitio como un solo objetivo de rastreo.
¿Es legal raspar perfiles de LinkedIn?
El propio Acuerdo de Usuario de LinkedIn prohíbe la recolección automatizada de datos de la plataforma, y violar ese acuerdo arriesga la suspensión de la cuenta involucrada y, en algunos casos, acción legal de LinkedIn contra el operador. Esa prohibición se aplica independientemente de si los datos que se están recopilando son técnicamente públicos — "público" describe quién puede ver los datos, no si LinkedIn ha consentido la recolección automatizada de estos.
El caso más citado sobre esta cuestión es hiQ Labs v. LinkedIn, y su resultado real es más estrecho de lo que sugieren la mayoría de los resúmenes. El Noveno Circuito dictó sentencia en 2019, y nuevamente en 2022 después de un envío de la Corte Suprema de 2021 relacionado con Van Buren v. United States, que raspar datos que son accesibles públicamente sin iniciar sesión no viola la Ley Federal de Fraude y Abuso Informático (CFAA) — el hecho de que LinkedIn sea una empresa privada no le da la legitimidad para invocar un estatuto federal anti-hacking contra un raspador que nunca eludió ningún control de acceso. Ese precedente aún se mantiene, y fue reforzado por una sentencia federal separada de 2024 en una disputa de raspado diferente que nuevamente rechazó una teoría de CFAA contra un raspador que recolecta datos accesibles públicamente.
Pero el mismo litigio de hiQ no terminó bien para hiQ en general. En noviembre de 2022, el mismo tribunal de distrito encontró que hiQ había violado por separado el Acuerdo de Usuario de LinkedIn al raspar y al dirigir a contratistas para crear cuentas para el trabajo — un reclamo contractual, no un reclamo de CFAA. El caso se cerró en diciembre de 2022 con una orden judicial permanente estipulada contra hiQ, no un veredicto de juicio a favor de hiQ. La lección práctica: sobrevivir a un desafío de CFAA y sobrevivir a un reclamo por incumplimiento de contrato son dos preguntas legales separadas, y LinkedIn ha ganado en la segunda contra el mismo demandante que ganó la primera.
Tres reglas prácticas se derivan de eso:
Solo recolectar datos visibles sin iniciar sesión, y nunca campos bloqueados detrás de la autenticación de LinkedIn (conexiones, mensajes, secciones de perfil completo mostradas solo a los espectadores que han iniciado sesión).
Tratar el GDPR y CCPA como aplicables en el momento en que un registro raspado identifica a una persona real. Eso significa tener una base legal documentada para retener los datos, minimizando lo que se almacena a lo que realmente necesita el caso de uso, y no construir una base de datos de contactos no solicitados puramente a partir de nombres y correos electrónicos raspados.
Involucrar a asesoría legal antes de cualquier esfuerzo de recolección a escala comercial, ya que la exposición por incumplimiento de contrato demostrada en el caso de hiQ existe independientemente de lo que permita la CFAA.
Esta guía no cubre, y no cubrirá, eludir el muro de inicio de sesión de LinkedIn, derrotar CAPTCHAs, automatizar cuentas falsas o cualquier técnica destinada a evadir la detección de bots de LinkedIn a gran escala — eso cruza de "recolección de datos públicos" a "eludir controles de acceso," que está tanto en contra de los términos de LinkedIn como en una posición legal materialmente diferente y más arriesgada que la pregunta de datos públicos arriba.
Enfoque y adecuación de herramientas
El flujo de trabajo a continuación tiene tres partes en movimiento: obtener una página de perfil público, analizar sus datos estructurados incrustados en lugar de selectores CSS frágiles, y gestionar solicitudes a una tasa y desde una reputación de IP que no bloqueen la obtención antes de que comience.
Las páginas de perfil público de LinkedIn servidas a un visitante desconectado incluyen un bloque JSON-LD <script type="application/ld+json"> con un esquema de Person — nombre, título del trabajo y afiliación en un formato estructurado diseñado para que los motores de búsqueda lo lean. Analizar ese bloque es más duradero que analizar clases HTML visuales, que LinkedIn cambia sin previo aviso y que varían según la localidad y por si una página se renderiza en el servidor o se hidrata del lado del cliente.
La variable restante es la solicitud en sí. Una sola búsqueda ocasional desde una conexión residencial rara vez levanta alguna bandera. Un período sostenido de muchas búsquedas por minuto desde una IP de centro de datos es el patrón que la detección de tráfico automatizado de LinkedIn está diseñada para atrapar, independientemente de qué datos se estén solicitando. Aquí es donde encaja la infraestructura de proxy: no como una forma de eludir la autenticación, sino como una manera de mantener un patrón de solicitud moderado y espaciado que se asemeje al tráfico residencial ordinario que se supone debe parecerse, de modo que los reintentos y la paginación se comporten de manera predecible en lugar de fallar a mitad de un lote.
Los Proxies Residenciales Lite de Nstproxy están diseñados exactamente para ese tipo de trabajo de recolección constante y de volumen moderado. La línea se extrae de un pool de más de 50 millones de IPs residenciales reales en más de 200 países y regiones, facturadas en paquetes prepagos en lugar de una suscripción que se renueva automáticamente, lo que se adapta a una carga de trabajo que se ejecuta en ráfagas en lugar de continuamente. Para el caso de uso específico de este tutorial:
Pool de IP residenciales — las solicitudes se enrutan a través de conexiones ISP residenciales reales en lugar de rangos de centro de datos, lo que coincide con el patrón de tráfico que se espera de una búsqueda de perfil público legítima y de bajo volumen.
Amplia cobertura de países — útil cuando los perfiles que se están verificando pertenecen a personas en diferentes regiones y un origen de solicitud localmente plausible importa para una presentación de página consistente.
Facturación prepaga, pagar por uso — se adapta mejor a un trabajo de búsqueda ocasional limitado que a un compromiso mensual fijo dimensionado para rastreo continuo.
Los equipos que superan un script requests/BeautifulSoup hecho a mano — porque necesitan renderizado de JavaScript, reintentos y salida estructurada (Markdown, JSON o capturas de pantalla) agrupada detrás de una API en lugar de mantenida internamente — pueden considerar Nstproxy Crawl como una opción separada; consulte su documentación de API para ver la forma de solicitud/respuesta. No es la recomendación principal para el enfoque de DIY en este tutorial, pero resuelve el mismo problema de "obtener datos de manera confiable sin construir la infraestructura usted mismo" para tuberías de extracción más grandes en general, en cualquier página pública, no específicamente en LinkedIn.
Mantenga las búsquedas de perfiles públicos fiables
Dirija solicitudes ocasionales de datos públicos de bajo volumen a través de IPs residenciales reales en más de 200 regiones, para que los reintentos y la paginación no se detengan en una dirección de centro de datos marcada.
Antes de escribir cualquier código, confirme lo siguiente:
Python 3.9 o posterior instalado y en la ruta del sistema.
Una lista de URLs de perfil público específicas e individuales para verificar; esta guía está hecha para búsquedas específicas, no para un rastreo indefinido de la base de miembros de LinkedIn.
Un proxy o plan de rotación de IP si el volumen de búsquedas supera un puñado de verificaciones manuales, ya que un estallido de solicitudes desde una IP es el patrón más probable de ser limitado; consulte cómo usar un proxy con BeautifulSoup para un vistazo más cercano a cómo integrar la rotación de proxies en este stack de análisis exacto.
Tener en cuenta que el código a continuación no se ha ejecutado en vivo contra un perfil de LinkedIn real a ningún volumen para este artículo. La detección de bots de LinkedIn y los ToS hacen que ese tipo de prueba sea poco confiable y no cumpla con las normas para generar salida solo para un post de blog; el código es ilustrativo, construido contra el mismo patrón de datos estructurados JSON-LD documentado en la especificación de Persona de schema.org y utilizado por motores de búsqueda públicos, y debería ser validado contra un único perfil al que esté autorizado a verificar antes de cualquier uso más amplio.
Instalar el entorno de Python
Cree un entorno aislado e instale las dos bibliotecas que esta guía necesita. Playwright es opcional y solo requerido para la alternativa renderizada en JavaScript en el Paso 3.
python3 -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activatepip install requests beautifulsoup4 playwright
python -m playwright install chromium # solo necesario para el Paso 3
Estado de verificación: solo configuración — sintaxis estándar pip/venv, no una afirmación específica de LinkedIn.
Paso 1: Obtener una página de perfil público
Envía una sola solicitud GET a la URL del perfil público con un encabezado User-Agent de navegador realista. No intente iniciar sesión ni adjuntar ninguna cookie de sesión; este paso solo funciona en la versión pública y sin conexión del sitio.
import requests
PROFILE_URL ="https://www.linkedin.com/in/example-public-profile"headers ={"User-Agent":("Mozilla/5.0 (Windows NT 10.0; Win64; x64) ""AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/128.0.0.0 Safari/537.36"),"Accept-Language":"es-ES,es;q=0.9",}# Rutee a través de un proxy residencial para cualquier cosa más allá de una verificación manual única.proxies ={"http":"http://USERNAME:PASSWORD@gate.nstproxy.com:PORT","https":"http://USERNAME:PASSWORD@gate.nstproxy.com:PORT",}response = requests.get(PROFILE_URL, headers=headers, proxies=proxies, timeout=15)response.raise_for_status()html = response.text
Estado de verificación: ilustrativo — la API requests mostrada (requests.get, headers, proxies, timeout, raise_for_status) coincide con la actual documentación oficial de requests, pero este fragmento no se ejecutó contra una URL de LinkedIn en vivo para este artículo; consulte Requisitos previos.
Paso 2: Analizar los datos estructurados incrustados
Las páginas de perfil público de LinkedIn, como la mayoría de las páginas construidas para la indexación por motores de búsqueda, incluyen un bloque <script type="application/ld+json"> que describe a la persona utilizando el vocabulario Person de schema.org. Analizar ese bloque es más estable a lo largo de los cambios de marcado que dirigirse a las clases CSS visuales.
import json
from bs4 import BeautifulSoup
soup = BeautifulSoup(html,"html.parser")profile_data ={}for script_tag in soup.find_all("script",type="application/ld+json"):try: payload = json.loads(script_tag.string or"{}")except json.JSONDecodeError:continueif payload.get("@type")=="Person": profile_data ={"name": payload.get("name"),"headline": payload.get("description"),"location":(payload.get("address")or{}).get("addressLocality"),"current_role":(payload.get("worksFor")or{}).get("name"),}breakprint(profile_data)# Ejemplo de salida ilustrativa:# {'name': 'Jordan Example', 'headline': 'Analista de Datos Senior en Example Corp',# 'location': 'Austin, Texas', 'current_role': 'Example Corp'}
Estado de verificación: ilustrativo — los nombres de los campos del esquema Person siguen la especificación de schema.org y el patrón general documentado en las referencias actuales de raspado de LinkedIn revisadas para este artículo; los valores de muestra son marcadores de posición, no se extrajeron de un perfil real.
Paso 3: Manejar secciones renderizadas por JavaScript con Playwright
Algunas secciones de un perfil público (publicaciones antiguas, algunos paneles de detalles) se cargan después de la respuesta HTML inicial a través de JavaScript del lado del cliente. Cuando el bloque JSON-LD no lleva un campo que necesitas, renderiza la página con un navegador sin cabeza en lugar de agregar más encabezados de solicitud a un cliente HTTP simple — consulta raspado de sitios web renderizados por JavaScript para un tratamiento más amplio sobre cuándo este paso es necesario frente a opcional.
Estado de verificación: ilustrativo — sync_playwright, chromium.launch, page.goto y page.content coinciden con la actual documentación oficial de la API de Python de Playwright; no se ejecutó ninguna sesión de navegador en vivo contra LinkedIn para este artículo, según la brecha de requisitos divulgada.
Esquema de salida
Normaliza cualquier campo que extraigas en una forma de registro consistente antes de almacenar cualquier cosa, para que el código de descenso no tenga que bifurcarse según qué paso produjo un campo dado.
Campo
Tipo
Fuente
Notas
name
string
JSON-LD Person.name
Solo nombre de exhibición pública
headline
string
JSON-LD Person.description
El título de una línea que se muestra debajo del nombre
location
string
JSON-LD Person.address.addressLocality
Ciudad/región general, no una dirección precisa
current_role
string
JSON-LD Person.worksFor.name
Nombre del empleador actual si está listado públicamente
profile_url
string
La URL solicitada
Almacenar para deduplicación y auditoría
fetched_at
timestamp ISO 8601
Establecido en el momento de la solicitud
Necesario para hacer cumplir una política de retención/expiración
No agregues campos que solo existen detrás del muro de inicio de sesión — si un campo no está presente en el HTML desconectado o en el bloque JSON-LD, no es parte de este flujo de datos públicos.
Observaciones y límites
El bloque JSON-LD no lleva cada campo que muestra una vista iniciada sesión. Listas completas de historial laboral, respaldos de habilidades y recomendaciones suelen estar incompletas o ausentes de la página pública desconectada.
La disponibilidad de campos de marcado y JSON-LD puede cambiar sin previo aviso. Trata cada extracción de campo como algo que debe volver a verificarse periódicamente en lugar de un contrato permanente.
Una sola IP marcada o un patrón de solicitud inusualmente rápido pueden activar un bloqueo temporal en esa IP, independientemente de si la solicitud estaba dirigida a datos públicos o privados — esta es una limitación de fiabilidad a la que planear, no un control de seguridad a eludir.
Este flujo de trabajo no devuelve conexiones, mensajes o cualquier campo solo autenticado, por diseño — extenderlo para hacerlo requeriría iniciar sesión, lo que mueve la actividad fuera del ámbito que cubre este artículo y fuera del uso permitido de LinkedIn.
La recopilación masiva y sin límites de nombres y títulos es un riesgo separado del método de raspado en sí. Incluso los datos públicos correctamente raspados pueden crear exposición a GDPR/CCPA una vez que se agregan a una base de datos buscable de personas identificables.
Conclusión
Raspar datos públicos de perfiles de LinkedIn es técnicamente sencillo: obtener la página sin conexión, analizar sus datos estructurados de Person, y gestionar el volumen de solicitudes de la manera en que cualquier raspador responsable gestiona el volumen de solicitudes contra cualquier sitio. La parte más difícil es mantenerse dentro de los límites que los términos de LinkedIn y la jurisprudencia actual realmente establecen: solo campos públicos, sin eludir el inicio de sesión, y una base legal documentada antes de que esos datos se conviertan en un conjunto de datos almacenados y buscables de personas reales. Construya la parte técnica a partir de los pasos anteriores —y para estructurarlo en una base de código más amplia y mantenida en lugar de un script único, consulte construir un proyecto de raspado web en Python como un pipeline completo— y trate el aspecto de cumplimiento como una puerta que el proyecto atraviesa antes de escalar, no como un pensamiento posterior añadido una vez que un raspador ya funciona.
Raspar datos que son visibles sin iniciar sesión por sí mismo no viola la Ley Federal de Fraude y Abuso Informático, según los fallos del Noveno Circuito en hiQ Labs v. LinkedIn, pero sí viola el Acuerdo de Usuario de LinkedIn, y LinkedIn ganó por separado un fallo por incumplimiento de contrato contra hiQ en la misma litigación. Trate "no es una violación de la CFAA" y "permitido por los términos de LinkedIn" como dos preguntas diferentes con dos respuestas diferentes.
P: ¿Necesito iniciar sesión para ejecutar el código de este tutorial?
No: cada paso en esta guía opera en la página que LinkedIn sirve a un visitante sin conexión, y ninguno de los códigos adjunta una cookie de sesión o credencial. Iniciar sesión para raspar campos adicionales se mueve fuera de lo que cubre esta guía y fuera del uso permitido por LinkedIn.
P: ¿Puedo recopilar conexiones o mensajes de esta manera?
No. Las conexiones, mensajes y la mayoría de las secciones detalladas del perfil solo se muestran a los espectadores autenticados y no están presentes en el HTML sin conexión ni en su bloque JSON-LD, por lo que este flujo de trabajo no puede y no los recupera.
P: ¿Bloqueará LinkedIn mi IP si lo ejecuto a gran escala?
Ejecutar muchas solicitudes rápidamente desde una IP es el patrón más probable que desencadene un bloqueo temporal, independientemente de si los datos solicitados son públicos. Espaciar las solicitudes y rotar a través de un grupo de IP residenciales reduce ese riesgo como cuestión de patrón de tráfico, no como una forma de eludir cualquier control de acceso.
P: ¿Qué tan estable es la extracción de campos JSON-LD en el Paso 2?
LinkedIn puede cambiar el marcado de la página y los campos de datos estructurados sin previo aviso, así que trate cada mapeo de campo como algo que necesita re-verificar periódicamente en lugar de un esquema permanente, y espere actualizar la lógica de análisis cuando falte un campo.
P: ¿Se aplica el GDPR o CCPA a los datos raspados de LinkedIn?
Sí, en el momento en que un registro raspado identifica a una persona real y viva, las reglas estándar de protección de datos se aplican de la misma manera que lo harían a los datos personales recopilados a través de cualquier otro método, incluyendo tener una base legal para retenerlo y un período de retención definido.
P: ¿Es una API oficial de LinkedIn una mejor opción que raspar?
Para la mayoría de los casos de uso, sí, donde el acceso está disponible: las APIs oficiales de LinkedIn están fuertemente restringidas a socios aprobados para la mayoría de los tipos de datos, por lo que muchos equipos fuera de ese programa de socios deben elegir entre raspar solo la superficie pública (el alcance de esta guía) o no recopilar los datos en absoluto; no hay una API pública de propósito general que devuelva datos completos de perfil a desarrolladores arbitrarios.
P: ¿Qué debo hacer antes de raspar a escala comercial?
Haga que un asesor legal revise los datos específicos que se están recopilando, las jurisdicciones de las personas involucradas y el uso previsto, ya que la exposición por incumplimiento de contrato demostrada en el caso de hiQ existe independientemente de lo que permite la CFAA, y el GDPR/CCPA añaden sus propios requisitos por separado una vez que el conjunto de datos es lo suficientemente grande como para ser una superficie de cumplimiento real.
Las 5 mejores alternativas de Zyte para la recopilación de datos web en 2026
Compara cinco alternativas prácticas a Zyte para la extracción de datos web en 2026, incluidos los modelos de precios, los formatos de salida y las limitaciones honestas de cada herramienta.
Ivy Lin
Sep. 7th 2026
110M+ IP reales con 99.9% de acceso exitoso
Respuesta media ultrarrapida ~0.5s para tareas de alta concurrencia
Desde solo $0.1/GB
Acceso inmediato a pools premium de proxies residenciales, datacenter, IPv6 e ISP.