DataForSEO facture 0,0006 $ par requête en mode file d'attente contre 0,002 $ en direct. Scavio facture 0,005 $ avec résultats instantanés. Le choix dépend de votre cas d'utilisation : les agents ont besoin de résultats en direct, le suivi quotidien du classement peut utiliser les files d'attente, l'analyse par lots bénéficie le plus des files d'attente. Ce tutoriel fournit un cadre de décision avec des calculs de coûts exacts.
Prérequis
- Python 3.8+
- bibliothèque requests
- Une clé API Scavio depuis scavio.dev
- Compréhension de vos besoins en latence
Parcours
Étape 1: Associez les cas d'utilisation aux exigences de latence
Catégorisez les requêtes par urgence.
USE_CASES = {
'agent_search': {'mode': 'live', 'reason': 'Agents block on results'},
'daily_rank_tracking': {'mode': 'queue', 'reason': 'Processed overnight'},
'content_research': {'mode': 'live', 'reason': 'Writer waits for data'},
'competitor_monitoring': {'mode': 'queue', 'reason': 'Scheduled checks'},
}
for uc, info in USE_CASES.items():
print(f'{uc:25} -> {info["mode"]:5} ({info["reason"]})')Étape 2: Calculez les économies de coûts
Calculez les économies exactes pour votre volume.
def compare(queries, pct_queue=0.7):
q = int(queries * pct_queue)
l = queries - q
scavio = queries * 0.005
dfs_mixed = q * 0.0006 + l * 0.002
print(f'{queries:,} queries ({pct_queue*100:.0f}% queue):')
print(f' Scavio (all live): ${scavio:.2f}')
print(f' DFS (queue+live): ${dfs_mixed:.2f}')
print(f' Savings: ${scavio - dfs_mixed:.2f}')
print(f' Note: Scavio = 6 platforms, DFS = Google-focused')
compare(10000)
compare(100000, 0.9)Étape 3: Créez un client à double mode
Acheminez les requêtes vers le bon mode en fonction du contexte.
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
def search(query, mode='live'):
# Scavio is always live; for queue you'd use DataForSEO
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=H, json={'query': query, 'country_code': 'us'}).json()
return data
def auto_route(query, context='default'):
if context in ('agent', 'interactive'): return 'live'
if context in ('batch', 'scheduled'): return 'queue'
return 'live'
for q, ctx in [('trending apis', 'agent'), ('rank check kw1', 'batch')]:
mode = auto_route(q, ctx)
print(f' [{mode}] ({ctx}) "{q}"')Étape 4: Implémentez le suivi des coûts
Suivez les dépenses entre les modes pour la visibilité budgétaire.
class CostTracker:
def __init__(self):
self.live = 0
self.queue = 0
def log(self, mode):
if mode == 'live': self.live += 1
else: self.queue += 1
def report(self):
live_cost = self.live * 0.005
queue_cost = self.queue * 0.0006
print(f'Live: {self.live} (${live_cost:.3f}), Queue: {self.queue} (${queue_cost:.3f})')
print(f'Total: ${live_cost + queue_cost:.3f}')
tracker = CostTracker()
tracker.log('live'); tracker.log('queue'); tracker.log('queue')
tracker.report()Exemple Python
def compare(queries, pct_queue=0.7):
q = int(queries * pct_queue)
scavio = queries * 0.005
mixed = q * 0.0006 + (queries - q) * 0.002
print(f'{queries:,} queries: Scavio=${scavio:.2f}, DFS mixed=${mixed:.2f}, Save=${scavio-mixed:.2f}')
compare(10000)
compare(100000, 0.9)Exemple JavaScript
function compare(queries, pctQueue = 0.7) {
const q = Math.floor(queries * pctQueue);
const scavio = queries * 0.005;
const mixed = q * 0.0006 + (queries - q) * 0.002;
console.log(`${queries}: Scavio=$${scavio.toFixed(2)}, DFS=$${mixed.toFixed(2)}, Save=$${(scavio-mixed).toFixed(2)}`);
}
compare(10000); compare(100000, 0.9);Sortie attendue
agent_search -> live (Agents block on results)
daily_rank_tracking -> queue (Processed overnight)
10,000 queries (70% queue):
Scavio (all live): $50.00
DFS (queue+live): $7.20
Savings: $42.80
Note: Scavio = 6 platforms, DFS = Google-focused