n8n Lead Enrichment After Apollo
Apollo lists are burned. Build an n8n pipeline that finds leads from Reddit intent signals, enriches with SERP data, validates with email verification.
Apollo's Tavily-based enrichment integration is gone after the Nebius acquisition. For n8n users who relied on Apollo's actor-style enrichment, three alternatives exist: Prospeo for email finding with weekly bulk refresh, People Data Labs for pay-per-record company and contact data, and Scavio for SERP-based enrichment that pulls live web presence data. Each returns different data -- build a normalizer to get consistent output regardless of source.
What Apollo enrichment actually did
Apollo's enrichment took a company domain or person's email and returned firmographic data: company size, funding stage, tech stack, and contact details. The Tavily integration added web search context. With Tavily acquired by Nebius, that search enrichment layer broke. Apollo's core database still works, but the live web enrichment that made it useful for discovery is gone.
Alternative 1: Prospeo (email finding + verification)
# Prospeo: finds and verifies professional emails
# Pricing: ~$39/mo for 1,000 credits, bulk endpoint available
# Best for: email discovery and verification
# n8n HTTP Request node configuration:
# Method: POST
# URL: https://api.prospeo.io/email-finder
# Headers:
# x-api-key: YOUR_PROSPEO_KEY
# Body:
# {
# "domain": "{{ $json.company_domain }}",
# "first_name": "{{ $json.first_name }}",
# "last_name": "{{ $json.last_name }}"
# }
#
# Response shape:
# {
# "email": "john@company.com",
# "confidence": 95,
# "verified": true,
# "domain": "company.com"
# }
# Prospeo strengths: high verification accuracy
# Prospeo weakness: email only, no firmographic dataAlternative 2: People Data Labs (firmographic data)
# PDL: comprehensive person and company data
# Pricing: pay-per-record (~$0.03-0.10/record depending on volume)
# Best for: company data enrichment (size, industry, funding)
# n8n HTTP Request node configuration:
# Method: GET
# URL: https://api.peopledatalabs.com/v5/company/enrich
# Query params:
# api_key: YOUR_PDL_KEY
# website: {{ $json.company_domain }}
#
# Response includes:
# {
# "name": "Company Inc",
# "size": "51-200",
# "industry": "computer software",
# "founded": 2019,
# "location": {"country": "us", "region": "california"},
# "funding_total": 15000000,
# "employee_count": 120
# }
# PDL strengths: deep firmographic data, large database
# PDL weakness: expensive at scale, data can be staleAlternative 3: Scavio (SERP-based enrichment)
import requests, os
def serp_enrich_company(domain: str) -> dict:
"""Enrich company data using live SERP results."""
api_key = os.environ["SCAVIO_API_KEY"]
headers = {"x-api-key": api_key}
base_url = "https://api.scavio.dev/api/v1/search"
enrichment = {"domain": domain, "web_presence": {}, "social_signals": {}}
# Google: company info, news, reviews
google_resp = requests.post(
base_url,
headers=headers,
json={"query": f"site:{domain}", "platform": "google"},
timeout=10,
)
google_data = google_resp.json()
enrichment["web_presence"] = {
"indexed_pages": len(google_data.get("organic_results", [])),
"top_pages": [
{"title": r["title"], "url": r.get("link", "")}
for r in google_data.get("organic_results", [])[:5]
],
"has_knowledge_panel": bool(google_data.get("knowledge_panel")),
}
# Reddit: what people say about them
reddit_resp = requests.post(
base_url,
headers=headers,
json={"query": domain.replace(".com", ""), "platform": "reddit"},
timeout=10,
)
reddit_data = reddit_resp.json()
enrichment["social_signals"] = {
"reddit_mentions": len(reddit_data.get("organic_results", [])),
"recent_discussions": [
{"title": r["title"], "snippet": r.get("snippet", "")[:100]}
for r in reddit_data.get("organic_results", [])[:3]
],
}
return enrichment
# 2 credits per company = $0.01
# Different data than Apollo: live web presence instead of static firmographics
# Best for: understanding current market presence, not historical dataThe normalizer: consistent output from any source
// n8n Function node: normalize enrichment from any provider
// Place after the enrichment HTTP Request node
const raw = $input.first().json;
const provider = $input.first().json._provider || "unknown";
const normalized = {
domain: "",
company_name: "",
emails: [],
company_size: "",
industry: "",
funding: null,
web_presence: null,
social_signals: null,
enriched_at: new Date().toISOString(),
provider: provider,
};
if (provider === "prospeo") {
normalized.domain = raw.domain || "";
normalized.emails = raw.email ? [{ email: raw.email, confidence: raw.confidence }] : [];
} else if (provider === "pdl") {
normalized.domain = raw.website || "";
normalized.company_name = raw.name || "";
normalized.company_size = raw.size || "";
normalized.industry = raw.industry || "";
normalized.funding = raw.funding_total || null;
} else if (provider === "scavio") {
normalized.domain = raw.domain || "";
normalized.web_presence = raw.web_presence || null;
normalized.social_signals = raw.social_signals || null;
}
return [{ json: normalized }];n8n workflow: multi-source enrichment pipeline
# Workflow structure:
#
# [Trigger: new lead in CRM / webhook / spreadsheet]
# |
# v
# [Split: run enrichment in parallel]
# |--- [Prospeo: email finding]
# |--- [Scavio: web presence + Reddit mentions]
# |--- [PDL: firmographic data (if budget allows)]
# |
# v
# [Merge: combine all enrichment results]
# |
# v
# [Normalizer Function: consistent output shape]
# |
# v
# [Write to CRM / Airtable / Google Sheets]
#
# Cost per lead:
# Prospeo: ~$0.04
# Scavio: $0.01 (2 credits)
# PDL: ~$0.05
# Total: ~$0.10/lead with all three
# Without PDL: ~$0.05/leadDecision guide: which enrichment source to use
- Need verified emails: Prospeo (highest email accuracy)
- Need firmographic data (size, funding, industry): PDL (most comprehensive)
- Need current web presence and sentiment: Scavio SERP-based enrichment
- Budget under $20/month: Scavio only (250 free credits + $0.005/credit)
- Enterprise with budget: combine all three for maximum data coverage
- Replacing Apollo's full stack: PDL for firmographics + Prospeo for emails
Apollo's enrichment was convenient because it bundled everything. The post-Tavily reality is that no single provider replaces it fully. Build your n8n workflow with a normalizer layer, start with the cheapest source that covers your primary need, and add providers as your pipeline matures. The normalizer ensures you can swap providers without rebuilding downstream nodes.