La API de LinkedIn que funciona por completo con datos públicos

Un GET devuelve un perfil, una empresa, posts o empleos en JSON.

Sin cuentas ni cookies 1 crédito por llamada con resultado Perfiles no accesibles gratis
EL ENDPOINT

Un endpoint, seis tipos de datos

Todo vive en GET /v1/linkedin. Elige una superficie con type, pasa una URL o unas palabras clave, y el resultado vuelve bajo una clave con el nombre del tipo.

La mayoría de herramientas de este ámbito venden una API de perfiles de LinkedIn, una API de empresas y una API de empleos como productos separados con precios separados. Aquí es una sola API de datos de LinkedIn con una única regla de facturación: una llamada con resultado es un crédito, y un resultado vacío o inaccesible es gratis.

typeQué devuelveEntrada
profileEl perfil público completo: nombre, titular, historial laboral, formación, número de seguidores y más. El tipo por defecto.url (una URL linkedin.com/in/...)
refreshLa empresa y el centro de estudios actuales con sus ids numéricos de LinkedIn, más companyState. La llamada ligera y de baja latencia pensada para mantener una base de datos al día.url
companyLa página pública de la empresa. Añade employees=true para la lista de empleados.url (una URL linkedin.com/company/...)
postsPublicaciones públicas, hasta 100 por llamada. Añade comments=true para los comentarios de cada publicación.url (perfil o empresa)
jobsOfertas de empleo públicas, hasta 50 por llamada, con paginación mediante start.keywords más location opcional, o una url de empleo
search (beta)Búsqueda de personas. Añade enrich=true para obtener el perfil completo de cada persona en la misma llamada.keywords

Ten en cuenta la regla de entrada: profile, company y posts reciben url, nunca una consulta de búsqueda. Si solo tienes un nombre, localiza primero a la persona con type=search (beta) y luego pasa la URL del perfil que te devuelve.

curl "https://crustapi.com/v1/linkedin?type=profile&url=https://www.linkedin.com/in/williamhgates" \ -H "x-api-key: YOUR_KEY"
OBTENIDO EN VIVO DESDE LA API, 4 DE AGOSTO DE 2026

Una respuesta real, no una maqueta

Este es el JSON exacto que devolvió el curl de arriba, recortado por espacio. Llegó en 800 ms y costó 1 crédito.

// trimmed for width: image URLs, null and empty fields, duplicate id and // date-text fields, parsed location detail, peopleAlsoViewed, and this // key's creditsRemaining removed { "type": "linkedin-profile", "url": "https://www.linkedin.com/in/williamhgates", "tookMs": 800, "accessible": true, "profile": { "id": "williamhgates", "name": "Bill Gates", "firstName": "Bill", "lastName": "Gates", "headline": "Chair, Gates Foundation and Founder, Breakthrough Energy", "currentTitle": "Co-chair", "currentCompany": "Gates Foundation", "companyState": "public", "about": "Chair of the Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft. Voracious reader. Avid traveler. Active blogger.", "followerCount": 40559134, "location": { "linkedinText": "Seattle, Washington, United States, US" }, "experience": [ { "position": "Co-chair", "companyName": "Gates Foundation", "companyLinkedinUrl": "https://www.linkedin.com/company/gates-foundation", "startDate": { "year": 2000 }, "endDate": { "text": "Present" } }, { "position": "Founder", "companyName": "Breakthrough Energy", "companyLinkedinUrl": "https://www.linkedin.com/company/breakthrough-energy", "startDate": { "year": 2015 }, "endDate": { "text": "Present" } }, { "position": "Co-founder", "companyName": "Microsoft", "companyLinkedinUrl": "https://www.linkedin.com/company/microsoft", "startDate": { "year": 1975 }, "endDate": { "text": "Present" } } ], "education": [ { "schoolName": "Harvard University", "schoolLinkedinUrl": "https://www.linkedin.com/school/harvard-university", "startDate": { "year": 1973 }, "endDate": { "year": 1975 } }, { "schoolName": "Lakeside School", "schoolLinkedinUrl": "https://www.linkedin.com/school/lakeside-school" } ], "influencer": true, "topVoice": true, "website": "https://gatesnot.es/sourcecode-li", "memberIdentifier": "251749025", "publicIdentifier": "williamhgates", "linkedinUrl": "https://www.linkedin.com/in/williamhgates" } }

Dos campos que merece la pena mirar. accessible te dice si el perfil tiene una página pública siquiera. Cuando es false, profile es null, una note explica el motivo y la llamada no se cobra.

memberIdentifier es el id numérico permanente de miembro de LinkedIn. Se mantiene aunque cambien el nombre y la URL personalizada, así que es la clave de unión correcta para una base de datos.

EL REGISTRO COMPLETO

¿Qué datos obtienes?

Todo el registro público, estructurado. La misma forma en cada llamada, así que tu parser se escribe una sola vez.

Identidadnombre · titular · ubicación · foto · URL del perfilIdsmemberIdentifier · publicIdentifierExperienciapuesto actual · historial laboral completo · URLs de empresa · fechasFormaciónestudios · centros · titulacionesSeñalesabout · followerCount · influencer · topVoiceContactoworkEmail con emailStatus, opcional

El campo de correo es opcional: añade email=true a una llamada de perfil y la respuesta añade workEmail y emailStatus. El estado es verified, pattern-likely o unknown, de modo que puedes filtrar a las direcciones confirmadas.

El correo viaja como un campo de la llamada de perfil, no es un producto aparte.

LO QUE NO DEVUELVE

Los campos que solo existen tras un inicio de sesión se quedan fuera, a propósito. Las listas de contactos, los contactos en común y quién ha visto un perfil nunca aparecen en la página sin sesión, así que no están en la respuesta. Ese límite es lo que permite que la API funcione sin cuentas y sin poner nada tuyo en riesgo.

Haz tu primera llamada en el próximo minuto
3.000 créditos gratis al mes, sin tarjeta.
Empezar →
LOS AJUSTES

Los parámetros que importan

Un puñado de opciones en lenguaje sencillo. Todo lo demás tiene un valor por defecto razonable.

ParámetroSe aplica aQué hace
urlprofile, refresh, company, posts, jobsUna URL de linkedin.com. Obligatoria para profile, company y posts. jobs acepta una URL de empleo en lugar de keywords.
keywordssearch (beta), jobsQué buscar. Obligatorio para search; obligatorio para jobs salvo que pases una URL de empleo.
locationjobsFiltro de ciudad o región para la búsqueda de empleo.
limitjobs, posts, search (beta)Cuántos resultados. jobs: por defecto 25, máx. 50. posts: por defecto 50, máx. 100. search: por defecto 10, máx. 15.
startjobsDesplazamiento de resultados para la paginación.
emailprofileAñade workEmail y emailStatus (verified, pattern-likely o unknown) al perfil.
domainprofileSe usa con email=true. Pasa el dominio del empleador (como stripe.com) y el buscador lo utiliza directamente en lugar de deducirlo del perfil. Es más rápido, y funciona incluso cuando un perfil está restringido a solo el nombre.
enrichsearch (beta)Devuelve el perfil completo de cada persona en la misma llamada. Cobra 1 crédito por cada perfil completo devuelto en vez de 1 por llamada.
employeescompanyIncluye la lista de empleados en la página de la empresa.
commentspostsIncluye los comentarios de cada publicación.
memberrefreshDevuelve también memberIdentifier. Es opcional porque su lectura es más lenta; el id nunca cambia, así que obténlo una vez y guárdalo.
headlineprofilePara perfiles cuyo companyState es restricted, intenta recuperar el titular público del propio miembro. Es un intento sin garantías, aproximadamente uno de cada veinte.
A ESCALA

Refresco por lotes, 100 perfiles por petición

Mantener una base de datos al día no debería costar una ida y vuelta HTTP por fila. Envía hasta 100 URLs de perfil en un solo POST y recibe los resultados en el orden de entrada.

curl -X POST "https://crustapi.com/v1/linkedin/batch" \ -H "x-api-key: YOUR_KEY" -H "content-type: application/json" \ -d '{"urls": ["williamhgates", "https://www.linkedin.com/in/satyanadella"], "type": "refresh"}'

Las reglas están pensadas para grandes volúmenes: los resultados vuelven en el mismo orden en que los enviaste, una fila con error nunca hace fallar el lote, y una URL mal formada vuelve como un error por fila en vez de un cobro. La facturación es igual que en el endpoint individual: un crédito por fila con resultado y las filas no accesibles gratis.

type puede ser refresh (el valor por defecto, empresa y centro de estudios actuales con ids numéricos) o profile (el registro completo). member: true añade memberIdentifier en las filas de refresh.

TRES PASOS

¿Cómo empiezas?

De cero a tu primer JSON de perfil en cosa de un minuto:

  1. 1

    Crea una cuenta gratis. Recibes 3.000 créditos al mes, sin tarjeta.

  2. 2

    Copia tu clave desde el panel. Está en la primera pantalla al iniciar sesión.

  3. 3

    Ejecuta el curl de arriba con cualquier URL de perfil. El perfil público vuelve como JSON.

PRECIOS

¿Cuánto cuesta la API de LinkedIn?

Cada llamada con resultado es un crédito, sea cual sea el tipo. Un perfil privado o inaccesible devuelve null con una nota y no se cobra, y un resultado de búsqueda vacío es gratis.

PaqueteCréditosPagas
Plan gratuito3.000 al mes0 $, sin tarjeta
25.000 llamadas25.00049 $ (1,96 $ por cada 1.000)
100.000 llamadas100.000149 $ (1,49 $ por cada 1.000)
500.000 llamadas500.000549 $ (1,10 $ por cada 1.000)
2,5 millones de llamadas2.500.0001.999 $ (0,80 $ por cada 1.000)

Los paquetes continúan hasta 250 millones de créditos por 100.000 $, lo que sale a 0,40 $ por cada 1.000. Precios sin impuestos.

Los créditos son de prepago y nunca caducan. Una excepción a la regla: la búsqueda de personas (beta) con enrich=true cobra un crédito por cada perfil completo que devuelve.

PARA QUIÉN ES

¿Quién usa la API de LinkedIn?

Relacionado: Extraer LinkedIn sin iniciar sesión · Extractor de perfiles de LinkedIn · Alternativa a Bright Data para LinkedIn · Alternativa a Proxycurl

ANTES DE PREGUNTAR

Preguntas frecuentes

Un solo endpoint, GET /v1/linkedin, que devuelve datos públicos de LinkedIn en JSON limpio. Pon type en profile, refresh, company, posts, jobs o search (beta). Perfiles, empresas y publicaciones reciben una URL de linkedin.com; los empleos y la búsqueda de personas reciben keywords. Cada llamada con resultado es 1 crédito.

No. Solo lee la versión pública y sin sesión de cada página, así que no hay ninguna cookie que pegar, ninguna sesión que entregar ni ninguna cuenta tuya de por medio. Los campos que solo existen tras un inicio de sesión, como las listas de contactos, quedan fuera del producto a propósito.

Un crédito por cada llamada con resultado, para todos los tipos. La excepción es la búsqueda de personas (beta) con enrich=true, que cobra 1 crédito por cada perfil completo devuelto. Un perfil privado o inaccesible devuelve null con una nota y no se cobra, y los resultados vacíos son gratis. El plan gratuito son 3.000 créditos al mes sin tarjeta.

Nombre, titular, ubicación, about, número de seguidores, el historial de experiencia completo con enlaces de empresa y fechas, formación, la foto e identificadores estables, incluido memberIdentifier, el id numérico permanente de miembro de LinkedIn. Añade email=true para incorporar workEmail con un emailStatus de verified, pattern-likely o unknown.

Usa type=refresh, que devuelve la empresa y el centro de estudios actuales con sus ids numéricos a baja latencia, y envía los perfiles mediante POST /v1/linkedin/batch, hasta 100 URLs por petición con los resultados en el orden de entrada. Las filas con error nunca hacen fallar el lote y las filas no accesibles son gratis.

La recopilación pública y sin sesión ha superado repetidamente demandas por fraude informático e incumplimiento de contrato. Nosotros nos encargamos de la recopilación, y lo que obtienes son datos públicos que cualquiera puede ver. No usamos cuentas falsas ni inicios de sesión.

FUNCIONA CON TU STACK

Apúntalo a un perfil y compruébalo

Empieza con los 3.000 créditos gratis al mes, sin necesidad de tarjeta. Un solo GET devuelve el perfil público en JSON limpio, y un perfil que no es accesible no te cuesta nada. Ninguna cuenta tuya forma parte jamás de la petición.

Consigue 3.000 créditos gratis
No se necesita tarjeta de crédito