La visibilidad de las aplicaciones móviles se extiende más allá de la búsqueda interna de App Store y Google Play. Google muestra los listados de aplicaciones de Google Play directamente en los resultados de búsqueda web, lo que hace que las clasificaciones SERP de Google sean una señal importante para la visibilidad de las aplicaciones. El seguimiento de dónde aparece su aplicación para las palabras clave objetivo en la búsqueda de Google (incluidos los resultados enriquecidos específicos de la aplicación) le ayuda a medir el impacto de los esfuerzos de ASO y monitorear las aplicaciones de la competencia. Este tutorial crea un rastreador de clasificación de aplicaciones utilizando la API SERP de Google de Scavio.
Requisitos previos
- Python 3.8 o superior
- solicita biblioteca instalada
- Una clave API de Scavio
- La URL de Google Play de tu aplicación o el nombre del paquete
Guia paso a paso
Paso 1: Definir objetivos de seguimiento de aplicaciones
Configure los nombres de los paquetes de aplicaciones y las palabras clave para realizar un seguimiento. Las URL de Google Play contienen el nombre del paquete en el parámetro id.
APPS = {
"My Fitness App": "com.example.fitnessapp",
"Competitor App": "com.competitor.fitnessapp",
}
KEYWORDS = ["workout tracker app", "fitness planner android", "calorie counter app"]Paso 2: Buscar y encontrar posiciones en aplicaciones
Busque cada palabra clave y explore los resultados orgánicos en busca de URL de Google Play que contengan el nombre del paquete de cada aplicación.
def get_app_rank(keyword: str, package: str) -> int | None:
data = search_google(keyword)
for r in data.get("organic_results", []):
link = r.get("link", "")
if "play.google.com" in link and package in link:
return r["position"]
return NonePaso 3: Seguimiento de múltiples aplicaciones a través de palabras clave
Cree una matriz de clasificación que muestre la posición de cada aplicación para cada palabra clave.
def track_apps() -> dict:
matrix = {}
for kw in KEYWORDS:
matrix[kw] = {}
for app_name, package in APPS.items():
rank = get_app_rank(kw, package)
matrix[kw][app_name] = rank
return matrixPaso 4: Imprimir la matriz de clasificación
Muestre los resultados como una tabla con palabras clave como filas y aplicaciones como columnas.
matrix = track_apps()
for kw, ranks in matrix.items():
print(f"\n{kw}:")
for app, rank in ranks.items():
print(f" {app}: {'#' + str(rank) if rank else 'not found'}")Ejemplo en Python
import os
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
APPS = {"MyApp": "com.example.myapp", "CompApp": "com.competitor.app"}
KEYWORDS = ["workout tracker app", "fitness planner android"]
def search_google(q: str) -> dict:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": q, "country_code": "us"})
r.raise_for_status()
return r.json()
def get_rank(kw: str, pkg: str) -> int | None:
data = search_google(kw)
for r in data.get("organic_results", []):
if "play.google.com" in r.get("link", "") and pkg in r.get("link", ""):
return r["position"]
return None
if __name__ == "__main__":
for kw in KEYWORDS:
print(f"\n{kw}:")
for name, pkg in APPS.items():
rank = get_rank(kw, pkg)
print(f" {name}: {'#' + str(rank) if rank else 'not found'}")Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
const APPS = { MyApp: "com.example.myapp", CompApp: "com.competitor.app" };
const KEYWORDS = ["workout tracker app", "fitness planner android"];
async function searchGoogle(q) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: q, country_code: "us" })
});
return res.json();
}
async function getRank(kw, pkg) {
const data = await searchGoogle(kw);
const match = (data.organic_results || []).find(r => r.link.includes("play.google.com") && r.link.includes(pkg));
return match ? match.position : null;
}
async function main() {
for (const kw of KEYWORDS) {
console.log(`\n${kw}:`);
for (const [name, pkg] of Object.entries(APPS)) {
const rank = await getRank(kw, pkg);
console.log(` ${name}: ${rank ? "#" + rank : "not found"}`);
}
}
}
main().catch(console.error);Salida esperada
workout tracker app:
MyApp: #4
CompApp: #2
fitness planner android:
MyApp: not found
CompApp: #6