ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment créer des rapports SEO d'agence avec une API
Tutoriel

Comment créer des rapports SEO d'agence avec une API

Automatisez les rapports SEO mensuels clients avec les données de classement et les positions des concurrents. Pipeline Python pour les agences à 0,005 $/requête.

Obtenez une clé API gratuiteDocumentation API

Les agences SEO passent des heures chaque mois à faire des captures d'écran de tableaux de bord pour les rapports clients. Un pipeline API les génère automatiquement : récupérer les données de classement, les positions des concurrents et les fonctionnalités SERP, puis produire des rapports formatés. À 0,005 $/requête, un rapport de 100 mots-clés coûte 0,50 $ par client.

Prérequis

  • Python 3.8+
  • bibliothèque requests
  • Une clé API Scavio depuis scavio.dev
  • Domaines clients et listes de mots-clés

Parcours

Étape 1: Définir les configurations client

Configurer les clients avec domaines, mots-clés et concurrents.

Python
import os, requests, json
from datetime import date

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

CLIENTS = [{'name': 'Acme Corp', 'domain': 'acme.com',
    'competitors': ['comp1.com', 'comp2.com'],
    'keywords': ['widget manufacturing', 'custom widgets', 'widget supplier']}]

Étape 2: Recueillir les classements pour le client et les concurrents

Un appel SERP par mot-clé capture toutes les positions de domaine.

Python
def collect(client):
    report = []
    domains = [client['domain']] + client['competitors']
    for kw in client['keywords']:
        data = requests.post('https://api.scavio.dev/api/v1/search',
            headers=H, json={'query': kw, 'country_code': 'us'}).json()
        positions = {}
        for r in data.get('organic_results', []):
            for d in domains:
                if d in r.get('link', '') and d not in positions:
                    positions[d] = r['position']
        features = []
        if data.get('answer_box'): features.append('AB')
        if data.get('related_questions'): features.append('PAA')
        report.append({'keyword': kw, 'positions': positions, 'features': features})
    return report

Étape 3: Générer des métriques récapitulatives

Calculer la position moyenne, les comptes top 3/10 et le coût.

Python
def summary(client, data):
    positions = [r['positions'].get(client['domain']) for r in data if r['positions'].get(client['domain'])]
    avg = round(sum(positions) / len(positions), 1) if positions else None
    t3 = sum(1 for p in positions if p <= 3)
    t10 = sum(1 for p in positions if p <= 10)
    print(f"\n{client['name']}: {len(positions)}/{len(data)} ranking, avg={avg}, top3={t3}, top10={t10}")
    print(f'Cost: ${len(data) * 0.005:.3f}')

Étape 4: Exécuter tous les rapports clients

Générer et exporter pour chaque client.

Python
for client in CLIENTS:
    data = collect(client)
    print(f"{'Keyword':25} {'Client':7} {'Comp1':7} {'Comp2':7} Features")
    for r in data:
        p = r['positions']
        print(f"{r['keyword']:25} {str(p.get(client['domain'], '-')):7} "
              f"{str(p.get(client['competitors'][0], '-')):7} "
              f"{str(p.get(client['competitors'][1], '-')):7} {', '.join(r['features']) or '-'}")
    summary(client, data)
    with open(f"report_{client['name'].lower().replace(' ','_')}.json", 'w') as f:
        json.dump({'client': client['name'], 'date': date.today().isoformat(), 'data': data}, f, indent=2)

Exemple Python

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

def report(domain, keywords, comps):
    for kw in keywords:
        data = requests.post('https://api.scavio.dev/api/v1/search',
            headers=H, json={'query': kw, 'country_code': 'us'}).json()
        pos = {}
        for r in data.get('organic_results', []):
            for d in [domain] + comps:
                if d in r.get('link', '') and d not in pos: pos[d] = r['position']
        print(f'{kw:25} You={pos.get(domain, "-"):4} {" ".join(f"{c}={pos.get(c,"-")}" for c in comps)}')

report('acme.com', ['widgets', 'widget supplier'], ['comp1.com'])

Exemple JavaScript

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const H = { 'x-api-key': API_KEY, 'Content-Type': 'application/json' };
async function report(domain, keywords, comps) {
  for (const kw of keywords) {
    const data = await fetch('https://api.scavio.dev/api/v1/search', {
      method: 'POST', headers: H, body: JSON.stringify({ query: kw, country_code: 'us' })
    }).then(r => r.json());
    const pos = {};
    for (const r of data.organic_results || []) {
      for (const d of [domain, ...comps]) if (r.link.includes(d) && !pos[d]) pos[d] = r.position;
    }
    console.log(`${kw}: You=${pos[domain]||'-'} ${comps.map(c=>`${c}=${pos[c]||'-'}`).join(' ')}`);
  }
}
report('acme.com', ['widgets'], ['comp1.com']).catch(console.error);

Sortie attendue

JSON
Keyword                   Client  Comp1   Comp2   Features
widget manufacturing      3       7       -       PAA
custom widgets            5       2       8       AB, PAA
widget supplier           1       4       6       -

Acme Corp: 3/3 ranking, avg=3.0, top3=2, top10=3
Cost: $0.015

Tutoriels associés

  • Comment construire un tableau de bord SEO personnalisé avec une API de recherche
  • Comment surveiller les surfaces de recherche au-delà du classement
  • Comment construire un moniteur SERP concurrentiel

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+. bibliothèque requests. Une clé API Scavio depuis scavio.dev. Domaines clients et listes de mots-clés. 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

Meilleure API pour le reporting SEO d'agence en 2026

Read more
Best Of

Meilleures API de suivi de classement SEO en 2026

Read more
Glossary

Rapport API SEO pour agences

Read more
Solution

Construisez un suivi de classement local fiable avec l'API Scavio

Read more
Use Case

Tableau de bord SEO personnalisé pour les rapports d'agence

Read more
Workflow

Pipeline quotidien de suivi des classements locaux

Read more

Commencer

Automatisez les rapports SEO mensuels clients avec les données de classement et les positions des concurrents. Pipeline Python pour les agences à 0,005 $/requête.

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é