ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment construire un enrichissement par recherche d'e-mails à froid à grande échelle
Tutoriel

Comment construire un enrichissement par recherche d'e-mails à froid à grande échelle

Passez à l'échelle l'enrichissement d'e-mails à froid avec l'API de recherche. Traitez par lots des milliers de prospects avec des données d'entreprise, des actualités récentes et des signaux de stack technique pour des taux de réponse plus élevés.

Obtenez une clé API gratuiteDocumentation API

Créez un pipeline d'enrichissement d'e-mails à froid qui passe à l'échelle pour des milliers de prospects en traitant par lots les requêtes de recherche, en mettant en cache les résultats et en extrayant des signaux structurés pour la personnalisation des e-mails. L'enrichissement d'un seul prospect fonctionne pour les petites listes, mais à grande échelle, vous avez besoin de limitation de débit, gestion des erreurs, mise en cache et traitement parallèle. Ce pipeline traite les prospects par lots, stocke les données d'enrichissement dans un cache local pour éviter les appels API redondants et produit des données structurées prêtes pour un publipostage ou une importation CRM.

Prérequis

  • Python 3.8+ installé
  • bibliothèque requests installée
  • Une clé API Scavio provenant de scavio.dev
  • Une liste de prospects (CSV ou JSON) avec les noms d'entreprises

Parcours

Étape 1: Configurer le traitement par lots

Configurez un traitement par lots avec limitation de débit et un cache local pour éviter les requêtes redondantes.

Python
import os, requests, json, time, hashlib

API_KEY = os.environ['SCAVIO_API_KEY']
CACHE_FILE = 'enrichment_cache.json'

def load_cache() -> dict:
    try:
        with open(CACHE_FILE) as f:
            return json.load(f)
    except FileNotFoundError:
        return {}

def save_cache(cache: dict):
    with open(CACHE_FILE, 'w') as f:
        json.dump(cache, f, indent=2)

def cache_key(query: str) -> str:
    return hashlib.md5(query.encode()).hexdigest()

def cached_search(query: str, cache: dict) -> dict:
    key = cache_key(query)
    if key in cache:
        return cache[key]
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers={'x-api-key': API_KEY},
        json={'platform': 'google', 'query': query}, timeout=15)
    data = resp.json()
    cache[key] = data
    return data

cache = load_cache()
print(f'Cache entries: {len(cache)}')

Étape 2: Extraire les signaux d'enrichissement

Analysez les résultats de recherche pour trouver les signaux d'entreprise pertinents pour la prospection à froid.

Python
def extract_enrichment(company: str, data: dict) -> dict:
    results = data.get('organic_results', [])
    enrichment = {
        'company': company,
        'found': len(results) > 0,
        'website': '',
        'description': '',
        'recent_news': [],
        'hiring': False,
        'tech_signals': [],
    }
    for r in results[:8]:
        title = r.get('title', '')
        snippet = r.get('snippet', '')
        link = r.get('link', '')
        if not enrichment['website'] and company.lower().replace(' ', '') in link.lower().replace(' ', ''):
            enrichment['website'] = link
        if not enrichment['description'] and len(snippet) > 50:
            enrichment['description'] = snippet[:200]
        if any(w in title.lower() for w in ['hiring', 'careers', 'jobs', 'we are hiring']):
            enrichment['hiring'] = True
        if any(w in (title + snippet).lower() for w in ['raises', 'funding', 'launch', 'announces']):
            enrichment['recent_news'].append(title[:80])
    return enrichment

data = cached_search('Notion company overview', cache)
signals = extract_enrichment('Notion', data)
print(f"Website: {signals['website']}")
print(f"Hiring: {signals['hiring']}")

Étape 3: Traiter les prospects par lots

Traitez les prospects par lots configurables avec limitation de débit et suivi de progression.

Python
def batch_enrich(companies: list, batch_size: int = 10, delay: float = 0.5) -> list:
    cache = load_cache()
    enriched = []
    total = len(companies)
    for i, company in enumerate(companies):
        query = f'{company} company overview'
        data = cached_search(query, cache)
        signals = extract_enrichment(company, data)
        enriched.append(signals)
        if (i + 1) % batch_size == 0:
            save_cache(cache)
            print(f'Progress: {i+1}/{total} ({len(cache)} cached)')
        time.sleep(delay)
    save_cache(cache)
    print(f'Completed: {total} companies enriched')
    return enriched

companies = ['Notion', 'Linear', 'Vercel', 'Supabase', 'Clerk']
results = batch_enrich(companies, batch_size=2, delay=0.3)

Étape 4: Noter la qualité des prospects

Attribuez des scores de qualité basés sur les signaux d'enrichissement pour prioriser la prospection.

Python
def score_lead(enrichment: dict) -> int:
    score = 0
    if enrichment['found']:
        score += 1
    if enrichment['website']:
        score += 1
    if enrichment['hiring']:
        score += 2  # Hiring = budget available
    if enrichment['recent_news']:
        score += 2  # Recent activity = responsive
    if enrichment['description']:
        score += 1
    return score

def rank_leads(enriched: list) -> list:
    for lead in enriched:
        lead['score'] = score_lead(lead)
    ranked = sorted(enriched, key=lambda x: x['score'], reverse=True)
    for lead in ranked:
        print(f"  {lead['company']}: score={lead['score']} hiring={lead['hiring']} news={len(lead['recent_news'])}")
    return ranked

ranked = rank_leads(results)

Étape 5: Exporter pour publipostage

Exportez les prospects enrichis et notés au format CSV, prêts pour les outils de publipostage.

Python
import csv

def export_enriched(leads: list, output_path: str):
    fields = ['company', 'score', 'website', 'description', 'hiring', 'recent_news']
    with open(output_path, 'w', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=fields, extrasaction='ignore')
        writer.writeheader()
        for lead in leads:
            row = {**lead}
            row['recent_news'] = '; '.join(lead.get('recent_news', [])[:2])
            writer.writerow(row)
    print(f'Exported {len(leads)} leads to {output_path}')

export_enriched(ranked, 'enriched_leads.csv')

Exemple Python

Python
import requests, os
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': f'{company} company overview'}).json()
    results = data.get('organic_results', [])[:3]
    hiring = any('hiring' in r.get('title', '').lower() for r in results)
    return {'company': company, 'hiring': hiring, 'results': len(results)}

for c in ['Notion', 'Linear', 'Vercel']:
    print(enrich(c))

Exemple JavaScript

JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function enrich(company) {
  const r = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: H,
    body: JSON.stringify({platform: 'google', query: `${company} company overview`})
  });
  const results = (await r.json()).organic_results || [];
  return {company, results: results.length, hiring: results.some(r => /hiring|careers/i.test(r.title || ''))};
}
Promise.all(['Notion', 'Linear'].map(enrich)).then(console.log);

Sortie attendue

JSON
A scalable cold email enrichment pipeline with caching, batch processing, lead scoring, and CSV export for mail merge integration.

Tutoriels associés

  • Comment diagnostiquer le taux de rebond d'Apollo avec l'enrichissement par recherche
  • Comment résoudre la personnalisation des campagnes sortantes avec n8n Search

Questions fréquentes

La plupart des développeurs terminent ce tutoriel en 15 à 30 minutes. Vous aurez besoin d'une clé API Scavio (l'offre gratuite suffit) et d'un environnement Python ou JavaScript fonctionnel.

Python 3.8+ installé. bibliothèque requests installée. Une clé API Scavio provenant de scavio.dev. Une liste de prospects (CSV ou JSON) avec les noms d'entreprises. Une clé API Scavio vous donne 50 crédits gratuits à l'inscription.

Oui. L'offre gratuite comprend 50 crédits à l'inscription, ce qui est largement suffisant pour terminer ce tutoriel et prototyper une solution fonctionnelle.

Scavio dispose d'un package natif LangChain (langchain-scavio), d'un serveur MCP et d'une API REST simple qui fonctionne avec tout client HTTP. Ce tutoriel utilise the raw REST API, mais vous pouvez l'adapter à votre framework de prédilection.

Ressources connexes

Best Of

Meilleures API d'enrichissement de leads pour le cold outreach en 2026

Read more
Best Of

Meilleure API de recherche pour l'enrichissement des emails à froid en 2026

Read more
Use Case

Enrichissement de données e-commerce pour Cold Email

Read more
Solution

Enrichissez les leads commerciaux avec des données de recherche au lieu d'Apollo.

Read more
Use Case

Workflow d'enrichissement de recherche n8n

Read more
Glossary

Enrichissement des leads via l'API de recherche

Read more

Commencer

Passez à l'échelle l'enrichissement d'e-mails à froid avec l'API de recherche. Traitez par lots des milliers de prospects avec des données d'entreprise, des actualités récentes et des signaux de stack technique pour des taux de réponse plus élevés.

Obtenez une clé API gratuiteLire la documentation
ScavioScavio

API de recherche en temps réel pour agents IA. Recherchez sur toutes les plateformes, pas seulement Google.

Produit

  • Fonctionnalités
  • Tarifs
  • Tableau de bord
  • Affiliés

Développeurs

  • Documentation
  • Référence API
  • Démarrage rapide
  • Intégration MCP
  • SDK Python

Alternatives

  • Alternative à Tavily
  • Alternative à SerpAPI
  • Alternative à Firecrawl
  • Alternative à Exa

Outils

  • Formateur JSON
  • cURL vers code
  • Compteur de jetons
  • Tous les outils

© 2026 Scavio. Tous droits réservés.

Featured on TAAFT
Conditions d'utilisationPolitique de confidentialité