Les outils traditionnels d'enrichissement de leads comme ZoomInfo et Apollo facturent 0,10 à 0,50 $ par enregistrement provenant de bases de données propriétaires mises à jour périodiquement. L'enrichissement par API de recherche adopte une approche différente : interroger les résultats de recherche en direct pour chaque lead afin d'obtenir des informations actuelles sur l'entreprise, sa présence sociale et son sentiment en ligne. Ce tutoriel construit un pipeline d'enrichissement en Python qui prend une liste de noms d'entreprises et produit des enregistrements enrichis avec le site web, l'URL LinkedIn, les données d'avis et les actualités récentes.
Prérequis
- Python 3.8+ installé
- bibliothèque requests installée
- Une clé API Scavio depuis scavio.dev
- Un fichier CSV de noms d'entreprises à enrichir
Parcours
Étape 1: Chargez votre liste de leads
Lisez les noms d'entreprises à partir d'un fichier CSV.
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')Étape 2: Enrichissez chaque lead avec les données de recherche
Effectuez plusieurs recherches par lead pour construire un profil complet.
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', [])),
}Étape 3: Traitez tous les leads avec limitation de débit
Enrichissez tous les leads avec un petit délai entre les requêtes pour respecter les limites de débit.
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Étape 4: Exportez les données enrichies
Enregistrez les leads enrichis dans un fichier CSV pour les importer dans votre CRM ou outil de prospection.
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')Exemple 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]Exemple 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};
}Sortie attendue
A CSV of enriched leads with company website, LinkedIn URL, description, and review presence data.