DataForSEO cobra $0,0006/consulta en modo cola versus $0,002 en vivo. Scavio cobra $0.005 con resultados instantáneos. La elección depende de su caso de uso: los agentes necesitan resultados en vivo, el seguimiento de clasificación diario puede usar colas, el análisis por lotes se beneficia más de las colas. Este tutorial proporciona un marco de decisión con cálculos de costos exactos.
Requisitos previos
- Python 3.8+
- solicita biblioteca
- Una clave API de Scavio de scavio.dev
- Comprensión de sus necesidades de latencia
Guia paso a paso
Paso 1: Asignar casos de uso a requisitos de latencia
Clasifique las consultas por urgencia.
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"]})')Paso 2: Calcular el ahorro de costes
Calcule los ahorros exactos para su volumen.
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)Paso 3: Construya un cliente de modo dual
Enrute las consultas al modo correcto según el contexto.
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}"')Paso 4: Implementar seguimiento de costos
Realice un seguimiento del gasto en todos los modos para obtener visibilidad del presupuesto.
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()Ejemplo en 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)Ejemplo en 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);Salida esperada
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