ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment construire un tracker de classement de mots-clés DIY
Tutoriel

Comment construire un tracker de classement de mots-clés DIY

Construisez un tracker de classement de mots-clés à partir de données SERP brutes. Suivez les positions quotidiennement dans SQLite, détectez les changements et alertez en cas de mouvements de classement. Python à 0,005 $/mot-clé.

Obtenez une clé API gratuiteDocumentation API

Les trackers de classement commerciaux coûtent 30 à 300 $/mois et vérifient les mots-clés une fois par jour. Construire votre propre tracker avec une API SERP vous donne un contrôle total sur la fréquence des vérifications, les données stockées et la logique d'alerte. Chaque vérification de mot-clé coûte 0,005 $ via Scavio, donc suivre 100 mots-clés par jour revient à 0,50 $/jour soit 15 $/mois, moins que la plupart des forfaits de démarrage.

Prérequis

  • Python 3.8+
  • requests library
  • Une clé API Scavio provenant de scavio.dev
  • SQLite3 (inclus avec Python)

Parcours

Étape 1: Configurer la base de données de suivi de classement

Créer une base de données SQLite pour stocker les positions de classement quotidiennes.

Python
import os, requests, json, sqlite3
from datetime import datetime

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

db = sqlite3.connect('rank_tracker.db')
db.execute('''CREATE TABLE IF NOT EXISTS ranks (
    keyword TEXT, domain TEXT, position INTEGER,
    title TEXT, checked_at TEXT
)''')
db.execute('CREATE INDEX IF NOT EXISTS idx_kw ON ranks(keyword, checked_at)')
db.commit()

MY_DOMAIN = 'scavio.dev'
KEYWORDS = ['serp api', 'search api python', 'google search api',
            'web scraping api', 'ai agent search tool']
print(f'Tracking {len(KEYWORDS)} keywords for {MY_DOMAIN}')

Étape 2: Vérifier les classements des mots-clés

Récupérer les résultats SERP et trouver la position de votre domaine pour chaque mot-clé.

Python
def check_rank(keyword, domain):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': keyword, 'country_code': 'us'}).json()
    organic = data.get('organic_results', [])
    now = datetime.now().isoformat()
    for r in organic[:50]:
        link = r.get('link', '')
        if domain in link:
            pos = r.get('position', 0)
            title = r.get('title', '')[:100]
            db.execute('INSERT INTO ranks VALUES (?,?,?,?,?)',
                (keyword, domain, pos, title, now))
            db.commit()
            return pos
    db.execute('INSERT INTO ranks VALUES (?,?,?,?,?)',
        (keyword, domain, 0, 'Not found', now))
    db.commit()
    return 0

for kw in KEYWORDS:
    pos = check_rank(kw, MY_DOMAIN)
    status = f'#{pos}' if pos else 'Not in top 50'
    print(f'  {kw:30} | {status}')
print(f'Cost: ${len(KEYWORDS) * 0.005:.3f}')

Étape 3: Détecter les changements de classement entre les vérifications

Comparer les positions actuelles avec les vérifications précédentes pour trouver les mouvements.

Python
def detect_changes(keyword, domain):
    rows = db.execute(
        'SELECT position, checked_at FROM ranks WHERE keyword=? AND domain=? ORDER BY checked_at DESC LIMIT 2',
        (keyword, domain)).fetchall()
    if len(rows) < 2:
        return None
    current, prev = rows[0][0], rows[1][0]
    if current == prev:
        return None
    change = prev - current  # positive = improved
    return {'keyword': keyword, 'prev': prev, 'current': current, 'change': change}

def report_changes():
    changes = []
    for kw in KEYWORDS:
        c = detect_changes(kw, MY_DOMAIN)
        if c:
            changes.append(c)
    if changes:
        print(f'\n{len(changes)} rank changes:')
        for c in changes:
            arrow = 'UP' if c['change'] > 0 else 'DOWN'
            print(f'  {c["keyword"]:30} | #{c["prev"]} -> #{c["current"]} ({arrow} {abs(c["change"])})')
    else:
        print('No rank changes detected.')
    return changes

report_changes()

Étape 4: Planifier des vérifications quotidiennes via cron

Automatiser le tracker pour qu'il s'exécute quotidiennement et accumule l'historique.

Python
def daily_check():
    print(f'Daily rank check: {datetime.now().isoformat()}')
    results = []
    for kw in KEYWORDS:
        pos = check_rank(kw, MY_DOMAIN)
        results.append({'keyword': kw, 'position': pos})
    cost = len(KEYWORDS) * 0.005
    print(f'Checked {len(KEYWORDS)} keywords. Cost: ${cost:.3f}')
    changes = report_changes()
    # Summary
    ranked = [r for r in results if r['position'] > 0]
    avg = sum(r['position'] for r in ranked) / len(ranked) if ranked else 0
    print(f'\nSummary: {len(ranked)}/{len(results)} keywords ranking, avg position: {avg:.1f}')
    print(f'Monthly cost estimate: ${cost * 30:.2f}')

# Cron: 0 6 * * * cd /path/to/project && python rank_tracker.py
daily_check()

Exemple Python

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

def track(keyword, domain):
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=SH, json={'query': keyword, 'country_code': 'us'}).json()
    for r in data.get('organic_results', [])[:50]:
        if domain in r.get('link', ''):
            print(f'{keyword}: {domain} at #{r["position"]}. Cost: $0.005')
            return r['position']
    print(f'{keyword}: {domain} not in top 50')
    return 0

track('serp api', 'scavio.dev')

Exemple JavaScript

JavaScript
const SH = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function track(keyword, domain) {
  const data = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST', headers: SH,
    body: JSON.stringify({ query: keyword, country_code: 'us' })
  }).then(r => r.json());
  const match = (data.organic_results || []).find(r => (r.link || '').includes(domain));
  console.log(match ? `${keyword}: ${domain} at #${match.position}` : `${keyword}: not found`);
}
track('serp api', 'scavio.dev').catch(console.error);

Sortie attendue

JSON
Tracking 5 keywords for scavio.dev
  serp api                       | #4
  search api python              | #7
  google search api              | #11
  web scraping api               | #6
  ai agent search tool           | #3
Cost: $0.025

Summary: 5/5 keywords ranking, avg position: 6.2
Monthly cost estimate: $0.75

Tutoriels associés

  • Comment construire une archive historique des SERP
  • Comment construire un moniteur SERP concurrentiel
  • Comment construire un tableau de bord SEO personnalisé avec une API de recherche

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+. requests library. Une clé API Scavio provenant de scavio.dev. SQLite3 (inclus avec Python). 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 de suivi de classement SEO en 2026

Read more
Best Of

Meilleurs trackers de classement basés sur API pour le SEO en 2026

Read more
Solution

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

Read more
Solution

Exécutez des vérifications de classement SEO pendant la nuit en mode batch.

Read more
Use Case

Flux de travail API pour utilisateur SEO léger

Read more
Workflow

Flux de suivi quotidien du classement Surfer SEO + SERP API

Read more

Commencer

Construisez un tracker de classement de mots-clés à partir de données SERP brutes. Suivez les positions quotidiennement dans SQLite, détectez les changements et alertez en cas de mouvements de classement. Python à 0,005 $/mot-clé.

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é