ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo crear un panel de SEO personalizado con una API de búsqueda
Tutorial

Cómo crear un panel de SEO personalizado con una API de búsqueda

Cree un panel de seguimiento de clasificación que reemplace las herramientas empresariales de $500 al mes. Backend de Python con comprobaciones SERP diarias e historial de SQLite por menos de $30 al mes.

Obtener clave API gratisDocumentacion API

Las herramientas de SEO empresarial cobran entre 200 y 500 dólares al mes por paneles que no puedes personalizar. Una API SERP que alimenta su propio panel le brinda exactamente las métricas que necesita a una fracción del costo. Este tutorial crea un backend de seguimiento de clasificación de Python que verifica las posiciones de las palabras clave diariamente, almacena el historial en SQLite y exporta CSV para cualquier interfaz. El seguimiento diario de 200 palabras clave cuesta alrededor de $ 1 por día en Scavio.

Requisitos previos

  • Python 3.8+ instalado
  • solicitudes y sqlite3 (integrado)
  • Una clave API de Scavio de scavio.dev
  • Palabras clave y su dominio de destino

Guia paso a paso

Paso 1: Configurar la base de datos y la configuración

Cree una base de datos SQLite para instantáneas de clasificación diaria. Defina su dominio objetivo y su lista de palabras clave.

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

API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
DOMAIN = 'mysite.com'
KEYWORDS = ['serp api python', 'web scraping api', 'tiktok data api', 'seo rank tracking api']

def init_db(path='seo_dashboard.db'):
    conn = sqlite3.connect(path)
    conn.execute('''CREATE TABLE IF NOT EXISTS rankings (
        id INTEGER PRIMARY KEY, date TEXT, keyword TEXT,
        position INTEGER, url TEXT, title TEXT)''')
    conn.commit()
    return conn

db = init_db()

Paso 2: Obtener clasificaciones para cada palabra clave

Consulta en Google cada palabra clave y encuentra la posición de tu dominio en los resultados orgánicos.

Python
def check_keyword(keyword):
    resp = requests.post('https://api.scavio.dev/api/v1/search',
        headers=H, json={'query': keyword, 'country_code': 'us'})
    for r in resp.json().get('organic_results', []):
        if DOMAIN in r.get('link', ''):
            return {'position': r['position'], 'url': r['link'], 'title': r.get('title', '')}
    return {'position': None, 'url': '', 'title': ''}

def run_daily_check():
    today = date.today().isoformat()
    for kw in KEYWORDS:
        r = check_keyword(kw)
        db.execute('INSERT INTO rankings (date,keyword,position,url,title) VALUES (?,?,?,?,?)',
            (today, kw, r['position'], r['url'], r['title']))
        status = f"#{r['position']}" if r['position'] else 'NOT FOUND'
        print(f'  {kw}: {status}')
    db.commit()
    print(f'Cost: ${len(KEYWORDS) * 0.005:.3f}')

run_daily_check()

Paso 3: Consultar el historial y detectar cambios de clasificación

Extraiga el historial de clasificación de SQLite para identificar tendencias, caídas y mejoras.

Python
def get_movers(days=7):
    cursor = db.execute('''
        WITH recent AS (
            SELECT keyword, position, date,
                ROW_NUMBER() OVER (PARTITION BY keyword ORDER BY date DESC) as rn
            FROM rankings WHERE position IS NOT NULL
        )
        SELECT a.keyword, a.position as current_pos, b.position as prev_pos,
            b.position - a.position as change
        FROM recent a JOIN recent b ON a.keyword = b.keyword
        WHERE a.rn = 1 AND b.rn = ? AND a.position != b.position
        ORDER BY change DESC
    ''', (min(days, 30),))
    for kw, curr, prev, change in cursor.fetchall():
        d = 'UP' if change > 0 else 'DOWN'
        print(f'  [{d}] {kw}: #{prev} -> #{curr} ({change:+d})')

def export_csv(output='dashboard.csv'):
    import csv
    rows = db.execute('SELECT date, keyword, position, url FROM rankings ORDER BY date DESC, keyword').fetchall()
    with open(output, 'w', newline='') as f:
        w = csv.writer(f)
        w.writerow(['date', 'keyword', 'position', 'url'])
        w.writerows(rows)
    print(f'Exported {len(rows)} rows to {output}')

get_movers(7)
export_csv()

Paso 4: Programar controles diarios

Agregue un trabajo cron para ejecutar el verificador diariamente con prevención de duplicados.

Python
def already_checked_today():
    today = date.today().isoformat()
    return db.execute('SELECT COUNT(*) FROM rankings WHERE date = ?', (today,)).fetchone()[0] > 0

if __name__ == '__main__':
    db = init_db()
    if already_checked_today():
        print('Already checked today.')
    else:
        print(f'{date.today()}: Running daily check...')
        run_daily_check()
        get_movers(7)

# crontab -e
# 0 6 * * * cd /path/to && python seo_dashboard.py >> dashboard.log 2>&1

Ejemplo en Python

Python
import os, sqlite3, requests
from datetime import date

API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
DOMAIN = 'mysite.com'
KEYWORDS = ['serp api python', 'web scraping api']

db = sqlite3.connect('seo.db')
db.execute('CREATE TABLE IF NOT EXISTS ranks (date TEXT, keyword TEXT, position INT)')

for kw in KEYWORDS:
    data = requests.post('https://api.scavio.dev/api/v1/search',
        headers=H, json={'query': kw, 'country_code': 'us'}).json()
    pos = next((r['position'] for r in data.get('organic_results', []) if DOMAIN in r.get('link', '')), None)
    db.execute('INSERT INTO ranks VALUES (?,?,?)', (date.today().isoformat(), kw, pos))
    print(f'{kw}: #{pos}' if pos else f'{kw}: not found')
db.commit()

Ejemplo en JavaScript

JavaScript
const Database = require('better-sqlite3');
const API_KEY = process.env.SCAVIO_API_KEY;
const H = { 'x-api-key': API_KEY, 'Content-Type': 'application/json' };
const DOMAIN = 'mysite.com';
const KEYWORDS = ['serp api python', 'web scraping api'];

const db = new Database('seo.db');
db.exec('CREATE TABLE IF NOT EXISTS ranks (date TEXT, keyword TEXT, position INT)');

async function run() {
  const today = new Date().toISOString().slice(0, 10);
  const insert = db.prepare('INSERT INTO ranks VALUES (?, ?, ?)');
  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 match = (data.organic_results || []).find(r => r.link.includes(DOMAIN));
    insert.run(today, kw, match ? match.position : null);
    console.log(match ? `${kw}: #${match.position}` : `${kw}: not found`);
  }
}
run().catch(console.error);

Salida esperada

JSON
2026-05-18: Running daily check...
  serp api python: #4
  web scraping api: #7
  tiktok data api: #2
  seo rank tracking api: #11
Cost: $0.020

  [UP] tiktok data api: #5 -> #2 (+3)
  [DOWN] seo rank tracking api: #8 -> #11 (-3)
Exported 28 rows to dashboard.csv

Tutoriales relacionados

  • Cómo realizar un seguimiento diario de las clasificaciones SEO con la API Scavio
  • Cómo obtener resultados de búsqueda de Google en Python
  • Cómo construir un monitor SERP competitivo

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Python 3.8+ instalado. solicitudes y sqlite3 (integrado). Una clave API de Scavio de scavio.dev. Palabras clave y su dominio de destino. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

La mejor API para informes SEO de agencias en 2026

Read more
Best Of

Las mejores alternativas de API a las herramientas SEO de AppSumo (2026)

Read more
Solution

Cree una capa API de SEO de costo predecible

Read more
Glossary

Panorama de proveedores de API de búsqueda (2026)

Read more
Glossary

Informes API de SEO para agencias

Read more
Comparison

Google Places API vs SERP Local Pack API

Read more

Empieza a construir

Cree un panel de seguimiento de clasificación que reemplace las herramientas empresariales de $500 al mes. Backend de Python con comprobaciones SERP diarias e historial de SQLite por menos de $30 al mes.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad