Extraktion-von-LinkedIn-Sales-Navigator-Kontakten-zu-Google-Sheets-mit-automatisierter-Seitennavigation
Dies ist ein Content Creation, Multimodal AI-Bereich Automatisierungsworkflow mit 15 Nodes. Hauptsächlich werden If, Set, Code, Wait, HttpRequest und andere Nodes verwendet. LinkedIn Sales Navigator-Kontakte mit automatisierter Paginierung in Google Sheets extrahieren
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
- •Google Sheets API-Anmeldedaten
Verwendete Nodes (15)
Kategorie
{
"meta": {
"instanceId": "8d41476c63702cd0f2be55363b48153c5d4820bb18197ca147e7be50ef236112",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "120b55a2-ed29-4a35-9265-18940cee8b21",
"name": "Kontakte von LinkedIn scrapen 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": "Kontaktdaten-Array extrahieren",
"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": "Kontakte in Google Sheets speichern",
"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": "Prüfen, ob weitere Seiten verfügbar sind",
"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": "Page-Start-Parameter erhöhen",
"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": "Rate-Limit-Verzögerung zwischen Anfragen",
"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": "Haftnotiz",
"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": "Haftnotiz1",
"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": "Haftnotiz2",
"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": "Haftnotiz3",
"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": "Haftnotiz4",
"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": "Haftnotiz5",
"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": "Workflow starten",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1216,
48
],
"parameters": {},
"typeVersion": 1
},
{
"id": "5bdef910-db46-47f9-8e2a-dd2ac16b563f",
"name": "Suchparameter setzen",
"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": "Haftnotiz6",
"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
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Content-Erstellung, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
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
Diesen Workflow teilen