ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment construire une couche d'enrichissement B2B sans le verrouillage Apollo
Tutoriel

Comment construire une couche d'enrichissement B2B sans le verrouillage Apollo

Construisez une couche d'enrichissement de données B2B flexible en utilisant des API de recherche au lieu d'outils verrouillés comme Apollo. Obtenez des données d'entreprise, des stacks techniques et des signaux d'embauche.

Obtenez une clé API gratuiteDocumentation API

Les fournisseurs de données B2B comme Apollo vous enferment dans des abonnements coûteux avec des données obsolètes. Une couche d'enrichissement basée sur la recherche extrait des données fraîches à chaque fois que vous en avez besoin : descriptions d'entreprise depuis le Knowledge Graph de Google, signaux de stack technique à partir des offres d'emploi, rythme d'embauche et présence sociale. Ce tutoriel construit une couche d'enrichissement modulaire utilisant l'API Scavio à 0,005 $ par recherche. Pas de contrats annuels, pas de bases de données obsolètes.

Prérequis

  • Python 3.9+ installé
  • bibliothèque requests installée
  • Une clé API Scavio provenant de scavio.dev
  • Une liste de domaines ou noms d'entreprise à enrichir

Parcours

Étape 1: Construisez l'enrichisseur de profil d'entreprise

Recherchez chaque entreprise sur Google pour extraire les données du Knowledge Graph, la description du site web et les informations de base de l'entreprise.

Python
import os, requests, time, re

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
URL = 'https://api.scavio.dev/api/v1/search'
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def enrich_company(company: str) -> dict:
    """Get basic company profile from search."""
    resp = requests.post(URL, headers=H,
        json={'query': f'{company} company', 'country_code': 'us', 'num_results': 5})
    data = resp.json()
    kg = data.get('knowledge_graph', {})
    organic = data.get('organic_results', [])
    return {
        'company': company,
        'description': kg.get('description', organic[0].get('snippet', '') if organic else ''),
        'website': kg.get('website', ''),
        'type': kg.get('type', ''),
        'founded': kg.get('founded', ''),
        'headquarters': kg.get('headquarters', ''),
        'employees': kg.get('employees', ''),
    }

profile = enrich_company('Vercel')
for key, val in profile.items():
    if val:
        print(f'  {key}: {val}')

Étape 2: Ajoutez la détection de stack technique

Recherchez les offres d'emploi de l'entreprise pour détecter leur stack technique. Les exigences des postes révèlent les technologies réellement utilisées par l'entreprise.

Python
def detect_tech_stack(company: str) -> dict:
    """Detect tech stack from job postings."""
    resp = requests.post(URL, headers=H,
        json={'query': f'{company} hiring engineer 2026',
              'country_code': 'us', 'num_results': 5})
    results = resp.json().get('organic_results', [])
    all_text = ' '.join(f"{r.get('title','')} {r.get('snippet','')}" for r in results).lower()
    tech_categories = {
        'languages': ['python', 'javascript', 'typescript', 'go', 'rust', 'java', 'ruby'],
        'frameworks': ['react', 'next.js', 'django', 'fastapi', 'rails', 'spring', 'vue'],
        'databases': ['postgresql', 'mongodb', 'redis', 'mysql', 'dynamodb', 'elasticsearch'],
        'cloud': ['aws', 'gcp', 'azure', 'vercel', 'cloudflare', 'railway'],
        'tools': ['docker', 'kubernetes', 'terraform', 'github actions', 'datadog'],
    }
    detected = {}
    for category, techs in tech_categories.items():
        found = [t for t in techs if t in all_text]
        if found:
            detected[category] = found
    return {
        'tech_stack': detected,
        'hiring_signals': len(results),
        'job_titles': [r['title'][:60] for r in results[:3]],
    }

tech = detect_tech_stack('Vercel')
print(f'Tech Stack:')
for cat, techs in tech['tech_stack'].items():
    print(f'  {cat}: {", ".join(techs)}')
print(f'\nHiring signals: {tech["hiring_signals"]} job postings')

Étape 3: Ajoutez l'analyse de la présence sociale

Vérifiez la présence de l'entreprise sur Reddit et YouTube. Une présence sociale active indique une entreprise qui interagit avec les développeurs et pourrait être un bon prospect.

Python
def analyze_social(company: str) -> dict:
    """Check social presence on Reddit and YouTube."""
    social = {}
    # Reddit presence
    resp = requests.post(URL, headers=H,
        json={'query': f'site:reddit.com {company}',
              'country_code': 'us', 'num_results': 5})
    reddit_results = resp.json().get('organic_results', [])
    social['reddit'] = {
        'mentions': len(reddit_results),
        'subreddits': list(set(
            re.search(r'r/(\w+)', r.get('link', '')).group(1)
            for r in reddit_results
            if re.search(r'r/(\w+)', r.get('link', ''))
        )),
        'recent_topics': [r['title'][:60] for r in reddit_results[:3]],
    }
    time.sleep(0.3)
    # YouTube presence
    resp = requests.post(URL, headers=H,
        json={'query': f'site:youtube.com {company}',
              'country_code': 'us', 'num_results': 5})
    yt_results = resp.json().get('organic_results', [])
    social['youtube'] = {
        'videos': len(yt_results),
        'recent_videos': [r['title'][:60] for r in yt_results[:3]],
    }
    return social

social = analyze_social('Vercel')
print(f'Reddit: {social["reddit"]["mentions"]} mentions in {", ".join(social["reddit"]["subreddits"][:3])}')
print(f'YouTube: {social["youtube"]["videos"]} videos')

Étape 4: Construisez le pipeline d'enrichissement complet et exportez

Combinez toutes les sources d'enrichissement en un profil d'entreprise complet. Exportez en JSON pour l'intégration CRM ou en CSV pour une révision manuelle.

Python
import json, csv

def full_enrichment(company: str) -> dict:
    """Run all enrichment steps for a company."""
    profile = enrich_company(company)
    time.sleep(0.3)
    tech = detect_tech_stack(company)
    time.sleep(0.3)
    social = analyze_social(company)
    profile.update({
        'tech_stack': tech['tech_stack'],
        'hiring_signals': tech['hiring_signals'],
        'reddit_mentions': social['reddit']['mentions'],
        'youtube_videos': social['youtube']['videos'],
        'credits_used': 4,  # 1 company + 1 jobs + 1 reddit + 1 youtube
        'cost': 0.020,
    })
    return profile

def batch_enrich(companies: list, output: str = 'enriched_companies.json'):
    results = []
    for company in companies:
        print(f'Enriching: {company}...')
        profile = full_enrichment(company)
        results.append(profile)
        time.sleep(0.5)
    with open(output, 'w') as f:
        json.dump(results, f, indent=2)
    total_cost = sum(r['cost'] for r in results)
    print(f'\nEnriched {len(results)} companies')
    print(f'Total cost: ${total_cost:.3f}')
    print(f'Apollo equivalent: ~$50-100/month for similar data')
    return results

results = batch_enrich(['Vercel', 'Supabase', 'Railway'])
for r in results:
    stack = ', '.join(t for techs in r.get('tech_stack', {}).values() for t in techs)
    print(f"  {r['company']}: {r.get('description', '')[:50]}")
    print(f"    Stack: {stack[:60]}")

Exemple Python

Python
import os, requests, time

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def enrich(company):
    # Company info
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'query': f'{company} company', 'country_code': 'us', 'num_results': 3})
    kg = resp.json().get('knowledge_graph', {})
    time.sleep(0.3)
    # Tech stack from jobs
    resp2 = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'query': f'{company} hiring engineer', 'country_code': 'us', 'num_results': 3})
    text = ' '.join(r.get('snippet','') for r in resp2.json().get('organic_results', [])).lower()
    techs = [t for t in ['python','react','typescript','aws','docker'] if t in text]
    print(f"{company}: {kg.get('description','N/A')[:60]}")
    print(f"  Tech: {', '.join(techs) or 'N/A'}")

for c in ['Vercel', 'Supabase']:
    enrich(c)
    time.sleep(0.3)

Exemple JavaScript

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;

async function enrich(company) {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: `${company} company`, country_code: 'us', num_results: 3 })
  });
  const kg = (await resp.json()).knowledge_graph || {};
  const resp2 = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: `${company} hiring engineer`, country_code: 'us', num_results: 3 })
  });
  const text = ((await resp2.json()).organic_results || []).map(r => r.snippet || '').join(' ').toLowerCase();
  const techs = ['python','react','typescript','aws','docker'].filter(t => text.includes(t));
  console.log(`${company}: ${(kg.description || 'N/A').slice(0, 60)}`);
  console.log(`  Tech: ${techs.join(', ') || 'N/A'}`);
}

(async () => { for (const c of ['Vercel', 'Supabase']) await enrich(c); })();

Sortie attendue

JSON
Enriching: Vercel...
Enriching: Supabase...
Enriching: Railway...

Enriched 3 companies
Total cost: $0.060
Apollo equivalent: ~$50-100/month for similar data

  Vercel: Cloud platform for frontend frameworks and serverle
    Stack: typescript, react, next.js, aws
  Supabase: Open source Firebase alternative with PostgreSQL
    Stack: typescript, postgresql, docker
  Railway: Cloud platform for deploying applications
    Stack: typescript, docker, kubernetes

Tutoriels associés

  • Comment construire un pipeline de leads basé sur l'intention avec des données de recherche
  • Comment trouver des clients pour une agence d'automatisation avec des données de recherche
  • Comment enrichir des leads avec les données de recherche Google pour le cold email
  • Comment extraire les données du Google Knowledge Graph via l'API

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.9+ installé. bibliothèque requests installée. Une clé API Scavio provenant de scavio.dev. Une liste de domaines ou noms d'entreprise à enrichir. 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

Comparison

Apollo vs API-First Enrichment (Scavio, Exa, search APIs)

Read more
Best Of

Meilleures API d'enrichissement B2B en mai 2026

Read more
Use Case

Alternative à Apollo : Enrichissement de leads basé sur la recherche

Read more
Solution

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

Read more
Best Of

Meilleurs outils de recherche d'enrichissement B2B en 2026

Read more
Solution

Enrichissement B2B orienté API sans verrouillage Apollo

Read more

Commencer

Construisez une couche d'enrichissement de données B2B flexible en utilisant des API de recherche au lieu d'outils verrouillés comme Apollo. Obtenez des données d'entreprise, des stacks techniques et des signaux d'embauche.

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é