ZoomInfo 和 Apollo 等传统的潜在客户丰富工具对定期更新的专有数据库中的每条记录收取 0.10-0.50 美元的费用。搜索 API 丰富化采用了不同的方法:查询每个潜在客户的实时搜索结果,以获取当前的公司信息、社交存在和在线情绪。本教程构建了一个 Python 丰富管道,该管道获取公司名称列表并输出包含网站、LinkedIn URL、评论数据和最新新闻的丰富记录。
前置条件
- 已安装 Python 3.8+
- 请求已安装库
- 来自 scavio.dev 的 Scavio API 密钥
- 丰富的公司名称 CSV
操作指南
步骤 1: 加载您的潜在客户列表
从 CSV 文件中读取公司名称。
Python
import csv
def load_leads(filepath: str) -> list:
with open(filepath) as f:
reader = csv.DictReader(f)
return [row['company_name'] for row in reader]
leads = load_leads('leads.csv')
print(f'Loaded {len(leads)} leads')步骤 2: 通过搜索数据丰富每条线索
对每个潜在客户运行多次搜索以构建完整的个人资料。
Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def enrich_lead(company: str) -> dict:
# Search for company website and info
info = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': company}, timeout=10).json()
# Search for LinkedIn
linkedin = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{company} site:linkedin.com'}, timeout=10).json()
# Search for reviews
reviews = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{company} reviews'}, timeout=10).json()
return {
'company': company,
'website': info.get('organic', [{}])[0].get('link', ''),
'description': info.get('organic', [{}])[0].get('snippet', ''),
'linkedin': next((r['link'] for r in linkedin.get('organic', []) if 'linkedin.com' in r.get('link', '')), ''),
'review_count': len(reviews.get('organic', [])),
}步骤 3: 处理所有潜在客户并进行速率限制
在请求之间有一个小的延迟来丰富所有潜在客户,以遵守速率限制。
Python
import time
def enrich_all(leads: list, delay: float = 0.5) -> list:
enriched = []
for i, company in enumerate(leads):
try:
data = enrich_lead(company)
enriched.append(data)
print(f'[{i+1}/{len(leads)}] Enriched: {company}')
except Exception as e:
enriched.append({'company': company, 'error': str(e)})
print(f'[{i+1}/{len(leads)}] Failed: {company}: {e}')
time.sleep(delay)
return enriched步骤 4: 导出丰富的数据
将丰富的潜在客户保存到 CSV 中,以便导入到您的 CRM 或外展工具中。
Python
def export_enriched(data: list, filepath: str):
if not data: return
keys = data[0].keys()
with open(filepath, 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=keys)
writer.writeheader()
writer.writerows(data)
print(f'Exported {len(data)} enriched leads to {filepath}')
enriched = enrich_all(leads)
export_enriched(enriched, 'enriched_leads.csv')Python 示例
Python
import requests, os, csv
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def enrich(company):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': company}, timeout=10).json()
top = data.get('organic', [{}])[0]
return {'company': company, 'url': top.get('link', ''), 'snippet': top.get('snippet', '')}
# Usage: enriched = [enrich(c) for c in companies]JavaScript 示例
JavaScript
async function enrich(company) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'google', query: company})
}).then(r => r.json());
const top = data.organic?.[0] || {};
return {company, url: top.link, snippet: top.snippet};
}预期输出
JSON
A CSV of enriched leads with company website, LinkedIn URL, description, and review presence data.