Extraction de contacts LinkedIn Sales Navigator vers Google Sheets avec pagination automatique
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 15 nœuds.Utilise principalement des nœuds comme If, Set, Code, Wait, HttpRequest. Extraire les contacts LinkedIn Sales Navigator vers Google Sheets avec pagination automatique
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
Nœuds utilisés (15)
Catégorie
{
"meta": {
"instanceId": "8d41476c63702cd0f2be55363b48153c5d4820bb18197ca147e7be50ef236112",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "120b55a2-ed29-4a35-9265-18940cee8b21",
"name": "Extraire les contacts LinkedIn API",
"type": "n8n-nodes-base.httpRequest",
"position": [
-768,
-32
],
"parameters": {
"url": "https://api.nickautomations.com/linkedin/scrape",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "cookies",
"value": "={{ $json.cookies }}"
},
{
"name": "url",
"value": "={{ $json.url }}"
},
{
"name": "scraper_type",
"value": "={{ $json.scraper_type }}"
},
{
"name": "start",
"value": "={{ $json.start }}"
}
]
},
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "EIsUiqyM6Juv63hK",
"name": "[linkedin-scraper-api] Header Auth"
}
},
"typeVersion": 4.2
},
{
"id": "93f2cf65-a67c-4f8d-9512-6ab51bdfb973",
"name": "Extraire le tableau de données des contacts",
"type": "n8n-nodes-base.code",
"position": [
-544,
-32
],
"parameters": {
"jsCode": "// Get all items from the previous node\nconst items = $input.all();\n\n// Assuming the payload is in the first item\nconst payload = items[0].json;\n\n// Return the nested 'data' array for the next node\nreturn payload.data;"
},
"typeVersion": 2
},
{
"id": "3f8a9eb7-0df9-4464-a3cd-ae2ca5db2d55",
"name": "Enregistrer les contacts dans Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
-320,
-32
],
"parameters": {
"columns": {
"value": {
"id": "={{ $json.id }}",
"title": "={{ $json.title }}",
"fullName": "={{ $json.fullName }}",
"industry": "={{ $json.industry }}",
"lastName": "={{ $json.lastName }}",
"location": "={{ $json.location }}",
"firstName": "={{ $json.firstName }}",
"profileUrl": "={{ 'https://www.linkedin.com/in/' + $json.entityUrn.split('(')[1].split(',')[0] }}",
"companyName": "={{ $json.companyName }}",
"companyLocation": "={{ $json.companyLocation }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "firstName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "firstName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "lastName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "lastName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "fullName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "fullName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "location",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "companyName",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "companyName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "companyLocation",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "companyLocation",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "industry",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "profileUrl",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "profileUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IZUmM6cTe4Fmona9tWcfX6A0F4G0Di4VyZUhxKAbp0M/edit#gid=0",
"cachedResultName": "LinkedIn Contacts"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1IZUmM6cTe4Fmona9tWcfX6A0F4G0Di4VyZUhxKAbp0M",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1IZUmM6cTe4Fmona9tWcfX6A0F4G0Di4VyZUhxKAbp0M/edit?usp=drivesdk",
"cachedResultName": "LinkedIn Contacts"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "V4NHfo08zBK4IW4e",
"name": "[Naveen]Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "a8d46ea2-2543-4f9d-ab03-07f3b0347a87",
"name": "Vérifier si d'autres pages sont disponibles",
"type": "n8n-nodes-base.if",
"position": [
-96,
-32
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "81c52d64-e7d8-4d23-aaba-6befa2f6e46a",
"operator": {
"type": "number",
"operation": "lt"
},
"leftValue": "={{ $('Scrape LinkedIn Contacts API').item.json.paging.start - $('Set Search Parameters').item.json.start/25 }}",
"rightValue": "={{ $('Set Search Parameters').item.json.total_pages }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "e18e663a-f637-4df9-a4fb-c5c9b4b6fcf0",
"name": "Incrémenter le paramètre de début de page",
"type": "n8n-nodes-base.set",
"position": [
128,
-48
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9b805fcd-3929-464c-8338-d8c365873c0b",
"name": "start",
"type": "number",
"value": "={{ $('Scrape LinkedIn Contacts API').item.json.paging.start + 25 }}"
}
]
}
},
"executeOnce": true,
"typeVersion": 3.4
},
{
"id": "ddf0bf2a-6395-4afe-8e50-dc954a0889af",
"name": "Délai de limitation du débit entre les requêtes",
"type": "n8n-nodes-base.wait",
"position": [
352,
48
],
"webhookId": "ba610b94-c1e1-40cf-9136-061cdfdebb15",
"parameters": {
"amount": "={{ Math.floor(Math.random() * (60 - 30 + 1)) + 30 }}"
},
"typeVersion": 1.1
},
{
"id": "b6f3aefc-aae0-48a3-b812-5c628f8d9a98",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1232,
-224
],
"parameters": {
"width": 416,
"height": 224,
"content": "### Configuration Settings\n\n**cookies**: LinkedIn session cookies (required)\n**url**: LinkedIn Sales Navigator search URL\n**scraper_type**: contacts\n**total_pages**: Number of pages to scrape (default: 2)\n\nEach page contains ~25 contacts\nModify these values before running"
},
"typeVersion": 1
},
{
"id": "1110cbb4-a93c-4aa4-b5f9-7229487dda40",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-704,
-240
],
"parameters": {
"color": 5,
"width": 496,
"height": 192,
"content": "### Scraping Process\n\n1. API fetches contact data from LinkedIn\n2. Extract nested contact array from response\n3. Save contact details to Google Sheets\n\nData includes: name, title, company, location, profile URL, etc."
},
"typeVersion": 1
},
{
"id": "15dabc04-686b-4273-b7e7-3d7efe326681",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
-240
],
"parameters": {
"color": 4,
"width": 416,
"height": 192,
"content": "### Pagination Logic\n\nChecks if more pages exist\nIf YES → Increment start parameter (+25)\nIf NO → Workflow completes\n\nLoop continues until all pages are scraped"
},
"typeVersion": 1
},
{
"id": "fd5eafc2-36c6-4e86-87d5-3d74f2b9396e",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
112,
240
],
"parameters": {
"color": 3,
"width": 416,
"content": "### Rate Limiting Protection **(DON'T LOWER THIS)**\n\nRandom delay: 30-60 seconds between requests\n\nPrevents LinkedIn API blocks\nMimics human browsing behavior"
},
"typeVersion": 1
},
{
"id": "9a22691a-daa3-4fba-bc83-ad90f86134e5",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1680,
-48
],
"parameters": {
"color": 6,
"width": 400,
"height": 400,
"content": "## Get 1 Month Free API Access\n\nNeed API credentials?\n\n[Email Naveen to request access](mailto:nchoudhary110792@gmail.com?subject=LinkedIn%20Scraper%20API%20-%20Free%201%20Month%20Access%20Request&body=Hi%20Naveen%2C%0A%0AI%20would%20like%20to%20request%201%20month%20of%20free%20access%20to%20the%20LinkedIn%20Scraper%20API.%0A%0AName%3A%20%0AEmail%3A%20%0AUse%20Case%3A%20%0A%0AThank%20you!)\n\nYou'll receive your API keys within 24 hours\n\n**How to add your API key:**\n1. Click on \"Fetch LinkedIn Contacts\" node\n2. Scroll to \"Authentication\" section\n3. Select \"Header Auth\" credential\n4. Click \"Create New Credential\"\n5. Set Name: \"x-api-key\"\n6. Set Value: [Your API key from email]\n7. Save and test the workflow\n"
},
"typeVersion": 1
},
{
"id": "d8ec7f32-3a28-45c3-b4ff-1419016af252",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-944,
256
],
"parameters": {
"color": 2,
"width": 720,
"height": 352,
"content": "### How to Get LinkedIn Cookies\n\n**Required Extension:**\n[Install EditThisCookie](https://chromewebstore.google.com/detail/editthiscookie-v3/ojfebgpkimhlhcblbalbfjblapadhbol)\n\n**Steps to Extract Cookies:**\n1. Go to LinkedIn Sales Navigator\n2. Click the cookie icon in your browser toolbar\n3. Click \"Export\" button\n4. Copy the exported cookie data\n5. Paste into the \"cookies\" field in this node\n\nSee reference image for [visual guide](https://drive.google.com/file/d/1yY4xdXjrChAeKGWz3H6lqyp1lJ1ElKWU/view?usp=sharing)\n\n**Cookies authenticate your LinkedIn session (and nothing is saved - not even the data scraping)**"
},
"typeVersion": 1
},
{
"id": "d78e5f9b-2047-4994-83dc-d35d1bd7585e",
"name": "Démarrer le workflow",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1216,
48
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5bdef910-db46-47f9-8e2a-dd2ac16b563f",
"name": "Définir les paramètres de recherche",
"type": "n8n-nodes-base.set",
"position": [
-992,
48
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ef3bbffa-8a91-4477-b930-b2089fdb5d04",
"name": "cookies",
"type": "array",
"value": "[YOUR_COOKIES_HERE]"
},
{
"id": "26025d17-4e8c-48df-aaa2-60b5bfa0d021",
"name": "url",
"type": "string",
"value": "[YOUR_SALES_NAVIGATOR_SEARCH_URL_HERE]"
},
{
"id": "3fb93134-cc12-4e83-ae2e-387de3c01f74",
"name": "scraper_type",
"type": "string",
"value": "contacts"
},
{
"id": "5bd33944-beb4-4aa0-a617-b25d9759d690",
"name": "start",
"type": "number",
"value": "={{ $input.first()?.json?.start ?? 0 }}"
},
{
"id": "1cfc15c1-6bfb-4ded-bdb8-6076cdd008ef",
"name": "total_pages",
"type": "number",
"value": 2
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ce0fa21f-039e-43dd-9c56-20f3a69b4cae",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2528,
-208
],
"parameters": {
"width": 752,
"height": 816,
"content": "## LinkedIn Sales Navigator to Google Sheets Scraper\n\nThis workflow automatically extracts contact data from LinkedIn Sales Navigator and saves it to Google Sheets.\n\n### What it does:\n- Fetches contacts from Sales Navigator search results via API\n- Handles pagination automatically (25 contacts per page)\n- Extracts: name, title, company, location, profile URL, industry\n- Saves all data to Google Sheets\n- Built-in rate limiting (30-60s delays) prevents API blocks\n\n### Requirements:\n- Self-hosted n8n (won't work on Cloud)\n- LinkedIn Sales Navigator account\n- API access (email creator for 1 month free)\n- EditThisCookie browser extension\n- Google Sheets account\n\n### Quick Setup:\n1. Get API key from creator (see purple sticky note)\n2. Extract LinkedIn cookies (see green sticky note)\n3. Configure \"Set Search Parameters\" node\n4. Make a copy of the Google Sheet template\n5. Connect your Google Sheets in the final node\n6. Run workflow\n\n### Important Notes:\n- Keep cookies private (they're your login session)\n- Don't lower the rate limit delay\n- Each page = ~25 contacts\n- Data is NOT stored anywhere except your Google Sheet\n\nFor detailed setup instructions, see the sticky notes throughout the workflow."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"d78e5f9b-2047-4994-83dc-d35d1bd7585e": {
"main": [
[
{
"node": "5bdef910-db46-47f9-8e2a-dd2ac16b563f",
"type": "main",
"index": 0
}
]
]
},
"5bdef910-db46-47f9-8e2a-dd2ac16b563f": {
"main": [
[
{
"node": "120b55a2-ed29-4a35-9265-18940cee8b21",
"type": "main",
"index": 0
}
]
]
},
"93f2cf65-a67c-4f8d-9512-6ab51bdfb973": {
"main": [
[
{
"node": "3f8a9eb7-0df9-4464-a3cd-ae2ca5db2d55",
"type": "main",
"index": 0
}
]
]
},
"120b55a2-ed29-4a35-9265-18940cee8b21": {
"main": [
[
{
"node": "93f2cf65-a67c-4f8d-9512-6ab51bdfb973",
"type": "main",
"index": 0
}
]
]
},
"a8d46ea2-2543-4f9d-ab03-07f3b0347a87": {
"main": [
[
{
"node": "e18e663a-f637-4df9-a4fb-c5c9b4b6fcf0",
"type": "main",
"index": 0
}
]
]
},
"e18e663a-f637-4df9-a4fb-c5c9b4b6fcf0": {
"main": [
[
{
"node": "ddf0bf2a-6395-4afe-8e50-dc954a0889af",
"type": "main",
"index": 0
}
]
]
},
"3f8a9eb7-0df9-4464-a3cd-ae2ca5db2d55": {
"main": [
[
{
"node": "a8d46ea2-2543-4f9d-ab03-07f3b0347a87",
"type": "main",
"index": 0
}
]
]
},
"ddf0bf2a-6395-4afe-8e50-dc954a0889af": {
"main": [
[
{
"node": "5bdef910-db46-47f9-8e2a-dd2ac16b563f",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Création de contenu, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Naveen Choudhary
@n8nsteinI create AI-driven n8n workflows that turn repetitive tasks into smooth, hands-off automations. Want to explore an idea? Book a quick consult: https://cal.com/nickchoudhary/30min
Partager ce workflow