Beginner Lead Finder Using SerpAPI Search

Go to Workflow
2 views
Built by Robert Breen Robert Breen
Created on June 05, 2026

Description

This n8n workflow finds experts on any topic, scrapes their websites, and pulls out contact emails automatically.
Core services used: SerpAPI (google search) · Apify (website crawler) · OpenAI (GPT-4o email extraction).

🛠️ Step-by-Step Setup & Execution

1️⃣ Run Workflow (Manual Trigger)
| Node | Type | Purpose |
|------|------|---------|
| Run Workflow | Manual Trigger | Start the workflow on demand while you test. |

2️⃣ Set Your Topic
| Node | Type | How to configure |
|------|------|------------------|
| Set Topic | Set | Add a string field Topic – e.g. "n8n". This keyword drives every subsequent step. |

3️⃣ Search Google (Results 1-10)
| Node | Type | API Credential |
|------|------|----------------|
| Search Google (top 10) | SerpAPI | Create SerpAPI credential1. Sign up → copy API key → n8n → Credentials → New → SerpAPI → paste.2. Select the credential in this node. |
| Key Params | | |
| q | | ={{ $json.Topic }} Expert |
| location | | Region code (ex 585069efee19ad271e9c9b36) |
| additionalFields.start | | "10" (Google position 1-10)|

4️⃣ Search Google (Results 11-20)
| Node | Type | Notes |
|------|------|-------|
| Search Google (11-20) | SerpAPI (same credential) | Remove start or set to 20+ to fetch next page. |

5️⃣ Extract URL Lists
| Node | Type | Script Purpose |
|------|------|----------------|
| Extract Url & Extract Url 2 | Code | Loop data.organic_results → output { title, link, displayed_link } for each result. |

6️⃣ Combine Both Result Sets
| Node | Type | Details |
|------|------|---------|
| Append Results | Merge (combineAll) | Merges arrays from steps 3 & 4 into a single list for processing. |

7️⃣ Loop Over Every URL
| Node | Type | Configuration |
|------|------|---------------|
| Loop Over Items1 | Split In Batches | Default batch = 1 (process one page at a time).onError = continueRegularOutput keeps loop alive on failures. |

8️⃣ Scrape Webpage Content (Apify)
| Node | Type | API Credential |
|------|------|----------------|
| Scrape URL with apify | HTTP Request | Create Apify credential1. Sign up at https://console.apify.com2. Account → API tokens → copy.3. n8n → Credentials → New → HTTP Query Auth → set query param token=YOUR_TOKEN. |
| Request Details | | |
| Method | POST |
| URL | https://api.apify.com/v2/acts/6sigmag~fast-website-content-crawler/run-sync-get-dataset-items |
| JSON Body |
9️⃣ Extract Email with OpenAI
| Node | Type | API Credential |
|------|------|----------------|
| Extract Email from webpage | LangChain Agent | Create OpenAI credential1. Generate key at https://platform.openai.com/account/api-keys2. n8n → Credentials → New → OpenAI API → paste key. |
| Prompt (system) | | Output Parser | Structured Output Parser2 expects → { "email": "address OR null" } |

🔟 Loop Continues & Final Data
The extracted result returns to Loop Over Items1 until every URL is processed.
Typical final item JSON**:
{
"title": "How to Build n8n Workflows",
"link": "https://example.com",
"email": "[email protected]"
}

💡 Optional Enhancements
Idea How
Save Leads Add a Google Sheets or Airtable node after the loop.
Validate Emails Chain a ZeroBounce / Hunter.io verification API before saving.
Parallel Crawling Increase SplitInBatches size (watch Apify rate limits).

🙋‍♂️ Need More Help?
Robert Breen – Automation Consultant & n8n Expert
📧 [email protected]
🔗 https://www.linkedin.com/in/robert-breen-29429625/
🌐 https://ynteractive.com

Nodes Used (5)

AI Agent
@n8n/n8n-nodes-langchain.agent
Code
n8n-nodes-base.code
HTTP Request
n8n-nodes-base.httpRequest
OpenAI Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenAi
Structured Output Parser
@n8n/n8n-nodes-langchain.outputParserStructured