Scraping non-auth LinkedIn illimité

Hello les grosses,

Juste pour partager une trouvaille avec vous, un moyen pour scraper les profils LinkedIn en non auth. Attention ça marche qu’avec la regional url (ex fr.linkedin) sauf si que www dispo et sans /en ou /fr ou autre langue après l’ID.

Évidemment qui dit non-auth dit profils parfois partiels mais bon vous pouvez quand même tartiner et avoir l’essentiel.

url -w « %{http_code} » -s
-H « range: bytes=0-307199 »
-H « user-agent: WhatsApp/2.23.20.0 »
-H « accept: / »
-H « accept-language: fr-FR,fr;q=0.9 »
-H « accept-encoding: gzip, deflate, br »
–compressed
« https://fr.linkedin.com/in/PROFILE_ID/ »
-o output.html

Good Luck :wink:

17 « J'aime »

je voyage à travers tes publications thomas

da1a744f3172593a185a3d56cf8afb84

link preview, OG parser bypass, UA spoofing social apps, cached HTML fallback

… tu nous apprends tout
aujourd’hui c’est grâce à toi que le forum est à ce stade et non grace à Camille

6 « J'aime »

@josselin content d’avoir aider Piloterr à dépasser les 3M ARR avec le nouveau AI Web Unlocker.

Qu’est ce qu’on serait sans sa majesté @camille, respectes les ainés

4 « J'aime »

merci @Thomas_Lucyfer je suis ton captain de la data

1 « J'aime »

@josselin je peux toujours compter sur toi jamais down, pas de problemes de dns ou de réseau

200w

4 « J'aime »

T’es un king thomas

1 « J'aime »

Salut Thomas,

bon je dois être un peu trop ignare dsl.
On utilise comment ce que tu viens de partager ? Avec un outil en particulier ?

url -w « %{http_code} » -s
-H « range: bytes=0-307199 »
-H « user-agent: WhatsApp/2.23.20.0 »
-H « accept: / »
-H « accept-language: fr-FR,fr;q=0.9 »
-H « accept-encoding: gzip, deflate, br »
–compressed
« https://fr.linkedin.com/in/PROFILE_ID/ »
-o output.html

@Thomas_Lucyfer , je complète afin que tout le monde puisse savoir ce que ça permet :wink:

Voici un résumé Claude Code des résultats que j’avais réussi à avoir de mon côté sur la base de cette astuce, je lui ai demandé de changer les infos, mais dans l’idée voici :

Résumé & Infos

:bar_chart: RÉSUMÉ D’EXTRACTION - linkedin_results_20251113_233136.csv

Source: Base de données LinkedIn scraping (13 novembre 2025)
Méthode: WhatsApp User-Agent via proxies rotatifs
Format: CSV avec 17 champs par profil
Note: Données anonymisées ci-dessous pour confidentialité


:clipboard: FORMAT DES DONNÉES EXTRAITES

Chaque profil contient les champs suivants (ligne par ligne):

status | url | first_name | last_name | full_name | location | country | current_company | current_company_url | current_location | education |
education_years | followers | languages | photo_url | description | worker_id | proxy_used


:magnifying_glass_tilted_left: EXEMPLES DE DONNÉES (ANONYMISÉES)

Profil 1:
status: success
url: https://www.linkedin.com/in/jean-dupont-123456/
first_name: Jean
last_name: Dupont
full_name: Jean Dupont
location: Lyon, Auvergne-Rhône-Alpes, France
country: FR
current_company: Tech Solutions SA
current_company_url: Tech Solutions | LinkedIn
current_location: Lyon, Auvergne-Rhône-Alpes, France
education: École de Commerce Paris
education_years: 2010-2014 | 2015-2017 | 2008-2010
followers: 2847
languages: Français, Anglais, Espagnol
photo_url: https://media.licdn.com/dms/image/[...]/profile-photo.jpg
description: Passionné par l’innovation technologique et le management d’équipes…
worker_id: 7
proxy_used: 192.168.1.100:8080


Profil 2:
status: success
url: https://www.linkedin.com/in/marie-martin-789012/
first_name: Marie
last_name: Martin
full_name: Marie Martin
location: Paris et périphérie
country: FR
current_company: [vide]
current_company_url: [vide]
current_location: [vide]
education: [vide]
education_years: [vide]
followers: 1543
languages: Français, Anglais
photo_url: https://media.licdn.com/dms/image/[...]/profile-photo.jpg
description: [vide]
worker_id: 8
proxy_used: 192.168.1.101:8080


:chart_increasing: CHAMPS DISPONIBLES - DÉTAILS

Champ Description Taux de remplissage Exemple
status Statut de l’extraction 100% success / error
url URL du profil LinkedIn 100% https://www.linkedin.com/in/…
first_name Prénom ~95% Jean
last_name Nom de famille ~95% Dupont
full_name Nom complet ~95% Jean Dupont
location Localisation principale ~85% Lyon, Auvergne-Rhône-Alpes, France
country Code pays (ISO) ~90% FR, BE, CH
current_company Entreprise actuelle ~60% Tech Solutions SA
current_company_url URL entreprise ~55% https://fr.linkedin.com/company/…
current_location Localisation actuelle ~70% Lyon, France
education École(s) fréquentée(s) ~40% École de Commerce Paris
education_years Années d’études ~35% 2010-2014
followers Nombre d’abonnés ~80% 2847
languages Langues parlées ~70% Français, Anglais, Espagnol
photo_url URL photo de profil ~90% https://media.licdn.com/…
description Bio courte (80-90 chars) ~40% Passionné par l’innovation…
worker_id ID du worker de scraping 100% 7
proxy_used Proxy utilisé 100% 192.168.1.100:8080

:white_check_mark: AVANTAGES DE CE FORMAT

Points forts:

  • :white_check_mark: Métadonnées publiques → Aucun masquage (***)
  • :white_check_mark: Données stables → Nom, entreprise actuelle, localisation
  • :white_check_mark: Taux de succès élevé → 95%+ sur champs principaux
  • :white_check_mark: Format CSV → Facile à exploiter (Excel, SQL, Python)
  • :white_check_mark: Pas d’authentification requise → Scraping via WhatsApp UA

Limitations:

  • :cross_mark: Pas d’expériences détaillées (uniquement entreprise actuelle)
  • :cross_mark: Pas de dates de postes
  • :cross_mark: Pas de descriptions complètes de parcours
  • :cross_mark: Éducation partielle (40% de remplissage)
2 « J'aime »

Oui avec ton terminal c’est une requête curl

2 « J'aime »

Pas besoin de proxy, pas besoin de changer d’IP. Les profils sont aléatoirement complets. Il suffira de repasser régulièrement. Je pense que c’est plutôt une histoire de machine.

À tester at scale, mais je me dis qu’un petit proxy pas cher datacenter chez Webshare à 2,99€/100/mois, ça mange pas de pain :joy:

Ce qui est relou c’est qu’il faut :

  • le language du profil
  • le vanity du profil (j’ai testé avec le ACo & ACw et je me suis pris des 404)

Tu as les profils similaires quand tu scrap un profil, du coup, tu peux faire une boucle quasi infini et construire un dataset

2 « J'aime »

Sinon tu peux le faire via une requête HTTP GET avec postman ou autre, j’ai testé, ça marche bien aussi.
Intéressant les résultats comparés à du SERP classique :wink:
Je trouve ça plus complet, après je n’ai pas testé à gros volume.
Tu penses qu’on peut envoyer 10k requêtes sans problème ? LinkedIn ne va pas cramer le truc @Thomas_Lucyfer ?
Ça paraît presque trop beau.
Avec une armée de proxy, peut etre plus safe ?

Hier, j’ai fait un petit test pendant trois heures sur mon IP sur la base d’une requête par seconde, j’ai eu zéro erreur

C’est normal les URN c’est interne

Par sécurité j’utiliserai LinkedIn Profile Info - Piloterr @Thomas_Lucyfer

a bon entendeur

@camille est top aussi lol :winking_face_with_tongue:

1 « J'aime »

Merci pour l’astuce.

Le top serait que quelqu’un se lance dans un parser (web scraper) qui retire le bruit, mais c’est une bonne base, merci.

Afin de mutualiser, voici comment récupérer le lien de l’image de profil, une fois le fichier HTML recréé en local:

xidel -s /tmp/file.html --xpath ‘//meta[@property=”og:image”]/@content’

Tout se passe dans:

<meta property=”og:image” content=”...” >

Ce sont des propriétés OpenGraph.

1 « J'aime »