ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Flujos de trabajo
  3. Investigacion semanal de competidores con datos publicos (sin suscripcion a SimilarWeb)
Flujo de trabajo

Investigacion semanal de competidores con datos publicos (sin suscripcion a SimilarWeb)

Investiga competidores cada semana con senales publicas de SERP, Reddit y YouTube usando Scavio, sin pagar SimilarWeb, que paso a solo cotizacion en 2026.

Comenzar gratisDocumentacion API

Resumen

Puedes rehacer una rutina semanal de investigacion de competidores con datos publicos y una sola clave de API de Scavio, en vez de pagar SimilarWeb, cuyo plan Web Intelligence Starter costaba unos $125/mes con facturacion anual ($199 mes a mes) antes de que el precio pasara a solo cotizacion en 2026. Este flujo extrae las posiciones de cada competidor en el SERP de Google, sus menciones y puntuaciones en Reddit, y su presencia en YouTube, y luego arma un informe que deja en blanco las celdas desconocidas en lugar de inventar numeros. Cubre senales publicas, no las estimaciones de trafico por panel de SimilarWeb. Si necesitas conteos de visitas mensuales modelados, SimilarWeb sigue haciendo eso y esto no.

Desencadenador

Weekly cron (e.g. Monday 6am)

Programación

Weekly

Pasos del flujo de trabajo

1

Extrae las posiciones SERP de cada competidor para tus palabras clave

Para cada dominio de competidor y cada palabra clave, haz POST a https://api.scavio.dev/api/v1/google con {"query": "...", "light_request": false} y la cabecera Authorization: Bearer. Las funciones completas del SERP devuelven organic, people_also_ask, knowledge_graph y related_searches, lo que cuesta 2 creditos por llamada (1 credito en modo ligero). Recorre el array organic buscando el dominio del competidor y anota su posicion. Esta es la senal que SimilarWeb nunca te dio de forma limpia: donde aparece de verdad un rival en la pagina para las consultas que te importan.

2

Extrae menciones y puntuaciones de Reddit para medir la traccion en la comunidad

Haz POST con el nombre de cada competidor a https://api.scavio.dev/api/v1/reddit/search para contar cuanto lo mencionan y como puntuan los hilos. Una busqueda cuesta 1 credito; traer un post completo con su arbol de comentarios cuesta 2. Los votos y el volumen de comentarios son una senal mas burda que el trafico por panel, pero te dicen si un competidor tiene boca a boca real o solo presupuesto de marketing. Un producto con tres hilos muertos es una amenaza distinta a uno con un lanzamiento de 400 votos.

3

Extrae la presencia en YouTube para medir cuota de voz

Haz POST a https://api.scavio.dev/api/v1/youtube/search con {"search": "..."} (el endpoint de YouTube usa search, no query) para cada competidor. Cuenta cuantos videos hay, quien los hizo y que antiguedad tienen. Mucha cobertura en YouTube suele indicar que un competidor invierte en demos y tutoriales de captacion. El silencio en YouTube es un hueco que quiza puedas llenar tu.

4

Arma el informe y deja huecos en blanco, no inventes numeros

Escribe una fila por competidor con su mejor posicion SERP, su numero de menciones en Reddit y su conteo de videos en YouTube. Cuando falte una senal, deja la celda vacia. No estimes, no interpoles, no la rellenes con un numero que parezca verosimil. La regla del hilo original se mantiene: nada de numeros generados por un modelo, porque la falsa certeza es peor que un hueco vacio. Una celda en blanco es honesta y te dice exactamente donde investigar a mano.

5

Compara con la semana pasada y alerta sobre cambios

Guarda el informe de cada semana como JSON. En la siguiente ejecucion, compara los numeros nuevos con los de la semana anterior: un competidor que salto de la pagina 2 a la posicion 3, un hilo de Reddit que de repente puntuo 300, una rafaga de videos nuevos. Envia el diff a Slack o por correo para leer solo lo que cambio, no toda la tabla. Las decisiones utiles estan en los cambios semana a semana.

Implementacion en Python

Python
import os
import json
import requests
from datetime import date

API_KEY = os.environ["SCAVIO_API_KEY"]
BASE = "https://api.scavio.dev/api/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

COMPETITORS = ["acme.com", "rivalcorp.com"]
KEYWORDS = ["project management software", "team task tracker"]


def google_rank(domain, keyword):
    r = requests.post(f"{BASE}/google", headers=HEADERS,
                      json={"query": keyword, "light_request": False})
    r.raise_for_status()
    organic = r.json().get("organic", [])
    for i, item in enumerate(organic, start=1):
        if domain in item.get("link", ""):
            return i
    return None  # not found in returned results; leave blank, do not guess


def reddit_mentions(name):
    r = requests.post(f"{BASE}/reddit/search", headers=HEADERS, json={"query": name})
    r.raise_for_status()
    posts = r.json().get("posts", [])
    return len(posts), sum(p.get("score", 0) for p in posts)


def youtube_count(name):
    r = requests.post(f"{BASE}/youtube/search", headers=HEADERS, json={"search": name})
    r.raise_for_status()
    return len(r.json().get("videos", []))


def build_report():
    rows = []
    for c in COMPETITORS:
        best_rank = None
        for kw in KEYWORDS:
            rank = google_rank(c, kw)
            if rank is not None and (best_rank is None or rank < best_rank):
                best_rank = rank
        mentions, score_total = reddit_mentions(c)
        videos = youtube_count(c)
        rows.append({
            "competitor": c,
            "best_serp_rank": best_rank,        # None means leave blank
            "reddit_mentions": mentions,
            "reddit_score_total": score_total,
            "youtube_videos": videos,
        })
    return rows


def diff(today_rows, last_path="last_week.json"):
    try:
        with open(last_path) as f:
            last = {r["competitor"]: r for r in json.load(f)}
    except FileNotFoundError:
        last = {}
    for row in today_rows:
        prev = last.get(row["competitor"])
        if prev and prev["best_serp_rank"] != row["best_serp_rank"]:
            print(f"ALERT {row['competitor']} rank {prev['best_serp_rank']} -> {row['best_serp_rank']}")
        if prev and row["reddit_score_total"] - prev["reddit_score_total"] >= 200:
            print(f"ALERT {row['competitor']} reddit score surged")


if __name__ == "__main__":
    rows = build_report()
    print(f"Competitor report {date.today().isoformat()}")
    for r in rows:
        rank = r["best_serp_rank"] if r["best_serp_rank"] is not None else "-"
        print(f"{r['competitor']:<16} rank={rank}  reddit={r['reddit_mentions']} (score {r['reddit_score_total']})  yt={r['youtube_videos']}")
    diff(rows)
    with open("last_week.json", "w") as f:
        json.dump(rows, f, indent=2)

Implementacion en JavaScript

JavaScript
import fs from "node:fs";

const API_KEY = process.env.SCAVIO_API_KEY;
const BASE = "https://api.scavio.dev/api/v1";
const HEADERS = {
  Authorization: `Bearer ${API_KEY}`,
  "Content-Type": "application/json",
};

const COMPETITORS = ["acme.com", "rivalcorp.com"];
const KEYWORDS = ["project management software", "team task tracker"];

async function post(path, body) {
  const res = await fetch(`${BASE}${path}`, {
    method: "POST",
    headers: HEADERS,
    body: JSON.stringify(body),
  });
  if (!res.ok) throw new Error(`${path} ${res.status}`);
  return res.json();
}

async function googleRank(domain, keyword) {
  const data = await post("/google", { query: keyword, light_request: false });
  const organic = data.organic || [];
  for (let i = 0; i < organic.length; i++) {
    if ((organic[i].link || "").includes(domain)) return i + 1;
  }
  return null; // not found; leave blank, do not guess
}

async function redditMentions(name) {
  const data = await post("/reddit/search", { query: name });
  const posts = data.posts || [];
  const score = posts.reduce((s, p) => s + (p.score || 0), 0);
  return { mentions: posts.length, score };
}

async function youtubeCount(name) {
  const data = await post("/youtube/search", { search: name });
  return (data.videos || []).length;
}

async function buildReport() {
  const rows = [];
  for (const c of COMPETITORS) {
    let bestRank = null;
    for (const kw of KEYWORDS) {
      const rank = await googleRank(c, kw);
      if (rank !== null && (bestRank === null || rank < bestRank)) bestRank = rank;
    }
    const { mentions, score } = await redditMentions(c);
    const videos = await youtubeCount(c);
    rows.push({
      competitor: c,
      best_serp_rank: bestRank, // null means leave blank
      reddit_mentions: mentions,
      reddit_score_total: score,
      youtube_videos: videos,
    });
  }
  return rows;
}

function diff(today, lastPath = "last_week.json") {
  let last = {};
  try {
    for (const r of JSON.parse(fs.readFileSync(lastPath, "utf8"))) last[r.competitor] = r;
  } catch {}
  for (const row of today) {
    const prev = last[row.competitor];
    if (prev && prev.best_serp_rank !== row.best_serp_rank) {
      console.log(`ALERT ${row.competitor} rank ${prev.best_serp_rank} -> ${row.best_serp_rank}`);
    }
    if (prev && row.reddit_score_total - prev.reddit_score_total >= 200) {
      console.log(`ALERT ${row.competitor} reddit score surged`);
    }
  }
}

const rows = await buildReport();
console.log(`Competitor report ${new Date().toISOString().slice(0, 10)}`);
for (const r of rows) {
  const rank = r.best_serp_rank ?? "-";
  console.log(`${r.competitor.padEnd(16)} rank=${rank}  reddit=${r.reddit_mentions} (score ${r.reddit_score_total})  yt=${r.youtube_videos}`);
}
diff(rows);
fs.writeFileSync("last_week.json", JSON.stringify(rows, null, 2));

Plataformas utilizadas

Preguntas frecuentes

Puedes rehacer una rutina semanal de investigacion de competidores con datos publicos y una sola clave de API de Scavio, en vez de pagar SimilarWeb, cuyo plan Web Intelligence Starter costaba unos $125/mes con facturacion anual ($199 mes a mes) antes de que el precio pasara a solo cotizacion en 2026. Este flujo extrae las posiciones de cada competidor en el SERP de Google, sus menciones y puntuaciones en Reddit, y su presencia en YouTube, y luego arma un informe que deja en blanco las celdas desconocidas en lugar de inventar numeros. Cubre senales publicas, no las estimaciones de trafico por panel de SimilarWeb. Si necesitas conteos de visitas mensuales modelados, SimilarWeb sigue haciendo eso y esto no.

Este flujo de trabajo usa un weekly cron (e.g. monday 6am). Weekly.

Este flujo de trabajo usa las siguientes plataformas de Scavio: Google, Reddit, YouTube. Cada plataforma se llama a traves del mismo endpoint de API unificado.

Si. El plan gratuito de Scavio incluye 50 creditos al registrarte sin tarjeta de credito. Es suficiente para probar y validar este flujo de trabajo antes de escalarlo.

Investigacion semanal de competidores con datos publicos (sin suscripcion a SimilarWeb)

Investiga competidores cada semana con senales publicas de SERP, Reddit y YouTube usando Scavio, sin pagar SimilarWeb, que paso a solo cotizacion en 2026.

Obtener tu clave APILeer 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