Un utilisateur de r/ComplexWebScraping a demandé des API SERP qui renvoient des résultats sponsorisés. Les données Google Ads issues des SERP vous donnent le texte des annonces concurrentes, leur position et leurs extensions sans accès à l'API Google Ads. Ce tutoriel montre comment faire.
Prérequis
- Clé API Scavio
- Python 3.8+
Parcours
Étape 1: Récupérer la SERP avec les annonces incluses
La recherche Google standard de Scavio inclut les annonces par défaut.
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()Étape 2: Extraire les résultats sponsorisés
Analyser le champ ads_results ou sponsored_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)]Étape 3: Extraire les annonces shopping
Les résultats Google Shopping apparaissent séparément.
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', [])]Étape 4: Suivre les changements d'annonces dans le temps
Stockez des instantanés quotidiens pour surveiller les annonces concurrentes.
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')Exemple Python
# Monitor 50 keywords for competitor ads:
# 50 queries/day × $0.005 = $0.25/day = $7.50/mo
# Returns: ad copy, position, sitelinks, shopping adsExemple 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());Sortie attendue
Daily snapshots of competitor Google Ads: ad copy, position, sitelinks, shopping ads. JSONL storage for trend analysis.