Un usuario de r/ComplexWebScraping preguntó acerca de las API SERP que devuelven resultados patrocinados. Los datos de Google Ads de SERP le brindan el texto, la posición y las extensiones de los anuncios de la competencia sin acceso a la API de Google Ads. Este tutorial muestra cómo.
Requisitos previos
- Clave API de Scavio
- Python 3.8+
Guia paso a paso
Paso 1: Obtenga SERP con anuncios incluidos
La búsqueda estándar de Scavio en Google incluye anuncios de forma predeterminada.
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def get_serp_with_ads(keyword):
return requests.post('https://api.scavio.dev/api/v1/search',
headers=H,
json={'platform': 'google', 'query': keyword}).json()Paso 2: Extraer resultados patrocinados
Analice el campo ads_results o patrocinado_results.
def extract_ads(serp):
ads = serp.get('ads_results', []) or serp.get('sponsored_results', [])
return [{'title': ad.get('title'), 'link': ad.get('link'),
'description': ad.get('description'), 'position': i+1}
for i, ad in enumerate(ads)]Paso 3: Extraer anuncios de compras
Los resultados de Google Shopping aparecen por separado.
def extract_shopping(serp):
return [{'title': s.get('title'), 'price': s.get('price'),
'source': s.get('source'), 'link': s.get('link')}
for s in serp.get('shopping_results', [])]Paso 4: Seguimiento de los cambios en los anuncios a lo largo del tiempo
Almacene instantáneas diarias para monitorear los anuncios de la competencia.
import json, datetime
def save_snapshot(keyword, ads, shopping):
snapshot = {'date': str(datetime.date.today()), 'keyword': keyword,
'ads': ads, 'shopping': shopping}
with open(f'ad_snapshots/{keyword}.jsonl', 'a') as f:
f.write(json.dumps(snapshot) + '\n')Ejemplo en Python
# Monitor 50 keywords for competitor ads:
# 50 queries/day × $0.005 = $0.25/day = $7.50/mo
# Returns: ad copy, position, sitelinks, shopping adsEjemplo en JavaScript
const serp = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'google', query: keyword})
}).then(r => r.json());Salida esperada
Daily snapshots of competitor Google Ads: ad copy, position, sitelinks, shopping ads. JSONL storage for trend analysis.