Le problème
Les listes d'emails à froid contiennent un nom d'entreprise et peut-être un domaine, mais aucun contexte sur la situation SEO actuelle du prospect, sa stack technique ou les actualités récentes. La prospection générique est ignorée. Les commerciaux recherchent manuellement chaque prospect sur Google avant de rédiger les emails, ce qui ne passe pas à l'échelle au-delà de 20 prospects par jour.
La solution Scavio
Exécutez chaque prospect via l'API de recherche de Scavio pour construire un profil SERP : classements actuels, présence dans l'AI Overview, statut dans le Knowledge Graph, actualités récentes et positionnement des concurrents. Injectez cet enrichissement dans la personnalisation des emails. Chaque audit coûte 1-2 crédits ($0.005-$0.01).
Avant
Un commercial recherche manuellement 20 prospects par jour sur Google. Il rédige des emails génériques. Taux d'ouverture : 15 %. Taux de réponse : 2 %.
Après
Pipeline audite 500 prospects par heure. Chaque email fait référence à la situation SERP réelle du prospect. Taux d'ouverture : 35 %. Taux de réponse : 8 %.
À qui cela s'adresse
Équipes commerciales et SDR qui ont besoin d'informations SERP spécifiques aux prospects pour personnaliser la prospection à froid à grande échelle.
Avantages clés
- 500 audits SERP de prospects par heure contre 20/jour manuel
- Données de personnalisation : classements, AI Overview, Knowledge Graph
- 1-2 crédits par prospect ($0.005-$0.01)
- La sortie structurée alimente directement les modèles d'email
- Amélioration de 2 à 4 fois des taux de réponse grâce à la personnalisation basée sur SERP
Exemple Python
import requests, os, json, csv
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
def serp_audit(company: str, domain: str) -> dict:
"""Audit a prospect's SERP presence."""
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": company, "country_code": "us"},
timeout=10,
)
data = resp.json()
organic = data.get("organic_results", [])
domain_positions = [r["position"] for r in organic if domain in r.get("link", "")]
return {
"company": company,
"domain": domain,
"total_results": len(organic),
"domain_positions": domain_positions,
"has_ai_overview": bool(data.get("ai_overview")),
"has_knowledge_graph": bool(data.get("knowledge_graph")),
"top_competitor": organic[0].get("link", "") if organic and domain not in organic[0].get("link", "") else "owns_top",
}
# Audit a batch of prospects
prospects = [
{"company": "Acme Corp", "domain": "acme.com"},
{"company": "Widget Inc", "domain": "widget.io"},
]
for p in prospects:
audit = serp_audit(p["company"], p["domain"])
print(f"{audit['company']}: positions {audit['domain_positions']}, AI Overview: {audit['has_ai_overview']}")Exemple JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function serpAudit(company, domain) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:company, country_code:'us'})});
const d = await r.json();
const organic = d.organic_results || [];
const positions = organic.filter(r=>(r.link||'').includes(domain)).map(r=>r.position);
const topComp = organic[0] && !organic[0].link?.includes(domain) ? organic[0].link : 'owns_top';
return {company, domain, totalResults:organic.length, domainPositions:positions, hasAiOverview:!!d.ai_overview, hasKg:!!d.knowledge_graph, topCompetitor:topComp};
}
const prospects = [{company:'Acme Corp', domain:'acme.com'}, {company:'Widget Inc', domain:'widget.io'}];
for (const p of prospects) {
const a = await serpAudit(p.company, p.domain);
console.log(a.company+': positions '+a.domainPositions+', AI Overview: '+a.hasAiOverview);
}Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA