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 โ eg "n8n" . This keyword drives every subsequent step. |
3๏ธโฃ Search Google (Results 1-10)
Node |
Type |
API Credential |
Search Google (top 10) |
SerpAPI
|
Create SerpAPI credential <br>1. Sign up โ copy API key โ n8n โ Credentials โ New โ SerpAPI โ paste.<br>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).<br> onError = continueRegularOutput keeps loop alive on failures. |
8๏ธโฃ Scrape Webpage Content (Apify)
Node |
Type |
API Credential |
Scrape URL with apify
|
HTTP Request
|
Create Apify credential <br>1. Sign up at https://console.apify.com <br>2. Account โ API tokens โ copy.<br>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 |
json { "startUrls": [" {{ $json.link }} "] } |
|
9๏ธโฃ Extract Email with OpenAI
Node |
Type |
API Credential |
Extract Email from webpage
|
LangChain Agent
|
Create OpenAI credential <br>1. Generate key at https://platform.openai.com/account/api-keys<br>2 . n8n โ Credentials โ New โ OpenAI API โ paste key. |
Prompt (system) |
extract the email address from the text. if there is no email address, output null.
|
|
Output Parser
|
Structured Output Parser2 expects โ { "email": "address OR null" }
|
|
๐ Loop Continues & Final Data
๐ก Optional Enhancements
Idea How
Save Leads Add to Google Sheets or Airtable node after the loop.
Validate Emails Chain at 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
๐ง robert.j.breen@gmail.com
๐ https://www.linkedin.com/in/robert-breen-29429625/
๐ https://ynteractive.com