Illustration de l’extracteur LinkedIn Ad LibraryPublicités B2B et transparence dans l’UE

Extracteur LinkedIn Ad Library.

Regardez comment les entreprises ciblent les professionnels. Comparez offres et formats, puis utilisez les informations UE disponibles pour étudier audiences et marchés.

Lancer sur Apify

Comment utiliser cet extracteur.

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

01

Comparez les offres B2B avant une campagne

Pour une campagne SaaS, suivez trois concurrents et classez leurs annonces : démos, webinaires, rapports ou offres produit. Comparez promesses et appels à l’action avant le prochain test d’acquisition.

Gardez une comparaison des offres avec textes, liens créatifs et idées de tests.

02

Étudiez les audiences et marchés d’un annonceur

Pour les annonces avec données UE, étudiez ciblage et parts d’impressions par pays. Séparez les informations LinkedIn de vos hypothèses sur l’audience.

Rédigez une synthèse avec sources et conservez les impressions sous forme de plages.

03

Rendez un audit d’agence plus concret

Étudiez les publicités, formats et pages de destination d’un prospect. Appuyez-vous sur ses annonces pour discuter cohérence des messages et objectifs.

Préparez un court audit créatif illustré par les annonces du prospect.

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. Remplacez HubSpot par le nom affiché sur LinkedIn. Commencez avec exactAdvertiserMatch true. Si aucun résultat n’apparaît, essayez false et vérifiez les noms avant de retenir les correspondances plus larges.
  3. Choisissez DE pour un petit échantillon de l’UE, maxAds 30 et scrapeAdDetails false. Après avoir confirmé l’annonceur, activez les détails pour obtenir les champs disponibles sur le payeur, les dates, le ciblage et les impressions.
  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
{
  "advertisers": ["HubSpot"],
  "countries": ["DE"],
  "maxAds": 30,
  "exactAdvertiserMatch": true,
  "scrapeAdDetails": 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 combiner noms d’annonceurs et mots-clés, ou reprendre une URL filtrée de la bibliothèque LinkedIn. La correspondance exacte est facultative et les détails des annonces de l’UE sont plus complets que dans de nombreux autres marchés.

Méthode de rechercheQuand l’utiliserCe qui change
Nom d’annonceur ou de marqueQuand l’utiliserVous avez une liste de concurrents à suivre.Ce qui changeNoms d’entreprise LinkedIn ou liens de pages. La correspondance large peut inclure partenaires ou agences. Activez exactAdvertiserMatch pour le seul annonceur nommé.
Recherche par mots-clésQuand l’utiliserVous cherchez des résultats pertinents avant de choisir des cibles précises.Ce qui changeMots du contenu des annonces. Avec advertisers, chaque annonceur est recherché pour chaque mot. Sans annonceurs, les mots-clés découvrent des annonces de plusieurs entreprises.
URL de la bibliothèque publicitaireQuand l’utiliserVous avez déjà configuré la recherche sur le site source.Ce qui changeLiens de recherche ou détail LinkedIn Ad Library. Une recherche conserve ses filtres ; un lien détail récupère une annonce. Ce n’est pas un lien d’entreprise ou d’emploi.

La différence à retenir

Ajoute payeur, CTA, liens, médias et dates, impressions et ciblage UE disponibles. Une requête par annonce. Hors des divulgations UE, certains champs restent vides.

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 recherches3
advertisers
ListeExemple prérempli : ["HubSpot"]

Noms d’entreprise LinkedIn ou liens de pages. La correspondance large peut inclure partenaires ou agences. Activez exactAdvertiserMatch pour le seul annonceur nommé.

keywords
Liste

Mots du contenu des annonces. Avec advertisers, chaque annonceur est recherché pour chaque mot. Sans annonceurs, les mots-clés découvrent des annonces de plusieurs entreprises.

startUrls
Liste

Liens de recherche ou détail LinkedIn Ad Library. Une recherche conserve ses filtres ; un lien détail récupère une annonce. Ce n’est pas un lien d’entreprise ou d’emploi.

Marchés, dates et filtres6
countries
Liste

Pays de diffusion. Codes, noms et groupes comme EU ou DACH sont acceptés. Plusieurs pays forment une union, pas une ligne par pays ; les détails UE varient selon l’annonce.

dateRange
TextePar défaut : all-time

Choisissez une période prédéfinie ou custom-date-range utilisant startDate et endDate. Elle décrit la diffusion, pas la collecte.

Valeurs JSON proposées
all-time last-30-days current-month current-year last-year custom-date-range
startDate
Texte

Début d’une période personnalisée, de préférence YYYY-MM-DD. Une date active la recherche personnalisée ; renseignez aussi dateRange pour plus de clarté.

endDate
Texte

Fin de la période personnalisée. Utilisez YYYY-MM-DD ou une date relative comme today. Gardez la même période pour comparer les annonceurs.

sortBy
TextePar défaut : newest

newest commence par les annonces récentes ; oldest par les anciennes. Avec maxAds ou maxAdsPerSearch, change la portion vue, pas la taille de l’archive.

Valeurs JSON proposées
newest oldest
exactAdvertiserMatch
Vrai ou fauxPar défaut : false

Conserve les noms correspondants sans tenir compte de la casse ou ponctuation. Pour une seule marque. Peut exclure des filiales autrement nommées ; vérifiez un échantillon.

Limites, détails et proxys6
maxAds
EntierExemple prérempli : 100

Plafond d’annonces uniques pour tout le run, toutes cibles et tous marchés compris. Commencez à 50. Sans ce plafond, une recherche large peut produire beaucoup plus de données.

maxAdsPerSearch
Entier

Limite chaque recherche annonceur-mot-clé. Combinez avec maxAds pour éviter qu’un annonceur monopolise le run. Le plafond global reste prioritaire.

scrapeAdDetails
Vrai ou fauxPar défaut : true

Ajoute payeur, CTA, liens, médias et dates, impressions et ciblage UE disponibles. Une requête par annonce. Hors des divulgations UE, certains champs restent vides.

maxConcurrency
EntierPar défaut : 3

De 1 à 10 recherches parallèles, chacune avec ses sessions proxy. Sans proxy utilisable, les requêtes sont espacées et séquentielles.

detailConcurrency
EntierPar défaut : 4

De 1 à 10 requêtes de détail parallèles par recherche. Distinct de maxConcurrency. Augmenter les deux multiplie le travail et les besoins proxy ; commencez avec les valeurs par défaut.

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

Un proxy répartit la limite LinkedIn par IP entre les sessions. Le résidentiel est généralement plus fiable. En cas de blocage, réduisez la concurrence et vérifiez le proxy.

Réglages avancés et reprise3
proxyRotations
EntierPar défaut : 4

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.

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.

Audit ciblé d’un annonceur dans l’UE

Collectez les 30 derniers jours d’un annonceur exact en Allemagne, avec les détails. Conservez payeur et impressions disponibles avec les liens source. Ne remplacez pas les champs manquants par des suppositions.

Audit ciblé d’un annonceur dans l’UE
{
  "advertisers": ["HubSpot"],
  "countries": ["DE"],
  "dateRange": "last-30-days",
  "exactAdvertiserMatch": true,
  "maxAds": 50,
  "scrapeAdDetails": true
}

Découvrir des messages chez plusieurs annonceurs

Cherchez trois sujets dans l’UE sans restriction d’annonceur. Chaque recherche est limitée à 25 annonces : cette configuration peut donc fournir au plus 75 annonces uniques malgré une limite globale de 100. Les recoupements peuvent encore réduire ce total.

Découvrir des messages chez plusieurs annonceurs
{
  "keywords": ["marketing automation", "sales CRM", "lead generation"],
  "countries": ["EU"],
  "maxAds": 100,
  "maxAdsPerSearch": 25,
  "scrapeAdDetails": false
}

Comparer une période de campagne fixe

Comparez deux annonceurs en Allemagne et en France en septembre 2026. Les pays forment un filtre combiné. Modifiez les dates, vérifiez les correspondances larges et utilisez la limite par recherche pour équilibrer l’échantillon.

Comparer une période de campagne fixe
{
  "advertisers": ["HubSpot", "Salesforce"],
  "countries": ["DE", "FR"],
  "dateRange": "custom-date-range",
  "startDate": "2026-09-01",
  "endDate": "2026-09-30",
  "maxAds": 100,
  "maxAdsPerSearch": 50,
  "exactAdvertiserMatch": false,
  "scrapeAdDetails": true
}

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

Conservez identifiants et noms avec texte, liens et détails disponibles. Dans l’UE, les détails peuvent inclure payeur, impressions par pays et ciblage ; ailleurs, ils sont souvent plus limités. Gardez le JSON imbriqué comme source, aplatissez les champs utiles et distinguez valeurs absentes et zéros.

  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-ad-library-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.

Les résultats appartiennent au mauvais annonceur.

Conserve les noms correspondants sans tenir compte de la casse ou ponctuation. Pour une seule marque. Peut exclure des filiales autrement nommées ; vérifiez un échantillon.

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

Ajoute payeur, CTA, liens, médias et dates, impressions et ciblage UE disponibles. Une requête par annonce. Hors des divulgations UE, certains champs restent vides.

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

Un proxy répartit la limite LinkedIn par IP entre les sessions. Le résidentiel est généralement plus fiable. En cas de blocage, réduisez la concurrence et vérifiez le proxy.

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

Ajoutez ad_id, advertiser_name, format, headline, CTA et lien de destination. Complétez avec catégories et notes. Gardez les plages en texte et les parts par pays dans des champs séparés.

Lire le guide
Claude + MCP

Demandez à Claude de regrouper les offres et résumer le ciblage publié en citant ad_library_url. Faites séparer les hypothèses d’audience des champs réels.

Lire le guide
Looker Studio

Comparez formats et offres par annonceur. Affichez bornes d’impressions sous forme de plages et ajoutez un filtre de données UE.

Lire le guide
BigQuery + dbt

Gardez des observations datées par ad_id. Placez parts par pays et cartes de carrousel dans des tables liées ; séparez payeur et annonceur.

Lire le guide
Copier une consigne pour Claude
Consigne pour Claude + Apify MCP
Vérifie jmlp/linkedin-ad-library-scraper et collecte jusqu’à 50 annonces HubSpot en DE avec détails et correspondance exacte de l’annonceur. Regroupe offres et CTA, cite ad_library_url et résume seulement ciblage et impressions présents. Ne déduis ni dépenses ni conversions.

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

LinkedIn publie dates, plages d’impressions et ciblage pour les annonces UE ; ailleurs, ces champs peuvent manquer. Un indicateur ne révèle pas toute l’audience. Sans exactAdvertiserMatch, les noms peuvent inclure agences ou partenaires. Les impressions ne donnent ni conversions ni dépenses.

ad_id / ad_library_url
Identifiant stable et annonce publique d’origine.
advertiser_name / paid_by
Annonceur et entité ayant payé l’annonce.
body / headline / cta_text
Texte créatif et action publiés.
image_urls / video_urls / carousel_cards
Fichiers créatifs et contenu de carrousel disponibles.
impressions / impressions_by_country
Plages d’impressions UE et parts par pays publiées.
targeting / shown_in_eu
Ciblage disponible et présence de données de transparence UE.

Questions fréquentes.

Faut-il un compte LinkedIn ou des cookies ?

Non. Cet Actor lit la bibliothèque publique LinkedIn. Il faut un compte Apify, mais ni connexion LinkedIn ni cookie de session.

Pourquoi manque-t-il des champs d’impressions ou de ciblage ?

LinkedIn publie ces informations pour les publicités diffusées dans l’UE. Vérifiez shown_in_eu et l’activation des détails avant d’interpréter les champs manquants.

Source et informations actuelles : Actor LinkedIn Ad Library 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