8
n8n 한국어amn8n.com

자동 페이지 분할을 사용하여 LinkedIn Sales Navigator 연락처를 Google Sheets에 추출

중급

이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 If, Set, Code, Wait, HttpRequest 등의 노드를 사용하며. 자동 페이징을 사용하여 LinkedIn Sales Navigator 연락처를 Google Sheets로 추출

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "8d41476c63702cd0f2be55363b48153c5d4820bb18197ca147e7be50ef236112",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "120b55a2-ed29-4a35-9265-18940cee8b21",
      "name": "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": "연락처 데이터 배열 추출",
      "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": "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": "추가 페이지 존재 여부 확인",
      "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": "페이지 시작 매개변수 증가",
      "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": "요청 간 속도 제한 지연",
      "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": "스티커 노트",
      "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": "스티커 노트1",
      "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": "스티커 노트2",
      "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": "스티커 노트3",
      "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": "스티커 노트4",
      "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": "스티커 노트5",
      "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": "워크플로 시작",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1216,
        48
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "5bdef910-db46-47f9-8e2a-dd2ac16b563f",
      "name": "검색 매개변수 설정",
      "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": "스티커 노트6",
      "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
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 콘텐츠 제작, 멀티모달 AI

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수15
카테고리2
노드 유형8
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

저자
Naveen Choudhary

Naveen Choudhary

@n8nstein

I 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

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34