{
  "name": "LinkedIn Sales Navigator Leads to Google Sheets",
  "nodes": [
    {
      "parameters": {},
      "id": "manual-trigger",
      "name": "Start Extraction",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        0,
        300
      ]
    },
    {
      "parameters": {
        "mode": "raw",
        "jsonOutput": "={\n  \"salesNavigatorUrl\": \"YOUR_SALES_NAVIGATOR_SEARCH_URL_HERE\",\n  \"maxResults\": 100\n}",
        "options": {}
      },
      "id": "set-input",
      "name": "Set Search Input",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        220,
        300
      ],
      "notesInFlow": true,
      "notes": "\ud83d\udcdd EDIT THIS: Paste your LinkedIn Sales Navigator search URL here and set max results"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.apify.com/v2/acts/curious_coder~linkedin-sales-navigator-search-scraper/runs",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\n  \"searchUrl\": \"{{ $json.salesNavigatorUrl }}\",\n  \"maxResults\": {{ $json.maxResults }},\n  \"proxyConfiguration\": {\n    \"useApifyProxy\": true,\n    \"apifyProxyGroups\": [\"RESIDENTIAL\"]\n  }\n}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        }
      },
      "id": "start-apify-actor",
      "name": "Start Apify Scraper",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        440,
        300
      ],
      "notesInFlow": true,
      "notes": "\ud83d\ude80 Starts the LinkedIn Sales Navigator scraper on Apify",
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "amount": 30,
        "unit": "seconds"
      },
      "id": "wait-initial",
      "name": "Wait 30s",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        660,
        300
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "=https://api.apify.com/v2/actor-runs/{{ $('Start Apify Scraper').item.json.data.id }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        }
      },
      "id": "check-run-status",
      "name": "Check Run Status",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        880,
        300
      ],
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict"
          },
          "conditions": [
            {
              "id": "condition-running",
              "leftValue": "={{ $json.data.status }}",
              "rightValue": "SUCCEEDED",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "id": "if-finished",
      "name": "Is Finished?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.1,
      "position": [
        1100,
        300
      ]
    },
    {
      "parameters": {
        "amount": 15,
        "unit": "seconds"
      },
      "id": "wait-more",
      "name": "Wait 15s More",
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        1100,
        520
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "=https://api.apify.com/v2/datasets/{{ $('Start Apify Scraper').item.json.data.defaultDatasetId }}/items",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        }
      },
      "id": "get-results",
      "name": "Get Scraped Leads",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1320,
        300
      ],
      "credentials": {
        "httpQueryAuth": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "mode": "raw",
        "jsonOutput": "={\n  \"fullName\": \"{{ $json.fullName || $json.firstName + ' ' + $json.lastName || 'N/A' }}\",\n  \"title\": \"{{ $json.title || $json.headline || 'N/A' }}\",\n  \"company\": \"{{ $json.companyName || $json.company || 'N/A' }}\",\n  \"location\": \"{{ $json.location || $json.geoRegion || 'N/A' }}\",\n  \"linkedinUrl\": \"{{ $json.linkedinUrl || $json.profileUrl || $json.url || 'N/A' }}\",\n  \"extractedAt\": \"{{ $now.format('yyyy-MM-dd HH:mm:ss') }}\"\n}",
        "options": {}
      },
      "id": "transform-data",
      "name": "Format Lead Data",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        1540,
        300
      ],
      "notesInFlow": true,
      "notes": "\ud83d\udccb Maps Apify output to your required fields"
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_GOOGLE_SHEET_ID_HERE"
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "Sheet1",
          "cachedResultName": "Sheet1"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Full Name": "={{ $json.fullName }}",
            "Title": "={{ $json.title }}",
            "Company": "={{ $json.company }}",
            "Location": "={{ $json.location }}",
            "LinkedIn URL": "={{ $json.linkedinUrl }}",
            "Extracted At": "={{ $json.extractedAt }}"
          },
          "matchingColumns": [],
          "schema": [
            {
              "id": "Full Name",
              "displayName": "Full Name",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "Title",
              "displayName": "Title",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "Company",
              "displayName": "Company",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "Location",
              "displayName": "Location",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "LinkedIn URL",
              "displayName": "LinkedIn URL",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "type": "string"
            },
            {
              "id": "Extracted At",
              "displayName": "Extracted At",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "id": "google-sheets-append",
      "name": "Save to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.4,
      "position": [
        1760,
        300
      ],
      "notesInFlow": true,
      "notes": "\ud83d\udcca EDIT THIS: Set your Google Sheet ID",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "content": "## \ud83c\udfaf LinkedIn Sales Navigator Lead Extraction\n\n### Setup Instructions:\n\n1. **Apify API Token** (HTTP Query Auth credential):\n   - Create at: https://console.apify.com/account/integrations\n   - Credential Name: `token`\n   - Credential Value: `your_apify_api_token`\n\n2. **Google Sheets**:\n   - Connect your Google account\n   - Create a sheet with columns:\n     `Full Name | Title | Company | Location | LinkedIn URL | Extracted At`\n\n3. **Configure the workflow**:\n   - Edit \"Set Search Input\" with your Sales Navigator URL\n   - Edit \"Save to Google Sheets\" with your Sheet ID\n\n### How to use:\n1. Paste your Sales Navigator search URL in the \"Set Search Input\" node\n2. Click \"Execute Workflow\"\n3. Wait for scraping to complete (30s-5min depending on results)\n4. Leads automatically added to your Google Sheet!",
        "height": 520,
        "width": 380
      },
      "id": "sticky-note",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -280,
        100
      ]
    }
  ],
  "connections": {
    "Start Extraction": {
      "main": [
        [
          {
            "node": "Set Search Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Search Input": {
      "main": [
        [
          {
            "node": "Start Apify Scraper",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start Apify Scraper": {
      "main": [
        [
          {
            "node": "Wait 30s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 30s": {
      "main": [
        [
          {
            "node": "Check Run Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check Run Status": {
      "main": [
        [
          {
            "node": "Is Finished?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Finished?": {
      "main": [
        [
          {
            "node": "Get Scraped Leads",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 15s More",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 15s More": {
      "main": [
        [
          {
            "node": "Check Run Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Scraped Leads": {
      "main": [
        [
          {
            "node": "Format Lead Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format Lead Data": {
      "main": [
        [
          {
            "node": "Save to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "tags": [
    {
      "name": "LinkedIn",
      "createdAt": "2026-01-21T18:55:00.000Z",
      "updatedAt": "2026-01-21T18:55:00.000Z"
    },
    {
      "name": "Lead Generation",
      "createdAt": "2026-01-21T18:55:00.000Z",
      "updatedAt": "2026-01-21T18:55:00.000Z"
    }
  ],
  "triggerCount": 0,
  "updatedAt": "2026-01-21T18:55:00.000Z",
  "versionId": "1"
}