Illustration de l’extracteur LinkedIn JobsOffres d’emploi publiques

Extracteur LinkedIn Jobs.

Une offre d’emploi révèle ce qu’une entreprise souhaite construire. Suivez les postes annoncés et leurs descriptions pour étudier expansions possibles et priorités techniques.

Lancer sur Apify

Comment utiliser cet extracteur.

Essayez ces exemples pour le marketing, la croissance et l’analyse concurrentielle.

01

Trouvez des entreprises qui recherchent vos compétences

Pour un cabinet de conseil en données, cherchez des entreprises recrutant des analytics engineers à Londres. Lisez les outils demandés, puis étudiez leur besoin éventuel d’aide sur des projets.

Gardez une sélection avec lien de l’offre, date d’observation et raison d’étudier l’entreprise.

02

Suivez les priorités de recrutement d’un concurrent

Suivez les postes en vente, partenariats et ingénierie. Comparez les nouvelles offres dans le temps pour étudier changements de priorités ou expansion possible.

Gardez une chronologie des recrutements avec vos notes.

03

Étudiez la demande d’une compétence technique

Pour une activité de formation, suivez les offres mentionnant Python, SQL ou dbt dans une même région. Étudiez descriptions et niveaux d’expérience avant de préparer les cours.

Basez l’étude de demande sur les offres collectées et précisez la couverture de l’échantillon.

DU PREMIER ESSAI AU FLUX RÉCURRENT

Votre premier essai, pas à pas.

  1. Ouvrez l’Actor sur Apify, choisissez Input et passez à l’éditeur JSON pour coller une configuration.
  2. Collez l’exemple dans l’éditeur JSON. Remplacez python developer et London par votre poste et votre lieu. Si vous utilisez searchUrls, effacez les mots-clés et lieux préremplis pour éviter des recherches supplémentaires.
  3. Choisissez une période récente dans datePosted et une limite globale maxItems de 20. Mettez scrapeJobDetails sur false pour un premier essai rapide. Vérifiez les postes et lieux avant d’activer les descriptions ou d’ajouter des filtres.
  4. Lancez l’exécution et consultez le journal. Vérifiez les cibles et filtres retenus avant de conclure qu’aucun résultat n’existe.
  5. Ouvrez Storage → Dataset, vérifiez quelques lignes et exportez en JSON pour les données imbriquées ou en CSV pour un premier examen dans un tableur.
Configuration de départ
{
  "keywords": ["python developer"],
  "locations": ["London"],
  "datePosted": "week",
  "maxItems": 20,
  "scrapeJobDetails": false
}

Collez ceci dans l’éditeur JSON de l’Actor. Remplacez les cibles d’exemple avant de lancer.

Voir le formulaire actuel sur Apify

Choisissez votre mode de recherche.

Vous pouvez construire une recherche avec des mots-clés et des lieux, ou copier une URL filtrée de LinkedIn Jobs. Commencez par les fiches, puis activez les détails pour étudier les compétences dans les descriptions.

Méthode de rechercheQuand l’utiliserCe qui change
Mots-clés et lieuxQuand l’utiliserVous cherchez des résultats pertinents avant de choisir des cibles précises.Ce qui changeIntitulés ou compétences. Chaque mot-clé est combiné à chaque lieu : trois mots-clés et deux lieux font six recherches. Les offres répétées sont dédupliquées.
URL de pages de rechercheQuand l’utiliserVous avez déjà configuré la recherche sur le site source.Ce qui changeCollez des recherches d’emploi LinkedIn filtrées. Leurs filtres sont conservés. Les pages d’entreprise deviennent des recherches par nom ; les liens d’offres individuelles ne sont pas pris en charge. Effacez les mots-clés préremplis si nécessaire.
Identifiants d’entreprisesQuand l’utiliserVous connaissez l’entité exacte à collecter.Ce qui changeLimite aux identifiants numériques d’entreprise du filtre f_C. Le slug d’une page d’entreprise n’est pas cet identifiant.

La différence à retenir

Une page contient 10 offres. La recherche publique plafonne autour de 1 000 offres ; augmenter les pages ne supprime pas ce plafond. Divisez par lieu, date ou type d’emploi.

Comparer le scraper associé

Tous les paramètres, expliqués.

Utilisez les noms exacts ci-dessous en JSON. Dans le formulaire Apify, saisissez les éléments des listes séparément et respectez les types numériques et booléens.

Valeur par défaut et préremplissage sont différents. La valeur par défaut s’applique si vous omettez un réglage ; le préremplissage est un exemple déjà saisi dans le formulaire Apify. Vérifiez cibles et limites avant chaque collecte. Certains réglages n’ont pas de valeur par défaut dans le schéma. Indiquez au moins une cible prise en charge.

Cibles et recherches5
searchUrls
Liste

Collez des recherches d’emploi LinkedIn filtrées. Leurs filtres sont conservés. Les pages d’entreprise deviennent des recherches par nom ; les liens d’offres individuelles ne sont pas pris en charge. Effacez les mots-clés préremplis si nécessaire.

keywords
ListeExemple prérempli : ["python developer"]

Intitulés ou compétences. Chaque mot-clé est combiné à chaque lieu : trois mots-clés et deux lieux font six recherches. Les offres répétées sont dédupliquées.

locations
ListeExemple prérempli : ["London"]

Villes, régions ou pays reconnus par LinkedIn. Chaque lieu ajoute des recherches distinctes. Utilisez geoId pour les noms ambigus.

geoId
Texte

Identifiant numérique de lieu LinkedIn, copié depuis geoId dans un lien filtré. Sélectionne un lieu plus précisément qu’un nom.

companyIds
Liste

Limite aux identifiants numériques d’entreprise du filtre f_C. Le slug d’une page d’entreprise n’est pas cet identifiant.

Marchés, dates et filtres6
datePosted
TextePar défaut : any

any, month, week ou day. day signifie les dernières 24 heures, pas une date calendaire. Pour un suivi quotidien, combinez day et sortBy date et conservez les identifiants.

Valeurs JSON proposées
any month week day
sortBy
TextePar défaut : relevance

relevance utilise le classement LinkedIn ; date donne les offres récentes en premier. Avec un plafond global, l’ordre détermine les offres collectées.

Valeurs JSON proposées
relevance date
experienceLevel
Liste

Liste de niveaux d’expérience. Plusieurs choix élargissent la recherche. Utilisez les valeurs proposées ; les valeurs inconnues sont ignorées avec une note.

Valeurs JSON proposées
internship entry associate mid-senior director executive
jobType
Liste

Types d’emploi comme full-time, contract ou internship. Distincts de workplaceType, qui décrit le travail distant, hybride ou sur site.

Valeurs JSON proposées
full-time part-time contract temporary volunteer internship other
workplaceType
Liste

Choisissez on-site, remote, hybrid ou plusieurs valeurs. Le filtre distant ne garantit pas que l’employeur accepte des candidats de tous les pays.

Valeurs JSON proposées
on-site remote hybrid
distance
Entier

Rayon de recherche en miles, de 0 à 100. Concerne les recherches géographiques ; ne change pas le classement d’un poste comme distant.

Limites, détails et proxys6
scrapeJobDetails
Vrai ou fauxPar défaut : true

Ajoute descriptions, expérience, type d’emploi, fonctions, secteurs et candidats via une requête par offre. Désactivez pour une liste rapide ; utilisez un proxy si activé.

maxItems
EntierExemple prérempli : 50

Plafond d’offres uniques sur tous les mots-clés, lieux et liens. Pas par recherche. Vide supprime ce plafond, mais maxPagesPerSearch reste actif.

maxPagesPerSearch
Entier

Une page contient 10 offres. La recherche publique plafonne autour de 1 000 offres ; augmenter les pages ne supprime pas ce plafond. Divisez par lieu, date ou type d’emploi.

maxConcurrency
EntierPar défaut : 2

De 1 à 10 recherches simultanées, 2 par défaut. Davantage de tâches peut augmenter les limitations. Restez modéré avec suffisamment de sorties proxy.

delayMs
EntierPar défaut : 1000

Pause entre requêtes de pages, en millisecondes. Augmentez-la en cas de limitation ; la réduire ne supprime ni la latence ni les limites de la source.

proxyConfiguration
ObjetPar défaut : {"useApifyProxy":true}Exemple prérempli : {"useApifyProxy":true}

Fortement recommandé, surtout pour les descriptions complètes. LinkedIn peut bloquer les détails avant les résultats ; des descriptions absentes ne signifient pas qu’elles n’existent pas.

Réglages avancés et reprise4
proxyRotations
EntierPar défaut : 3

Réessaie les requêtes refusées avec une nouvelle session proxy. Davantage d’essais peut surmonter des blocages temporaires, mais ajoute du temps et du trafic. Gardez le réglage par défaut sauf indication du journal.

resume
Vrai ou fauxPar défaut : true

Sauvegarde la progression environ toutes les 30 secondes pour reprendre après un redémarrage ou une migration Apify. Laissez-le activé.

continueFromLastRun
Vrai ou fauxPar défaut : false

Poursuit le travail inachevé du run précédent avec la même entrée. Les résultats précédents restent dans son dataset. Gardez false pour une collecte nouvelle ou régulière.

impersonate
TextePar défaut : chrome131

Identité du navigateur utilisée pour les requêtes. Gardez la valeur par défaut sauf pour diagnostiquer un blocage immédiat. Elle modifie l’empreinte des requêtes, pas les données demandées.

Cette référence reprend les paramètres de l’Actor. Vérifiez le formulaire actuel avant de modifier un flux de production. Voir le formulaire actuel sur Apify.

Des configurations à copier.

Chaque exemple est une exécution distincte. Commencez petit, vérifiez les résultats, puis élargissez. Adaptez les cibles, pays et dates à votre recherche.

Suivi quotidien des recrutements

Collectez les offres récentes de data engineering à Londres sans descriptions. Planifiez chaque jour et gardez les identifiants et dates pour distinguer les nouvelles offres de celles déjà vues.

Suivi quotidien des recrutements
{
  "keywords": ["data engineer"],
  "locations": ["London"],
  "datePosted": "day",
  "sortBy": "date",
  "maxItems": 50,
  "scrapeJobDetails": false
}

Étudier les compétences demandées

Collectez les postes hybrides à temps plein mentionnant dbt ou BigQuery, avec descriptions. Extrayez les compétences récurrentes en SQL ou demandez à Claude de les regrouper. La limite de 50 couvre les deux recherches ensemble.

Étudier les compétences demandées
{
  "keywords": ["dbt", "BigQuery"],
  "locations": ["London"],
  "datePosted": "week",
  "jobType": ["full-time"],
  "workplaceType": ["hybrid"],
  "maxItems": 50,
  "scrapeJobDetails": true,
  "maxConcurrency": 2
}

Étudier les postes à distance d’un marché

Cherchez les postes Python de niveau débutant et associate affichés à distance en Allemagne. À distance ne signifie pas recrutement mondial. Vérifiez les exigences de résidence, fuseau horaire et autorisation de travail.

Étudier les postes à distance d’un marché
{
  "keywords": ["python developer"],
  "locations": ["Germany"],
  "datePosted": "week",
  "experienceLevel": ["entry", "associate"],
  "workplaceType": ["remote"],
  "maxItems": 50,
  "scrapeJobDetails": true
}

Exécutez, vérifiez, exportez, recommencez.

Conservez identifiants, entreprise, lieu, date de publication et liens. Les descriptions permettent d’extraire compétences, niveau et conditions, mais salaires et candidats peuvent manquer. Il s’agit d’offres publiques, pas de contacts de recruteurs. Dédupliquez chaque relevé et gardez les observations successives pour les tendances.

  1. Consultez le dataset et le record SUMMARY. Comparez le total à votre limite, vérifiez les entrées ignorées ou échouées et contrôlez quelques liens sources.
  2. Conservez les identifiants et ajoutez collected_at et run_id à l’enregistrement. Utilisez CSV pour les colonnes simples et JSON pour les listes ou détails imbriqués.
  3. Enregistrez la configuration testée comme Apify Task et programmez-la. Pour des observations régulières, laissez continueFromLastRun à false. Dédupliquez par identifiant en conservant chaque date d’observation.
  4. Dans Make ou n8n, attendez la fin du run, récupérez son dataset et mappez les champs vers Sheets ou votre entrepôt. Alimentez Looker Studio avec une table de reporting et utilisez dbt pour transformer et tester les modèles.
  5. Le même JSON fonctionne avec l’API Actors d’Apify. Dans Claude avec Apify MCP, nommez cet Actor, demandez la lecture du schéma et précisez cibles, marchés et limites avant l’exécution.

Reprendre ne crée pas une nouvelle observation

resume protège le run actuel si Apify le redémarre. continueFromLastRun poursuit un ancien run avec la même configuration ; ses données restent dans son dataset. Réunissez les deux datasets et augmentez une limite déjà atteinte. Relancez de zéro pour observer les changements d’aujourd’hui.

Suivre les guides Sheets, Claude, Looker et BigQuery
Lancer cet Actor par l’API

Enregistrez une configuration ci-dessus dans input.json. Définissez APIFY_TOKEN avec votre jeton Apify dans le terminal, puis envoyez le fichier comme corps de requête.

Démarrer la collecte
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 réponse contient un identifiant de collecte et defaultDatasetId, pas les résultats finaux. Attendez la réussite, définissez DATASET_ID avec cet identifiant et récupérez les lignes. Pour les gros jeux, utilisez limit et offset pour paginer.

Récupérer les données
curl --fail-with-body \
  --url "https://api.apify.com/v2/datasets/$DATASET_ID/items?format=json" \
  --header "Authorization: Bearer $APIFY_TOKEN"

Référence API de lancement et d’export d’Apify
Options d’export des données

Si les résultats vous surprennent.

Modifiez un réglage à la fois, gardez une petite limite et consultez le résumé avant d’élargir.

Le résultat existe, mais les champs détaillés manquent.

Ajoute descriptions, expérience, type d’emploi, fonctions, secteurs et candidats via une requête par offre. Désactivez pour une liste rapide ; utilisez un proxy si activé.

Les requêtes de détails commencent à être bloquées.

Fortement recommandé, surtout pour les descriptions complètes. LinkedIn peut bloquer les détails avant les résultats ; des descriptions absentes ne signifient pas qu’elles n’existent pas.

Le lieu correspond à un autre endroit.

Identifiant numérique de lieu LinkedIn, copié depuis geoId dans un lien filtré. Sélectionne un lieu plus précisément qu’un nom.

Le run a réussi, mais reste vide

Un succès indique que l’Actor a terminé, pas que la source a fourni des données. Consultez SUMMARY.inputProblem, SUMMARY.problem et le journal : cible manquante, filtre non pris en charge ou requête refusée. Essayez une cible connue avec moins de filtres.

Moins de lignes que prévu

Vérifiez les limites globales, par recherche et par page, la couverture et les doublons. Plusieurs recherches peuvent trouver la même ligne. Le total annoncé par la source peut inclure des données non accessibles publiquement. Vérifiez les tâches inachevées avant de considérer le dataset complet.

Utilisez les résultats dans vos outils.

Google Sheets

Gardez company, role, posted_date et job_url dans un tableau. Ajoutez la catégorie de signal vérifiée et une colonne pour la prochaine action de l’équipe.

Lire le guide
Claude + MCP

Demandez à Claude de repérer les compétences et outils explicites dans les descriptions en citant les URL. Les interprétations de demande commerciale doivent être des hypothèses.

Lire le guide
Looker Studio

Tracez les nouveaux identifiants par entreprise, lieu et catégorie de poste. Gardez les mêmes critères de recherche et affichez la couverture de l’échantillon.

Lire le guide
BigQuery + dbt

Gardez les observations brutes et une table actuelle des offres par job_id. Vérifiez les entreprises avant de les joindre aux fiches CRM.

Lire le guide
Copier une consigne pour Claude
Consigne pour Claude + Apify MCP
Vérifie jmlp/linkedin-jobs-scraper et collecte jusqu’à 50 offres d’analytics engineer à Londres sur la dernière semaine avec détails. Identifie les mentions de Python, SQL ou dbt, cite chaque job_url et prépare une sélection d’entreprises. Présente la demande de services comme hypothèse.

Les champs disponibles.

Conservez la date de collecte et les identifiants d’origine pour vérifier la provenance d’un résultat ou le comparer à une exécution ultérieure.

Avant de tirer des conclusions

Une offre indique une intention de recrutement, pas une embauche, un budget ou une expansion confirmés. Salaires et candidats peuvent manquer. Vérifiez republications et doublons avant de conclure à la croissance ; gardez identifiants et dates.

job_id / job_url
Identifiant stable de l’offre et lien source.
title / company / company_url
Poste et identité publique de l’entreprise.
location / posted_date
Lieu et date de publication de l’offre.
description
Texte de l’offre avec collecte détaillée.
seniority_level / employment_type
Classifications de poste disponibles.
salary / applicants
Renseignés uniquement si la source les publie.

Questions fréquentes.

Dois-je partager un compte ou cookie LinkedIn ?

Non. L’extracteur utilise des offres publiques sans vos identifiants ni cookies LinkedIn. Un compte Apify est nécessaire.

Peut-il confirmer la croissance d’une entreprise ?

Non. Les offres peuvent suggérer des priorités, sans prouver les embauches ou la croissance. Elles orientent des recherches complémentaires.

Source et informations actuelles : Actor LinkedIn Jobs de JMLP sur Apify.

D’autres extracteurs
qui pourraient vous être utiles.

Parlons de
votre projet.

Dites-moi ce que vous devez collecter ou comprendre. Je peux vous aider avec un extracteur sur mesure, un pipeline ou l’analyse.

Parlons de votre projet