AutomationFlowsAI & RAG › Automated Linkedin Lead Enrichment Pipeline Using Apollo.io & Google Sheets

Automated Linkedin Lead Enrichment Pipeline Using Apollo.io & Google Sheets

ByRahi Uppal @rahiuppal on n8n.io

Automatically capture company and store details from LinkedIn posts, enrich them with domain names and key decision-maker (KDM) data from Apollo.io, and store everything neatly in Google Sheets. This workflow turns LinkedIn post data into a complete, structured lead database —…

Webhook trigger★★★★★ complexityAI-powered33 nodesOutput Parser StructuredGoogle Gemini ChatGoogle SheetsAgentHTTP Request
AI & RAG Trigger: Webhook Nodes: 33 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #8409 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "ee7ba99a-a412-4389-af47-e12a8070a9a1",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        2032,
        1296
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "d913c122-3f4a-4fa3-aab3-79c6319ac12e",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        2240,
        1296
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "41a6dc80-fe9e-4cde-b47b-b03ae98feb7f",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        2832,
        1504
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "0bda86e3-84ab-4b9f-9c74-b871a658bdc6",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        2512,
        1504
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "65af8ed4-cec3-4937-963e-4623473f5b57",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        2448,
        1296
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "54c6c70e-59f6-4320-9d6a-5bdd94e8e6ed",
      "name": "Get row(s) in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2224,
        2016
      ],
      "parameters": {},
      "typeVersion": 4.7
    },
    {
      "id": "ea21290c-588d-443b-b401-d7329063e9bb",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        2048,
        2016
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "748e2b43-e51a-417d-92ff-df0704cef2a9",
      "name": "Loop Over Items1",
      "type": "n8n-nodes-base.splitInBatches",
      "onError": "continueErrorOutput",
      "position": [
        2720,
        2016
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "2e9a8548-a8bf-47e3-8fe1-93072276cd9d",
      "name": "Update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3440,
        2032
      ],
      "parameters": {},
      "typeVersion": 4.7
    },
    {
      "id": "ed8a4414-e31d-46d7-9ad6-836faee1a3ac",
      "name": "Schedule Trigger1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        2064,
        2672
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "6951d857-278a-4633-be22-f06937dacb98",
      "name": "Loop Over Items2",
      "type": "n8n-nodes-base.splitInBatches",
      "onError": "continueErrorOutput",
      "position": [
        2752,
        2656
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "bb781af1-7246-4bf7-9f77-1f7eb17637ef",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        3648,
        2032
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "5127d065-bc43-454c-bc64-02402c23143a",
      "name": "Wait1",
      "type": "n8n-nodes-base.wait",
      "position": [
        3440,
        2656
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "65efcc77-b567-4fff-a2e8-31b8e0e29f4e",
      "name": "Get row(s) in sheet1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2288,
        2672
      ],
      "parameters": {},
      "typeVersion": 4.7
    },
    {
      "id": "71fb0b9d-d8b2-490b-8a55-a515c56fe10e",
      "name": "Update row in sheet1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3648,
        2656
      ],
      "parameters": {},
      "typeVersion": 4.7
    },
    {
      "id": "5a81a696-1155-4fbb-966c-82baec8219fe",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        2496,
        2672
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "72c8bccf-37b1-4dc5-9fbd-19fe72b7c1ca",
      "name": "If1",
      "type": "n8n-nodes-base.if",
      "position": [
        2432,
        2032
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "bfa61ebd-bdf8-4356-8807-579ea74a06cd",
      "name": "Schedule Trigger2",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        2064,
        3136
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "a3dfff36-07c3-49c6-b7fb-718638854507",
      "name": "Wait2",
      "type": "n8n-nodes-base.wait",
      "position": [
        3712,
        3120
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "59e93cf6-cf15-4a92-b344-bac485607e07",
      "name": "Update row in sheet2",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueErrorOutput",
      "position": [
        3920,
        3120
      ],
      "parameters": {},
      "typeVersion": 4.7,
      "alwaysOutputData": false
    },
    {
      "id": "098cf0b1-6c13-428a-aedf-53f5a4ace309",
      "name": "If2",
      "type": "n8n-nodes-base.if",
      "position": [
        2464,
        3136
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "69cc889b-3692-412b-9265-8b6ed4df7a49",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "onError": "continueErrorOutput",
      "position": [
        2928,
        3120
      ],
      "parameters": {},
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "37e8ea98-60d5-413e-922d-e5fed98e96ef",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1776,
        2528
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "1ab50ec4-c5f0-4888-8f2c-0b16c518e6ea",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1792,
        1856
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "9bb1bf69-b5f4-4471-a98e-e4728062391c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1808,
        3072
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "1b2d40a7-ceef-4b15-9ffd-a9ab4ebce29d",
      "name": "Code1",
      "type": "n8n-nodes-base.code",
      "position": [
        3456,
        3120
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "3fdb7f62-3fad-4067-b6c8-d2e07984370f",
      "name": "Loop Over Items4",
      "type": "n8n-nodes-base.splitInBatches",
      "onError": "continueErrorOutput",
      "position": [
        2704,
        3088
      ],
      "parameters": {},
      "typeVersion": 3,
      "alwaysOutputData": true
    },
    {
      "id": "abf7cc40-ea8a-4c1d-abb5-31f8d4e5a723",
      "name": "Get row(s) in sheet3",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2288,
        3136
      ],
      "parameters": {},
      "typeVersion": 4.7
    },
    {
      "id": "d83f2237-6fe7-4eb4-b2d7-deba7c26e54e",
      "name": "Linkedin Scraped Formater",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "onError": "continueErrorOutput",
      "position": [
        2656,
        1296
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "3f428a31-7eb0-4e78-b574-bf0b968b652e",
      "name": "Store values",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3008,
        1296
      ],
      "parameters": {},
      "typeVersion": 4.7
    },
    {
      "id": "a3e862b8-9f95-46ad-be2d-a7b06f15a1f0",
      "name": "Company Name to Domain",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3232,
        2032
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "835de11e-aa6d-4e4e-9f2d-7e008155d1db",
      "name": "People Search",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        3024,
        2656
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "bfed2a87-6446-4484-aad5-56f4ee3a566e",
      "name": "Email Finder",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueErrorOutput",
      "position": [
        3184,
        3120
      ],
      "parameters": {},
      "typeVersion": 4.2
    }
  ],
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "Loop Over Items2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If1": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If2": {
      "main": [
        [
          {
            "node": "Loop Over Items4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Email Finder",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "Wait2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Update row in sheet1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait2": {
      "main": [
        [
          {
            "node": "Update row in sheet2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email Finder": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Store values": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "People Search": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Linkedin Scraped Formater",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items1": {
      "main": [
        [],
        [
          {
            "node": "Company Name to Domain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items2": {
      "main": [
        [],
        [
          {
            "node": "People Search",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items4": {
      "main": [
        [],
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger1": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger2": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "If1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet1": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet3": {
      "main": [
        [
          {
            "node": "If2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet1": {
      "main": [
        [
          {
            "node": "Loop Over Items2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet2": {
      "main": [
        [
          {
            "node": "Loop Over Items4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Company Name to Domain": {
      "main": [
        [
          {
            "node": "Update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Linkedin Scraped Formater",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Linkedin Scraped Formater",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Linkedin Scraped Formater": {
      "main": [
        [
          {
            "node": "Store values",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Store values",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Automatically capture company and store details from LinkedIn posts, enrich them with domain names and key decision-maker (KDM) data from Apollo.io, and store everything neatly in Google Sheets. This workflow turns LinkedIn post data into a complete, structured lead database —…

Source: https://n8n.io/workflows/8409/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

⏺ 🚀 How it works

Agent, Anthropic Chat, Output Parser Structured +6
AI & RAG

LineOA. Uses httpRequest, agent, lmChatGoogleGemini, outputParserStructured. Webhook trigger; 69 nodes.

HTTP Request, Agent, Google Gemini Chat +3
AI & RAG

Resume Screening & Behavioral Interviews with Gemini, Elevenlabs, & Notion ATS copy. Uses outputParserStructured, chainLlm, googleDrive, stickyNote. Webhook trigger; 67 nodes.

Output Parser Structured, Chain Llm, Google Drive +9
AI & RAG

Candidate Engagement | Resume Screening | AI Voice Interviews | Applicant Insights

Output Parser Structured, Chain Llm, Google Drive +9
AI & RAG

leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.

Supabase, Gmail, Form Trigger +13