Los fundadores de SaaS en etapa inicial se enfrentan a una decisión crítica: invertir en SEO para obtener tráfico orgánico a largo plazo o gastar en Google Ads para obtener visibilidad inmediata. Los datos SERP hacen que esta decisión se base en datos en lugar de conjeturas. Al analizar la densidad de anuncios, la fuerza de la competencia orgánica, la presencia de la descripción general de IA y la disponibilidad de fragmentos destacados para sus palabras clave objetivo, puede determinar qué canal ofrece un mejor retorno de la inversión. Este tutorial muestra cómo utilizar los datos de la API de búsqueda para comparar el potencial de SEO con el de los anuncios para un conjunto de palabras clave y generar una recomendación de canal.
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Una lista de palabras clave objetivo para su producto SaaS
Guia paso a paso
Paso 1: Defina sus palabras clave objetivo
Configure las palabras clave que desea analizar para determinar el potencial de SEO frente a los anuncios.
import os, requests, json
API_KEY = os.environ["SCAVIO_API_KEY"]
KEYWORDS = [
"project management software",
"team collaboration tool",
"task management app for startups",
"best project tracker 2026",
]Paso 2: Analizar la composición de SERP
Para cada palabra clave, verifique la presencia de anuncios, los resultados orgánicos, las descripciones generales de IA y las funciones SERP.
def analyze_serp(keyword):
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": keyword})
data = resp.json()
organic = data.get("organic_results", [])
ads = data.get("ads", [])
return {
"keyword": keyword,
"organic_count": len(organic),
"ad_count": len(ads),
"has_ai_overview": bool(data.get("ai_overview")),
"paa_count": len(data.get("people_also_ask", [])),
"has_featured_snippet": any(r.get("featured_snippet") for r in organic[:3]),
}Paso 3: Puntuación de SEO frente al potencial publicitario
Calcule una puntuación para cada canal según la composición de SERP.
def score_channels(analysis):
seo_score = 0
seo_score += (10 - min(analysis["ad_count"], 10)) * 5
seo_score += analysis["paa_count"] * 5
seo_score += 20 if analysis["has_featured_snippet"] else 0
seo_score -= 15 if analysis["has_ai_overview"] else 0
ads_score = 0
ads_score += analysis["ad_count"] * 10
ads_score += 20 if analysis["has_ai_overview"] else 0
return {
**analysis,
"seo_score": max(seo_score, 0),
"ads_score": max(ads_score, 0),
"recommendation": "SEO" if seo_score > ads_score else "Ads",
}Paso 4: Generar el informe comparativo
Ejecute el análisis de todas las palabras clave y produzca una recomendación resumida.
def compare_all(keywords):
results = [score_channels(analyze_serp(kw)) for kw in keywords]
seo_wins = sum(1 for r in results if r["recommendation"] == "SEO")
ads_wins = len(results) - seo_wins
return {
"total_keywords": len(results),
"seo_recommended": seo_wins,
"ads_recommended": ads_wins,
"overall": "SEO" if seo_wins > ads_wins else "Ads",
"details": results,
}
report = compare_all(KEYWORDS)
print(f"Overall: {report['overall']} ({report['seo_recommended']} SEO vs {report['ads_recommended']} Ads)")Ejemplo en Python
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
def analyze(keyword):
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": keyword})
d = resp.json()
ads = len(d.get("ads", []))
paa = len(d.get("people_also_ask", []))
return {"keyword": keyword, "ads": ads, "paa": paa,
"pick": "Ads" if ads > 3 else "SEO"}
for kw in ["project management software", "task tracker app"]:
print(analyze(kw))Ejemplo en JavaScript
const H = {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"};
async function analyze(keyword) {
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST", headers: H,
body: JSON.stringify({platform: "google", query: keyword})
});
const d = await r.json();
const ads = (d.ads||[]).length, paa = (d.people_also_ask||[]).length;
return {keyword, ads, paa, pick: ads > 3 ? "Ads" : "SEO"};
}
analyze("project management software").then(console.log);Salida esperada
A keyword-level comparison report showing SEO and Ads scores for each keyword, with an overall channel recommendation based on SERP composition data.