LinkedIn to Google Sheets, prospect lists ready fast
Prospecting falls apart in the same place every time: you find a “good” LinkedIn result, copy the URL, paste it somewhere, then realize half the links aren’t even real profiles.
This LinkedIn Sheets automation hits growth marketers first, but sales ops and boutique agency owners feel it too. You end up with messy spreadsheets, wasted clicks, and outreach lists you don’t fully trust.
This workflow turns a plain-English request like “Find marketing managers in Paris” into verified LinkedIn profile URLs saved straight to Google Sheets. You’ll see what it does, how it works, and what you need to get it running.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: LinkedIn to Google Sheets, prospect lists ready fast
flowchart LR
subgraph sg0["Execute Workflow Flow"]
direction LR
n5@{ icon: "mdi:play-circle", form: "rounded", label: "Execute Workflow Trigger", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "OpenAI", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Search Page Numbers", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Search Pages", pos: "b", h: 48 }
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Google Custom Search API Req.."]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Filter LinkedIn Profiles"]
n11@{ icon: "mdi:database", form: "rounded", label: "Save to Google Sheets", pos: "b", h: 48 }
n6 --> n7
n8 --> n9
n7 --> n8
n5 --> n6
n10 --> n11
n9 --> n10
end
subgraph sg1["When chat message received Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:memory", form: "rounded", label: "Window Buffer Memory", pos: "b", h: 48 }
n4@{ icon: "mdi:wrench", form: "rounded", label: "Call n8n Workflow Tool", pos: "b", h: 48 }
n2 -.-> n1
n3 -.-> n1
n4 -.-> n1
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n5,n0 trigger
class n6,n1 ai
class n2 aiModel
class n4 ai
class n3 ai
class n11 database
class n9 api
class n10 code
classDef customIcon fill:none,stroke:none
class n9,n10 customIcon
Why This Matters: Clean prospect lists without link chaos
Manual LinkedIn prospecting is deceptively expensive. You don’t just lose time to searching; you lose time to second-guessing your own list. Someone exports results, someone else cleans them, then a rep clicks through and finds broken links, company pages instead of people, or profiles outside the role/location you actually asked for. And if you’re doing this weekly, the mental load becomes the real problem. You stop iterating on targeting because every new search means more cleanup.
It adds up fast. Here’s where it usually breaks down.
- Copy-pasting profile URLs turns into a recurring admin task that quietly eats about 1–2 hours a week.
- Search results include non-profile pages, which means your “lead list” starts with bad data.
- People tweak queries in Slack or email, but nobody can reproduce what was actually searched later.
- When lists are inconsistent, outreach quality drops because reps spend their energy filtering instead of messaging.
What You’ll Build: Natural-language LinkedIn search to Sheets
This workflow gives you a simple input and a reliable output. You send a natural-language request (for example, “Find software developers in London working in fintech”) through a chat-style trigger, and an AI agent turns that sentence into structured search parameters like job title, location, and industry. From there, the workflow runs searches using the Google Custom Search API, pages through results, and filters the responses down to real LinkedIn profile URLs. Finally, it writes the clean set of profile links and titles to a Google Sheet, so your list is ready for review, enrichment, or outreach.
The workflow starts with a chat request and a short memory buffer so follow-up instructions still make sense. Then it generates a list of page indexes, loops through search pages, and pulls results via HTTP requests. A code step filters out anything that isn’t a LinkedIn profile, and Google Sheets becomes your single source of truth.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you build one new prospect list per day for a campaign. Manually, you might review 40 results, open each one, and paste 25 usable profile links into a sheet, which is easily about 45 minutes once you include cleanup. With this workflow, you send the request in under a minute, let the search and filtering run for roughly 5–10 minutes, then skim the sheet and delete obvious mismatches. Most teams get about 30 minutes back per list, and the list is usually cleaner.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets for storing URLs and profile titles
- Google Custom Search API to fetch search results programmatically
- OpenAI API key (get it from your OpenAI dashboard)
Skill level: Intermediate. You’ll connect a few credentials and be comfortable testing with sample queries.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A chat request kicks things off. You send a message through the workflow’s chat trigger (many teams pipe this from Telegram, others use a webhook-based chat UI). The request can be messy and human, because that’s the point.
The AI agent turns your sentence into search inputs. Using an OpenAI chat model plus a small “memory buffer,” the workflow extracts the role, location, and any qualifiers you mention. If you refine the request (“same roles, but Berlin”), the workflow can keep context instead of starting from scratch.
Search runs across pages automatically. A step assigns page indexes, then a split/loop processes each page in batches. The HTTP Request node calls Google Custom Search API for each page, collecting candidate results without you clicking “next” a dozen times.
Only real LinkedIn profiles get saved. A code filter removes junk URLs and non-profile pages, then the clean set (profile title/headline plus URL) is written to Google Sheets. Your sheet becomes the artifact you can share with a rep, a VA, or your CRM enrichment tool.
You can easily modify the search domain and output columns to fit your process. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Chat Trigger
This workflow starts when a chat message arrives, then hands the conversation to the AI agent.
- Add or open the Incoming Chat Trigger node as the workflow trigger.
- Keep the default settings unless you need a custom webhook path for your chat integration.
- Verify the execution path: Incoming Chat Trigger → Conversational Agent.
Step 2: Connect Google Sheets
Results are written to Google Sheets at the end of the workflow.
- Open Update Google Spreadsheet and select your target spreadsheet and sheet tab.
- Credential Required: Connect your Google Sheets credentials in Update Google Spreadsheet.
- Map the fields you want to write from the filtered LinkedIn records in the node’s field mappings.
Step 3: Set Up the Conversational AI Layer
The chat-based agent orchestrates the workflow and routes requests to the sub-workflow and tools.
- Open Conversational Agent and confirm it is connected to OpenAI Dialogue Model as the language model.
- Ensure Windowed Memory Buffer is linked to Conversational Agent to maintain conversation context.
- Ensure Invoke Workflow Tool is connected to Conversational Agent for sub-workflow execution.
- Open OpenAI Assistant for the sub-workflow execution path and connect it to your OpenAI account.
Step 4: Configure Search and Data Processing
This section builds the query, splits pages, calls the external search API, and filters results.
- Confirm the execution order for the sub-workflow: Sub-Workflow Trigger → OpenAI Assistant → Assign Page Indexes → Divide Page List.
- In Assign Page Indexes, define the output fields that represent the page list you want to query.
- In Divide Page List, verify the node splits each page index into separate items for the API call.
- In External Search Request, configure the request URL, method, and query parameters required by your search endpoint.
- In Filter LinkedIn Records, implement logic to keep only valid LinkedIn results before writing to Sheets.
Step 5: Configure Output and Sheet Sync
The workflow finalizes by writing filtered results to Google Sheets.
- Verify the execution order: External Search Request → Filter LinkedIn Records → Update Google Spreadsheet.
- In Update Google Spreadsheet, choose the desired operation (append or update) that matches your use case.
- Map each output field from Filter LinkedIn Records into the correct column in the sheet.
Step 6: Test and Activate Your Workflow
Run a full test to validate the AI conversation, search requests, and Google Sheets sync.
- Click Execute Workflow and send a test message to Incoming Chat Trigger.
- Confirm that Conversational Agent routes the request through the sub-workflow and into External Search Request.
- Verify that Update Google Spreadsheet writes new rows with filtered LinkedIn records.
- Once verified, switch the workflow to Active for production use.
Troubleshooting Tips
- Google Custom Search API credentials can expire or lack access to the right project. If things break, check the Google Cloud Console (APIs & Services → Credentials) first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About 30 minutes if your API keys are ready.
No. You’ll mostly connect accounts and paste in API credentials, then test a few sample searches.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs and Google Custom Search API usage (usually small for light prospecting).
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s one of the best reasons to use it. You can change the search domain in the External Search Request step to target Twitter, GitHub, or company websites, then adjust the Filter LinkedIn Records code to match the new URL patterns. You can also update the AI prompt inside the Conversational Agent/OpenAI Assistant to extract different parameters (seniority, tech stack, company size). Finally, tweak the Google Sheets columns so the output matches whatever your outreach process expects.
Usually it’s a permissions issue on the target spreadsheet or an expired OAuth connection in n8n. Reconnect Google Sheets credentials, confirm the sheet is shared with the right Google account, and verify the document and tab names match what the node expects. If it fails only sometimes, you may also be hitting rate limits when writing lots of rows at once, so batching writes can help.
Enough for most small teams running daily or weekly list-building.
For this workflow, n8n is usually the better fit because you’re doing looping, filtering, and custom logic (the “keep only real LinkedIn profiles” part is the whole game). You also get flexible branching without paying extra per path, and self-hosting can remove execution limits entirely. Zapier or Make can still work, but you’ll often end up stitching together several steps and living with weaker control over pagination and filtering. If your needs are a simple “form submission → add a row,” they may feel simpler. If you’re unsure, Talk to an automation expert and you’ll get a straight answer.
Clean inputs. Clean outputs. And a prospecting process you can actually repeat next week without dreading the cleanup.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.