LinkedIn Jobs Scraper & API - No Login, Salary, Company avatar

LinkedIn Jobs Scraper & API - No Login, Salary, Company

Pricing

from $11.54 / 1,000 results

Go to Apify Store
LinkedIn Jobs Scraper & API - No Login, Salary, Company

LinkedIn Jobs Scraper & API - No Login, Salary, Company

Scrape public LinkedIn job postings by keyword, location or search URL, no login and no API key. Get title, company, logo, salary, seniority, employment type, job function, industries, applicant count, apply link and full description. Filter by date, remote, experience. Export JSON, CSV, Excel.

Pricing

from $11.54 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

0

Monthly active users

5 days ago

Last modified

Share

LinkedIn Jobs Scraper

LinkedIn Jobs Scraper & API - No Login, Salary, Company Data

Scrape public LinkedIn job postings by keyword, location, or pasted search URL, with no login and no API key. This LinkedIn jobs scraper reads the public LinkedIn guest jobs pages over plain HTTP and returns one clean, normalized record per posting: title, company, company logo, location, posting date, structured salary, seniority, employment type, job function, industries, applicant count, apply link, and the full job description in text and HTML.

Built for recruiters, talent sourcing, job boards, market and salary research, and anyone who needs LinkedIn job listings data at scale without a browser, without an account, and without a LinkedIn API key.

Here is one real record from a live run, with every field the actor returns (description trimmed with an explicit note; all values are real):

{
"imageUrl": "https://media.licdn.com/dms/image/v2/C4E0BAQHdArq26Tw7eQ/company-logo_100_100/company-logo_100_100/0/1631311971066/osohq_logo",
"title": "Software Engineer",
"company": "Oso",
"location": "New York, NY",
"remote": null,
"postedAt": "2026-01-17",
"postedText": "7 months ago",
"jobId": "4363726700",
"url": "https://www.linkedin.com/jobs/view/software-engineer-at-oso-4363726700",
"companyUrl": "https://www.linkedin.com/company/osohq",
"companySlug": "osohq",
"salary": null,
"benefits": null,
"activelyHiring": false,
"description": "Old problem, new $25B+ market. Companies like AWS, Stripe, and Twilio have ...[trimmed]",
"descriptionHtml": "<strong>Old problem, new $25B+ market</strong> ...[trimmed HTML]",
"applyType": "offsite",
"easyApply": false,
"applyUrl": "https://www.linkedin.com/signup/cold-join?session_redirect=https://www.linkedin.com/jobs/view/software-engineer-at-oso-4363726700",
"seniority": "Not Applicable",
"employmentType": "Full-time",
"jobFunction": "Engineering and Information Technology",
"jobFunctions": ["Engineering", "Information Technology"],
"industries": "Software Development",
"industriesList": ["Software Development"],
"applicants": "Over 200 applicants",
"applicantsCount": 200,
"postedTimeAgo": "7 months ago",
"companyLinkedinUrl": "https://www.linkedin.com/company/osohq",
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryPeriod": null,
"observedAt": "2026-09-06T06:05:00.973Z",
"error": null
}

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the public LinkedIn guest jobs listing with the keywords, location, and filters you pass (or the LinkedIn search URLs you paste), paginates through the results, and writes one normalized record per posting to the run dataset. When withDetails is on, it opens each posting to add the full description, seniority level, employment type, job function, industries, apply route, and applicant count. Salary text is parsed into numeric salaryMin and salaryMax with currency and period, dates are normalized to YYYY-MM-DD, and any missing source value is returned as null.

Data comes only from LinkedIn job pages that are publicly available without a login. It does not read anything behind a LinkedIn account and it does not return recruiter contact details, because the public guest pages do not expose them.

Why this scraper

  • No login, no API key, no browser. Pure HTTP against the public guest endpoints. Nothing to authenticate, nothing to maintain.
  • Every public field, mapped. Title, company, logo, location, dates, structured salary, seniority, employment type, job function, industries, apply route and link, Easy Apply flag, and applicant count when LinkedIn shows it.
  • Search the way you want. Structured filters or pasted LinkedIn search URLs, or both in one run.
  • Clean, typed output. Numeric salary fields, arrays for functions and industries, ISO timestamps, honest null where LinkedIn has no value. No fabricated fields.
  • Global. Any country and language LinkedIn serves publicly.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 software engineer jobs in the United States with full detail.

{
"keywords": "software engineer",
"location": "United States",
"maxJobs": 10,
"withDetails": true
}

keywords is required unless you provide one or more startUrls. Every other input is optional; leave any filter empty or unset to skip it.

Input reference

FieldTypeRequiredDefaultDescription
keywordsstringyes*software engineerJob search keywords, for example product manager. Required unless startUrls is set.
locationstringnoUnited StatesLocation name to search in, for example London or Remote.
maxJobsintegerno10Maximum postings to collect. Free Apify plans are capped at 10 per run.
withDetailsbooleannotrueWhen on, open each posting for full description, seniority, employment type, job function, industries, apply route, and applicant count.
timePostedenumno(any)How recently posted: r86400 (24 hours), r604800 (week), r2592000 (month).
workplaceTypeenumno(any)1 on-site, 2 remote, 3 hybrid.
experienceLevelenumno(any)1 internship through 6 executive.
jobTypeenumno(any)F full-time, P part-time, C contract, T temporary, I internship, V volunteer, O other.
salaryRangeenumno(any)Minimum posted pay bucket, 1 (40k+) through 9 (200k+).
easyApplyOnlybooleannofalseOnly return jobs offering LinkedIn Easy Apply.
sortByenumnoRR most relevant, DD most recent.
startUrlsarrayno(empty)Paste one or more LinkedIn public job search URLs. Every filter in the URL is read automatically and run alongside the fields above.
companyIdsstringno(empty)Restrict to LinkedIn numeric company IDs, comma separated, for example 1035,1441.
geoIdstringno(empty)LinkedIn numeric geo ID for exact location targeting. Overrides location when set.
distanceintegerno(none)Search radius in miles around the location (0 to 100).
industryIdsstringno(empty)Restrict to LinkedIn numeric industry IDs, comma separated.
jobFunctionIdsstringno(empty)Restrict to LinkedIn function codes, comma separated, for example eng,it.
titleIncludearrayno(empty)Keep only jobs whose title contains one of these phrases (case insensitive).
titleExcludearrayno(empty)Drop jobs whose title contains any of these phrases (case insensitive).
skipJobIdsarrayno(empty)LinkedIn job IDs to exclude, useful for incremental runs.
under10ApplicantsbooleannofalseKeep only jobs with fewer than 10 applicants. Needs withDetails on.
proxyobjectnoresidentialProxy used to reach LinkedIn. Defaults to Apify residential proxy, the most reliable option.

Filters combine with logical AND.

Output reference

One dataset item per posting. Types: string, integer, boolean, string[], or null when the source value is absent.

FieldTypeDescription
imageUrlstringCompany logo image URL.
titlestringJob title.
companystringCompany name.
locationstringPosting location text.
remotebooleantrue when the role is remote (from filter or location text), false for on-site/hybrid, null when unknown.
postedAtstringPosting date (YYYY-MM-DD), or null.
postedTextstringHuman-readable posting age from the search card, for example 7 months ago.
jobIdstringLinkedIn job ID (unique per posting).
urlstringPublic LinkedIn job view URL (canonical).
companyUrlstringLinkedIn company page URL from the search card.
companySlugstringCompany slug parsed from the company URL.
salarystringRaw salary text as shown, or null.
benefitsstringBenefits summary text, or null.
activelyHiringbooleantrue when the card is flagged actively hiring.
descriptionstringFull job description as plain text (only when withDetails).
descriptionHtmlstringFull job description as HTML (only when withDetails).
applyTypestringoffsite (external ATS) or onsite (LinkedIn Easy Apply), or null.
easyApplybooleantrue for LinkedIn Easy Apply, false for offsite apply, null when unknown.
applyUrlstringDirect apply URL, or null.
senioritystringSeniority level, for example Mid-Senior level, or null.
employmentTypestringEmployment type, for example Full-time, or null.
jobFunctionstringJob function label as one string, or null.
jobFunctionsstring[]Job function labels split into an array.
industriesstringIndustries label as one string, or null.
industriesListstring[]Industry labels split into an array.
applicantsstringApplicant count text as shown, for example Over 200 applicants, or null.
applicantsCountintegerParsed numeric applicant count, or null.
postedTimeAgostringPosting age from the detail page, or null.
companyLinkedinUrlstringCompany LinkedIn URL from the detail page, or null.
salaryMinintegerParsed minimum salary, or null.
salaryMaxintegerParsed maximum salary, or null.
salaryCurrencystringSalary currency code, for example USD, or null.
salaryPeriodstringSalary period, for example year, or null.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

How it compares

This actor is a strict superset of the public guest data other LinkedIn jobs scrapers expose, and it accepts the same inputs, while being honest about what a login-only or browser-based tool can additionally reach.

CapabilityThis actor (guest, no login)Login or browser based competitors
Keywords, location, geoId, distanceYesYes
Date, workplace, experience, job type, salary, Easy Apply filtersYesYes
Company / industry / job function IDsYesSome
Paste LinkedIn search URLs (startUrls)YesSome
Title include / exclude, skip IDs, under 10 applicantsYesSome
Full description (text + HTML)YesYes
Seniority, employment type, function, industriesYesYes
Structured salary (min, max, currency, period)YesSome
Company logo + LinkedIn URLYesYes
Applicant countYes, when LinkedIn shows it (often bucketed, e.g. Over 200)Sometimes exact when logged in
Recruiter / job poster name, photo, profileNo, login onlyYes
Company employee and follower counts, website, descriptionNo, job data onlySome
No login, no API key, HTTP onlyYesOften browser based

Honest note: recruiter and job-poster fields and deep company-profile enrichment require a logged-in LinkedIn session or an extra company-page crawl. The public guest pages do not expose them, so this actor returns honest null rather than fabricating those fields. Applicant counts are returned exactly as LinkedIn shows them publicly, which is often a bucket such as Over 200 applicants.

Run via API and CLI

Start a run and read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~linkedin-jobs-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"keywords":"software engineer","location":"United States","maxJobs":25,"withDetails":true}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~linkedin-jobs-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"keywords":"data scientist","workplaceType":"2","timePosted":"r604800","maxJobs":100}'

Apify CLI:

apify call scrapers_lat/linkedin-jobs-scraper \
--input '{"keywords":"product manager","location":"London"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per posting returned (result event). See the pricing tab for the current per-result price.
  • Details add-on. When withDetails is on, a details event is charged only for paid plans and only when a per-job detail fetch genuinely succeeds. Failed detail fetches stay on result only.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 postings per run. Upgrade for higher limits.

FAQ and troubleshooting

Does this need a LinkedIn login or API key? No. It reads only the public LinkedIn guest job pages, which are visible without an account. No login, no cookies, no LinkedIn API key.

A run returned 0 records. Why? Your keyword and filter combination matched nothing, or LinkedIn served no public results for that query. Loosen filters (drop salaryRange, experienceLevel, or widen location). Zero-result runs are not charged.

Some runs are slower or return fewer rows. Why? LinkedIn rate-limits its guest endpoints. The actor uses Apify residential proxy and paces requests with retries to stay reliable, but during heavy throttling a large run can slow down or stop early. Re-run or narrow the query if that happens.

Why is remote null? remote is set from the workplaceType filter and from the location text. When neither indicates remote, the field stays null because the public card does not always label workplace type.

How do I get the full job description and seniority? Keep withDetails on (the default). Those fields come from opening each posting.

Can I target exact locations, companies, or a saved search? Yes. Use geoId for an exact LinkedIn location, companyIds for specific companies, industryIds or jobFunctionIds for precise segments, or paste your LinkedIn search URLs into startUrls.

Does this return recruiter or contact emails from LinkedIn? No. The public guest pages do not expose recruiter or job-poster contact details, so the actor does not return them.

Is this an official LinkedIn tool? No. This actor is independent and has no affiliation with LinkedIn. It reads only job postings that are publicly available without a login.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.

Independent tool, not affiliated with LinkedIn. Accesses only publicly available job postings that do not require a login.


Scraper de Empleos de LinkedIn y API - Sin Login, Salario y Datos de Empresa

Extrae ofertas de empleo publicas de LinkedIn por palabra clave, ubicacion o URL de busqueda pegada, sin login y sin clave de API. Este scraper de empleos de LinkedIn lee las paginas publicas de empleos de invitado de LinkedIn por HTTP simple y devuelve un registro limpio y normalizado por oferta: titulo, empresa, logo de la empresa, ubicacion, fecha de publicacion, salario estructurado, nivel de experiencia, tipo de empleo, funcion laboral, sectores, numero de candidatos, enlace para postular y la descripcion completa del puesto en texto y HTML.

Creado para reclutadores, busqueda de talento, portales de empleo, estudios de mercado y salarios, y para cualquiera que necesite datos de ofertas de empleo de LinkedIn a escala sin navegador, sin cuenta y sin clave de API de LinkedIn.

Aqui hay un registro real de una ejecucion en vivo, con todos los campos que devuelve el actor (descripcion recortada con una nota explicita; todos los valores son reales):

{
"imageUrl": "https://media.licdn.com/dms/image/v2/C4E0BAQHdArq26Tw7eQ/company-logo_100_100/company-logo_100_100/0/1631311971066/osohq_logo",
"title": "Software Engineer",
"company": "Oso",
"location": "New York, NY",
"remote": null,
"postedAt": "2026-01-17",
"postedText": "7 months ago",
"jobId": "4363726700",
"url": "https://www.linkedin.com/jobs/view/software-engineer-at-oso-4363726700",
"companyUrl": "https://www.linkedin.com/company/osohq",
"companySlug": "osohq",
"salary": null,
"benefits": null,
"activelyHiring": false,
"description": "Old problem, new $25B+ market. Companies like AWS, Stripe, and Twilio have ...[recortado]",
"descriptionHtml": "<strong>Old problem, new $25B+ market</strong> ...[HTML recortado]",
"applyType": "offsite",
"easyApply": false,
"applyUrl": "https://www.linkedin.com/signup/cold-join?session_redirect=https://www.linkedin.com/jobs/view/software-engineer-at-oso-4363726700",
"seniority": "Not Applicable",
"employmentType": "Full-time",
"jobFunction": "Engineering and Information Technology",
"jobFunctions": ["Engineering", "Information Technology"],
"industries": "Software Development",
"industriesList": ["Software Development"],
"applicants": "Over 200 applicants",
"applicantsCount": 200,
"postedTimeAgo": "7 months ago",
"companyLinkedinUrl": "https://www.linkedin.com/company/osohq",
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryPeriod": null,
"observedAt": "2026-09-06T06:05:00.973Z",
"error": null
}

📥 Entrada · 📤 Salida · 💰 Precios · ▶️ Ejemplos

Apify Cobertura Salida Facturacion

Tabla de contenido

Que hace

El actor busca en el listado publico de empleos de invitado de LinkedIn con las palabras clave, la ubicacion y los filtros que indiques (o las URL de busqueda de LinkedIn que pegues), pagina por los resultados y escribe un registro normalizado por oferta en el dataset de la ejecucion. Cuando withDetails esta activo, abre cada oferta para agregar la descripcion completa, el nivel de experiencia, el tipo de empleo, la funcion laboral, los sectores, la ruta para postular y el numero de candidatos. El texto de salario se convierte en salaryMin y salaryMax numericos con moneda y periodo, las fechas se normalizan a YYYY-MM-DD y cualquier valor ausente se devuelve como null.

Los datos provienen solo de paginas de empleo de LinkedIn que estan disponibles publicamente sin login. No lee nada detras de una cuenta de LinkedIn y no devuelve datos de contacto de reclutadores, porque las paginas publicas de invitado no los exponen.

Por que este scraper

  • Sin login, sin clave de API, sin navegador. HTTP puro contra los endpoints publicos de invitado. Nada que autenticar, nada que mantener.
  • Todos los campos publicos, mapeados. Titulo, empresa, logo, ubicacion, fechas, salario estructurado, nivel, tipo de empleo, funcion laboral, sectores, ruta y enlace para postular, indicador de Easy Apply y numero de candidatos cuando LinkedIn lo muestra.
  • Busca como quieras. Filtros estructurados o URL de busqueda de LinkedIn pegadas, o ambos en una sola ejecucion.
  • Salida limpia y tipada. Campos de salario numericos, arreglos para funciones y sectores, marcas de tiempo ISO y null honesto cuando LinkedIn no tiene valor. Sin campos inventados.
  • Global. Cualquier pais e idioma que LinkedIn sirva publicamente.

Inicio rapido

Abre el actor, pega esto en la entrada y presiona Run. Devuelve hasta 10 empleos de software engineer en Estados Unidos con detalle completo.

{
"keywords": "software engineer",
"location": "United States",
"maxJobs": 10,
"withDetails": true
}

keywords es obligatorio salvo que indiques uno o mas startUrls. El resto de las entradas es opcional; deja cualquier filtro vacio o sin definir para omitirlo.

Referencia de entrada

CampoTipoObligatorioPredeterminadoDescripcion
keywordsstringsi*software engineerPalabras clave de busqueda, por ejemplo product manager. Obligatorio salvo que uses startUrls.
locationstringnoUnited StatesUbicacion a buscar, por ejemplo London o Remote.
maxJobsintegerno10Maximo de ofertas a recolectar. Los planes gratuitos de Apify tienen tope de 10 por ejecucion.
withDetailsbooleannotrueSi esta activo, abre cada oferta para descripcion completa, nivel, tipo de empleo, funcion, sectores, ruta de postulacion y candidatos.
timePostedenumno(cualquiera)Que tan reciente: r86400 (24 horas), r604800 (semana), r2592000 (mes).
workplaceTypeenumno(cualquiera)1 presencial, 2 remoto, 3 hibrido.
experienceLevelenumno(cualquiera)1 practicas hasta 6 ejecutivo.
jobTypeenumno(cualquiera)F tiempo completo, P medio tiempo, C contrato, T temporal, I practicas, V voluntariado, O otro.
salaryRangeenumno(cualquiera)Rango minimo de pago publicado, 1 (40k+) hasta 9 (200k+).
easyApplyOnlybooleannofalseSolo devolver empleos con LinkedIn Easy Apply.
sortByenumnoRR mas relevante, DD mas reciente.
startUrlsarrayno(vacio)Pega una o mas URL publicas de busqueda de empleo de LinkedIn. Cada filtro de la URL se lee automaticamente junto con los campos de arriba.
companyIdsstringno(vacio)Restringir a IDs numericos de empresa de LinkedIn, separados por coma, por ejemplo 1035,1441.
geoIdstringno(vacio)ID geografico numerico de LinkedIn para ubicacion exacta. Sustituye a location cuando se define.
distanceintegerno(ninguno)Radio de busqueda en millas alrededor de la ubicacion (0 a 100).
industryIdsstringno(vacio)Restringir a IDs numericos de sector de LinkedIn, separados por coma.
jobFunctionIdsstringno(vacio)Restringir a codigos de funcion de LinkedIn, separados por coma, por ejemplo eng,it.
titleIncludearrayno(vacio)Conservar solo empleos cuyo titulo contenga una de estas frases (sin distinguir mayusculas).
titleExcludearrayno(vacio)Descartar empleos cuyo titulo contenga alguna de estas frases (sin distinguir mayusculas).
skipJobIdsarrayno(vacio)IDs de empleo de LinkedIn a excluir, util para ejecuciones incrementales.
under10ApplicantsbooleannofalseConservar solo empleos con menos de 10 candidatos. Requiere withDetails activo.
proxyobjectnoresidencialProxy usado para llegar a LinkedIn. Por defecto usa proxy residencial de Apify, la opcion mas confiable.

Los filtros se combinan con AND logico.

Referencia de salida

Un elemento de dataset por oferta. Tipos: string, integer, boolean, string[], o null cuando el valor de origen esta ausente.

CampoTipoDescripcion
imageUrlstringURL del logo de la empresa.
titlestringTitulo del puesto.
companystringNombre de la empresa.
locationstringTexto de ubicacion de la oferta.
remotebooleantrue si el puesto es remoto (por filtro o texto de ubicacion), false si es presencial o hibrido, null si se desconoce.
postedAtstringFecha de publicacion (YYYY-MM-DD), o null.
postedTextstringAntiguedad legible de la tarjeta de busqueda, por ejemplo 7 months ago.
jobIdstringID de empleo de LinkedIn (unico por oferta).
urlstringURL publica de la oferta en LinkedIn (canonica).
companyUrlstringURL de la pagina de empresa desde la tarjeta de busqueda.
companySlugstringSlug de la empresa extraido de la URL.
salarystringTexto de salario tal como aparece, o null.
benefitsstringResumen de beneficios, o null.
activelyHiringbooleantrue cuando la tarjeta esta marcada como contratando activamente.
descriptionstringDescripcion completa en texto plano (solo con withDetails).
descriptionHtmlstringDescripcion completa en HTML (solo con withDetails).
applyTypestringoffsite (ATS externo) u onsite (LinkedIn Easy Apply), o null.
easyApplybooleantrue para LinkedIn Easy Apply, false para postulacion externa, null si se desconoce.
applyUrlstringURL directa de postulacion, o null.
senioritystringNivel de experiencia, por ejemplo Mid-Senior level, o null.
employmentTypestringTipo de empleo, por ejemplo Full-time, o null.
jobFunctionstringEtiqueta de funcion laboral como una cadena, o null.
jobFunctionsstring[]Etiquetas de funcion laboral en un arreglo.
industriesstringEtiqueta de sectores como una cadena, o null.
industriesListstring[]Etiquetas de sector en un arreglo.
applicantsstringTexto de numero de candidatos, por ejemplo Over 200 applicants, o null.
applicantsCountintegerNumero de candidatos analizado, o null.
postedTimeAgostringAntiguedad de la publicacion desde la pagina de detalle, o null.
companyLinkedinUrlstringURL de LinkedIn de la empresa desde la pagina de detalle, o null.
salaryMinintegerSalario minimo analizado, o null.
salaryMaxintegerSalario maximo analizado, o null.
salaryCurrencystringCodigo de moneda del salario, por ejemplo USD, o null.
salaryPeriodstringPeriodo del salario, por ejemplo year, o null.
observedAtstringMarca de tiempo ISO 8601 de cuando se recolecto el registro.
errorstringnull en exito. En una ejecucion fallida se escribe un solo elemento con el campo error poblado.

Como se compara

Este actor es un superconjunto estricto de los datos publicos de invitado que exponen otros scrapers de empleos de LinkedIn, y acepta las mismas entradas, siendo honesto sobre lo que una herramienta con login o basada en navegador puede alcanzar adicionalmente.

CapacidadEste actor (invitado, sin login)Competidores con login o navegador
Palabras clave, ubicacion, geoId, distanciaSiSi
Filtros de fecha, modalidad, experiencia, tipo de empleo, salario, Easy ApplySiSi
IDs de empresa / sector / funcion laboralSiAlgunos
Pegar URL de busqueda de LinkedIn (startUrls)SiAlgunos
Incluir / excluir por titulo, omitir IDs, menos de 10 candidatosSiAlgunos
Descripcion completa (texto + HTML)SiSi
Nivel, tipo de empleo, funcion, sectoresSiSi
Salario estructurado (min, max, moneda, periodo)SiAlgunos
Logo de empresa + URL de LinkedInSiSi
Numero de candidatosSi, cuando LinkedIn lo muestra (a menudo en rango, ej. Over 200)A veces exacto con login
Nombre, foto y perfil del reclutadorNo, solo con loginSi
Numero de empleados y seguidores, sitio web y descripcion de la empresaNo, solo datos del empleoAlgunos
Sin login, sin clave de API, solo HTTPSiA menudo basado en navegador

Nota honesta: los campos del reclutador y del publicador del empleo y la informacion profunda del perfil de empresa requieren una sesion con login en LinkedIn o un rastreo extra de la pagina de empresa. Las paginas publicas de invitado no los exponen, por lo que este actor devuelve null honesto en lugar de inventar esos campos. El numero de candidatos se devuelve tal como LinkedIn lo muestra publicamente, que a menudo es un rango como Over 200 applicants.

Uso por API y CLI

Inicia una ejecucion y lee el dataset. Reemplaza <TOKEN> con tu token de API de Apify.

Ejecucion sincrona y obtener elementos en una sola llamada:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~linkedin-jobs-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"keywords":"software engineer","location":"United States","maxJobs":25,"withDetails":true}'

Iniciar una ejecucion asincrona:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~linkedin-jobs-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"keywords":"data scientist","workplaceType":"2","timePosted":"r604800","maxJobs":100}'

CLI de Apify:

apify call scrapers_lat/linkedin-jobs-scraper \
--input '{"keywords":"product manager","location":"London"}'

Obtener resultados

Cada ejecucion escribe en un dataset. Obten los elementos en JSON, CSV o Excel cambiando format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginar datasets grandes
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> se devuelve como defaultDatasetId en el objeto de la ejecucion. Usa offset y limit para paginar. clean=true elimina campos vacios e internos.

Facturacion y limites

  • Pago por resultado. Se cobra por oferta devuelta (evento result). Consulta la pestana de precios para el precio actual por resultado.
  • Add-on de detalles. Con withDetails activo, el evento details se cobra solo en planes de pago y solo cuando la obtencion del detalle de la oferta tiene exito real. Las obtenciones fallidas se quedan solo en result.
  • Sin cargo por fallo. Si una ejecucion falla, el actor escribe un solo elemento con el campo error poblado y no cobra por el. Las ejecuciones vacias no cuestan nada.
  • Tope de gasto respetado. Define maxTotalChargeUsd en la ejecucion; al alcanzarlo, el actor deja de emitir y cobrar mas resultados facturables.
  • Los planes gratuitos de Apify tienen tope de 10 ofertas por ejecucion. Mejora tu plan para limites mayores.

Preguntas frecuentes

Necesita login o clave de API de LinkedIn? No. Lee solo las paginas publicas de empleos de invitado de LinkedIn, visibles sin cuenta. Sin login, sin cookies, sin clave de API de LinkedIn.

Una ejecucion devolvio 0 registros. Por que? Tu combinacion de palabra clave y filtros no coincidio con nada, o LinkedIn no sirvio resultados publicos para esa consulta. Afloja filtros (quita salaryRange, experienceLevel, o amplia location). Las ejecuciones sin resultados no se cobran.

Algunas ejecuciones son mas lentas o devuelven menos filas. Por que? LinkedIn limita la tasa de sus endpoints de invitado. El actor usa proxy residencial de Apify y regula las peticiones con reintentos para mantenerse confiable, pero con limitacion intensa una ejecucion grande puede ralentizarse o detenerse antes. Vuelve a ejecutar o acota la consulta si eso ocurre.

Por que remote es null? remote se define desde el filtro workplaceType y desde el texto de ubicacion. Cuando ninguno indica remoto, el campo queda en null porque la tarjeta publica no siempre etiqueta la modalidad.

Como obtengo la descripcion completa y el nivel? Manten withDetails activo (predeterminado). Esos campos vienen de abrir cada oferta.

Puedo apuntar a ubicaciones, empresas exactas o una busqueda guardada? Si. Usa geoId para una ubicacion exacta, companyIds para empresas especificas, industryIds o jobFunctionIds para segmentos precisos, o pega tus URL de busqueda de LinkedIn en startUrls.

Devuelve correos de reclutadores o contactos de LinkedIn? No. Las paginas publicas de invitado no exponen datos de contacto de reclutadores ni del publicador, por lo que el actor no los devuelve.

Es una herramienta oficial de LinkedIn? No. Este actor es independiente y no tiene afiliacion con LinkedIn. Lee solo ofertas de empleo disponibles publicamente sin login.

Scrapers relacionados

Mas scrapers en scrapers.lat

Creado y mantenido por scrapers.lat, donde publicamos scrapers para plataformas publicas de Estados Unidos y America Latina: registros de empresas, datos de gobierno, finanzas, e-commerce y mas. Explora el catalogo o solicita un scraper a medida en scrapers.lat.

Herramienta independiente, sin afiliacion con LinkedIn. Accede solo a ofertas de empleo disponibles publicamente que no requieren login.