Imagen del scraper LinkedIn JobsOfertas de empleo públicas

LinkedIn Jobs Scraper.

Una oferta de empleo revela algo sobre lo que una empresa quiere crear. Sigue sus puestos y usa las descripciones para estudiar posibles expansiones o prioridades técnicas.

Ejecutar en Apify

Cómo puedes usar este scraper.

Prueba estos ejemplos para marketing, crecimiento y análisis de la competencia.

01

Encuentra empresas que buscan tus habilidades

Si tienes una consultoría de datos, busca empresas que contraten analytics engineers en Londres. Revisa las herramientas mencionadas y estudia si podrían necesitar apoyo en proyectos.

Conserva una selección con el enlace de la oferta, fecha observada y motivo para investigar la empresa.

02

Sigue las prioridades de contratación de un competidor

Observa vacantes de ventas, alianzas e ingeniería. Compara nuevas ofertas a lo largo del tiempo para investigar cambios de prioridades o posible expansión.

Mantén una cronología de contratación con tus notas.

03

Investiga la demanda de una habilidad técnica

Para un negocio de formación, sigue ofertas con Python, SQL o dbt en una misma región. Revisa descripciones y experiencia exigida antes de planificar cursos.

Basa el estudio de demanda en las ofertas recopiladas e indica la cobertura de la muestra.

DE LA PRIMERA EJECUCIÓN A UN FLUJO RECURRENTE

Tu primera ejecución, paso a paso.

  1. Abre el Actor en Apify, entra en Input y cambia al editor JSON para pegar una configuración.
  2. Pega el ejemplo en el editor JSON. Cambia python developer y London por tu puesto y ubicación. Si usas searchUrls, borra las palabras clave y ubicaciones prellenadas para evitar búsquedas extra.
  3. Usa un periodo reciente en datePosted y un límite global maxItems de 20. Pon scrapeJobDetails en false para una primera prueba rápida. Revisa puestos y ubicaciones antes de activar descripciones o más filtros.
  4. Inicia la ejecución y revisa el registro. Comprueba qué objetivos y filtros se interpretaron antes de concluir que no hay datos.
  5. Abre Storage → Dataset, revisa varios registros y exporta JSON para datos anidados o CSV para una primera revisión en una hoja.
Configuración inicial
{
  "keywords": ["python developer"],
  "locations": ["London"],
  "datePosted": "week",
  "maxItems": 20,
  "scrapeJobDetails": false
}

Pégalo en el editor JSON del Actor. Cambia los ejemplos por tus propios objetivos antes de ejecutar.

Consulta el formulario actual en Apify

Elige cómo buscar.

Puedes crear una búsqueda con palabras clave y ubicaciones o copiar una URL filtrada de LinkedIn Jobs. Empieza con las fichas y activa los detalles cuando necesites descripciones para investigar habilidades.

Método de búsquedaCuándo usarloQué cambia
Palabras clave y ubicacionesCuándo usarloQuieres encontrar resultados relevantes antes de elegir objetivos concretos.Qué cambiaPuestos o habilidades. Cada palabra clave se combina con cada ubicación: tres por dos generan seis búsquedas. Los empleos repetidos se entregan una vez.
URLs de páginas de búsquedaCuándo usarloYa configuraste la búsqueda en el sitio de origen.Qué cambiaPega URLs de búsquedas de empleo filtradas en LinkedIn. Conservan sus filtros. Las páginas de empresas se buscan por nombre; los enlaces de empleos individuales no se admiten. Borra palabras clave precargadas si solo quieres estas URLs.
IDs de empresasCuándo usarloSabes exactamente qué entidad quieres recopilar.Qué cambiaLimita por IDs numéricos de empresas del filtro f_C de la URL. El slug de una página de empresa no es ese identificador.

La diferencia importante

Cada página contiene 10 empleos. La búsqueda pública ronda un máximo de 1.000; más páginas no lo elimina. Divide por ubicación, fecha o contrato.

Compara el scraper relacionado

Todos los parámetros, explicados.

Usa estos nombres exactos en JSON. En el formulario de Apify, introduce cada elemento de las listas por separado y mantén números y booleanos en su tipo correcto.

Default y prefill son distintos. El valor por defecto se aplica si omites un ajuste; el prellenado es un ejemplo introducido en el formulario de Apify. Revisa objetivos y límites antes de cada ejecución. Algunos ajustes no tienen valor por defecto en el esquema. Debes indicar al menos un objetivo admitido.

Objetivos y búsquedas5
searchUrls
Lista

Pega URLs de búsquedas de empleo filtradas en LinkedIn. Conservan sus filtros. Las páginas de empresas se buscan por nombre; los enlaces de empleos individuales no se admiten. Borra palabras clave precargadas si solo quieres estas URLs.

keywords
ListaEjemplo precargado: ["python developer"]

Puestos o habilidades. Cada palabra clave se combina con cada ubicación: tres por dos generan seis búsquedas. Los empleos repetidos se entregan una vez.

locations
ListaEjemplo precargado: ["London"]

Ciudades, regiones o países reconocidos por LinkedIn. Cada ubicación añade búsquedas independientes. Usa geoId si un nombre puede referirse a varios lugares.

geoId
Texto

Identificador numérico de ubicación de LinkedIn, obtenido de geoId en una URL filtrada. Selecciona un lugar con más precisión que un nombre.

companyIds
Lista

Limita por IDs numéricos de empresas del filtro f_C de la URL. El slug de una página de empresa no es ese identificador.

Mercados, fechas y filtros6
datePosted
TextoPor defecto: any

any, month, week o day. day significa últimas 24 horas, no fecha de calendario. Para seguimiento diario combina day con sortBy date y conserva IDs.

Valores JSON sugeridos
any month week day
sortBy
TextoPor defecto: relevance

relevance utiliza el ranking de LinkedIn; date muestra las ofertas más nuevas primero. Con un límite global, el orden decide qué empleos recopilas.

Valores JSON sugeridos
relevance date
experienceLevel
Lista

Lista de niveles de experiencia. Varias selecciones amplían la búsqueda. Usa los valores sugeridos; valores desconocidos se omiten con un aviso.

Valores JSON sugeridos
internship entry associate mid-senior director executive
jobType
Lista

Tipos de contrato como full-time, contract o internship. Son distintos de workplaceType, que describe trabajo remoto, híbrido o presencial.

Valores JSON sugeridos
full-time part-time contract temporary volunteer internship other
workplaceType
Lista

Elige on-site, remote, hybrid o varios en una lista. El filtro remoto no garantiza que la empresa acepte candidatos de cualquier país.

Valores JSON sugeridos
on-site remote hybrid
distance
Entero

Radio de búsqueda en millas, de 0 a 100. Afecta a búsquedas geográficas; no cambia si un puesto está clasificado como remoto.

Límites, detalles y proxies6
scrapeJobDetails
Verdadero o falsoPor defecto: true

Añade descripción, experiencia, tipo de empleo, funciones, sectores y candidatos mediante una solicitud extra por puesto. Desactívalo para listas rápidas; utiliza proxy si está activado.

maxItems
EnteroEjemplo precargado: 50

Límite de empleos únicos entre todas las palabras clave, ubicaciones y URLs. No es por búsqueda. Vacío elimina este límite, pero sigue actuando maxPagesPerSearch.

maxPagesPerSearch
Entero

Cada página contiene 10 empleos. La búsqueda pública ronda un máximo de 1.000; más páginas no lo elimina. Divide por ubicación, fecha o contrato.

maxConcurrency
EnteroPor defecto: 2

De 1 a 10 búsquedas a la vez, por defecto 2. Más procesos pueden aumentar los bloqueos. Mantén un valor moderado con proxies suficientes.

delayMs
EnteroPor defecto: 1000

Pausa entre solicitudes de páginas, en milisegundos. Auméntala si la fuente limita solicitudes; reducirla no elimina la latencia ni sus límites.

proxyConfiguration
ObjetoPor defecto: {"useApifyProxy":true}Ejemplo precargado: {"useApifyProxy":true}

Muy recomendable, especialmente para descripciones completas. LinkedIn puede bloquear detalles antes que tarjetas; que falten descripciones no significa que no existan.

Ajustes avanzados y recuperación4
proxyRotations
EnteroPor defecto: 3

Reintenta solicitudes rechazadas con una sesión proxy nueva. Más intentos pueden superar bloqueos temporales, pero añaden tiempo y tráfico. Mantén el valor predeterminado salvo que el registro indique un motivo para cambiarlo.

resume
Verdadero o falsoPor defecto: true

Guarda el progreso aproximadamente cada 30 segundos para continuar tras un reinicio o migración. Déjalo activado.

continueFromLastRun
Verdadero o falsoPor defecto: false

Continúa el trabajo pendiente de la ejecución anterior con la misma entrada. Los resultados anteriores quedan en su dataset. Usa false para una colección nueva o periódica.

impersonate
TextoPor defecto: chrome131

Identidad de navegador utilizada en las solicitudes. Conserva el valor predeterminado salvo que investigues bloqueos inmediatos. Cambia la huella de la solicitud, no los datos solicitados.

Esta referencia sigue los campos del Actor. Revisa el formulario actual antes de cambiar un flujo de producción. Consulta el formulario actual en Apify.

Configuraciones listas para copiar.

Cada ejemplo es una ejecución independiente. Empieza con poco, revisa los resultados y amplía después. Adapta objetivos, países y fechas a tu pregunta.

Seguimiento diario de contratación

Recopila puestos recientes de ingeniería de datos en Londres sin descripciones. Programa a diario y guarda IDs y fechas para distinguir puestos nuevos de los vistos ayer.

Seguimiento diario de contratación
{
  "keywords": ["data engineer"],
  "locations": ["London"],
  "datePosted": "day",
  "sortBy": "date",
  "maxItems": 50,
  "scrapeJobDetails": false
}

Analiza las habilidades que piden empresas

Recopila puestos híbridos a tiempo completo que mencionen dbt o BigQuery, con descripciones. Extrae habilidades frecuentes con SQL o pídele a Claude que las agrupe. El límite de 50 cubre ambas búsquedas juntas.

Analiza las habilidades que piden empresas
{
  "keywords": ["dbt", "BigQuery"],
  "locations": ["London"],
  "datePosted": "week",
  "jobType": ["full-time"],
  "workplaceType": ["hybrid"],
  "maxItems": 50,
  "scrapeJobDetails": true,
  "maxConcurrency": 2
}

Investiga puestos remotos en un mercado

Busca puestos Python de nivel inicial y asociado marcados como remotos en Alemania. Remoto no implica contratación mundial. Lee los requisitos de residencia, horario y permiso de trabajo.

Investiga puestos remotos en un mercado
{
  "keywords": ["python developer"],
  "locations": ["Germany"],
  "datePosted": "week",
  "experienceLevel": ["entry", "associate"],
  "workplaceType": ["remote"],
  "maxItems": 50,
  "scrapeJobDetails": true
}

Ejecuta, revisa, exporta y repite.

Guarda IDs, empresa, ubicación, fecha y enlaces. Las descripciones permiten extraer habilidades, nivel y condiciones, pero pueden faltar salarios y candidatos. Son empleos públicos, no contactos de reclutadores. Para tendencias, elimina duplicados dentro de cada muestra y conserva observaciones repetidas en el tiempo.

  1. Revisa el dataset y el registro SUMMARY. Compara el total con tu límite, revisa entradas fallidas u omitidas y verifica algunos enlaces originales.
  2. Conserva los IDs originales y añade collected_at y run_id al guardar. Usa CSV para columnas planas y JSON para arrays o detalles anidados.
  3. Guarda la configuración probada como Apify Task y prográmala. Para capturas periódicas, deja continueFromLastRun en false. Elimina duplicados por ID conservando la fecha de cada observación.
  4. En Make o n8n, espera una ejecución correcta, obtiene el dataset y mapea campos a Sheets o tu almacén. Alimenta Looker Studio mediante una tabla de informes y usa dbt para transformar y validar modelos.
  5. El mismo JSON sirve con la API de Actors de Apify. En Claude con Apify MCP, indica este Actor, pide que revise el esquema y define objetivos, mercados y límites antes de ejecutar.

Reanudar no es obtener una captura nueva

resume protege la ejecución actual si Apify la reinicia. continueFromLastRun continúa una anterior con la misma configuración; sus registros siguen en el dataset anterior. Une ambos datasets y aumenta un límite ya alcanzado. Empieza de nuevo si quieres ver qué ha cambiado hoy.

Sigue las guías para Sheets, Claude, Looker y BigQuery
Ejecuta este Actor con la API

Guarda una configuración anterior como input.json. Define APIFY_TOKEN con tu token de Apify en la terminal y envía el archivo como cuerpo de la solicitud.

Inicia la ejecución
curl --fail-with-body --request POST \
  --url "https://api.apify.com/v2/actors/jmlp~linkedin-jobs-scraper/runs" \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data-binary @input.json

La respuesta contiene un ID de ejecución y defaultDatasetId, no resultados finales. Espera a que termine con éxito, define DATASET_ID con ese ID y recupera los elementos. Para datasets grandes, usa limit y offset para paginar.

Recupera el dataset
curl --fail-with-body \
  --url "https://api.apify.com/v2/datasets/$DATASET_ID/items?format=json" \
  --header "Authorization: Bearer $APIFY_TOKEN"

Referencia de la API de ejecución y exportación de Apify
Opciones de exportación del dataset

Cuando los resultados no cuadran.

Cambia un ajuste cada vez, mantén un límite bajo y revisa el resumen antes de ampliar.

El resultado existe, pero faltan los campos detallados.

Añade descripción, experiencia, tipo de empleo, funciones, sectores y candidatos mediante una solicitud extra por puesto. Desactívalo para listas rápidas; utiliza proxy si está activado.

Las solicitudes de detalles empiezan a bloquearse.

Muy recomendable, especialmente para descripciones completas. LinkedIn puede bloquear detalles antes que tarjetas; que falten descripciones no significa que no existan.

La ubicación coincide con un lugar distinto.

Identificador numérico de ubicación de LinkedIn, obtenido de geoId en una URL filtrada. Selecciona un lugar con más precisión que un nombre.

La ejecución terminó sin resultados

El éxito indica que el Actor terminó, no que la fuente devolviera datos. Revisa SUMMARY.inputProblem, SUMMARY.problem y el registro: pueden faltar objetivos, haber filtros inválidos o solicitudes rechazadas. Prueba un objetivo conocido con menos filtros.

Menos registros de lo esperado

Revisa límites globales, por búsqueda y por página, cobertura y duplicados. Varias búsquedas pueden encontrar el mismo registro. El total de la fuente puede incluir datos no disponibles públicamente. Revisa los trabajos pendientes antes de dar el dataset por completo.

Usa los resultados en tus herramientas.

Google Sheets

Reúne company, role, posted_date y job_url en una hoja. Añade la categoría de señal revisada y otra columna para el siguiente paso del equipo.

Leer la guía
Claude + MCP

Pide a Claude que encuentre habilidades y herramientas explícitas en las descripciones y cite las URL. Debe marcar las sugerencias de demanda comercial como hipótesis.

Leer la guía
Looker Studio

Grafica nuevos ID por empresa, ubicación y categoría de puesto. Mantén los criterios de búsqueda y muestra la cobertura de tu muestra.

Leer la guía
BigQuery + dbt

Guarda observaciones originales y una tabla actual de empleos por job_id. Verifica las empresas antes de unirlas con cuentas del CRM.

Leer la guía
Copiar un prompt para Claude
Prompt para Claude + Apify MCP
Comprueba jmlp/linkedin-jobs-scraper y recopila hasta 50 ofertas de analytics engineer en Londres de la última semana con detalles. Identifica menciones explícitas de Python, SQL o dbt, cita cada job_url y crea una selección de empresas. Marca la demanda de servicios como hipótesis.

Los campos que obtendrás.

Conserva la hora de recopilación y los ID originales. Los necesitarás para comprobar el origen de un resultado o compararlo con otra ejecución.

Antes de sacar conclusiones

Una vacante indica intención de contratar, no contratación, presupuesto ni expansión confirmados. Pueden faltar salarios y candidatos. Comprueba republicaciones y puestos duplicados antes de concluir crecimiento; conserva ID y fechas.

job_id / job_url
ID estable de la oferta y enlace original.
title / company / company_url
Puesto e identidad pública de la empresa.
location / posted_date
Ubicación y fecha publicada de la oferta.
description
Texto del empleo al activar los detalles.
seniority_level / employment_type
Clasificaciones disponibles del puesto.
salary / applicants
Solo se rellenan cuando la fuente los publica.

Preguntas frecuentes.

¿Debo compartir una cuenta o cookie de LinkedIn?

No. El scraper usa ofertas públicas y no requiere tu cuenta ni cookies de LinkedIn. Necesitas una cuenta de Apify para ejecutarlo.

¿Puede confirmar que una empresa crece?

No. Las vacantes pueden sugerir prioridades, pero no prueban contrataciones realizadas ni crecimiento. Úsalas para orientar más investigación.

Fuente y detalles actuales del producto: Actor LinkedIn Jobs de JMLP en Apify.

Otros scrapers
que podrían servirte.

Hablemos de
tu proyecto.

Cuéntame qué necesitas recopilar o entender. Puedo ayudarte con un scraper a medida, un pipeline o el análisis.

Hablemos de tu proyecto