Les résultats Google Shopping regroupent des fiches produits de milliers de détaillants et apparaissent en bonne place dans les résultats de recherche Google. Ils constituent une source précieuse de veille concurrentielle sur les prix, de découverte de marchands et d'analyse comparative des prix du marché. L'API Scavio renvoie les résultats Google Shopping dans le champ shopping_results des réponses SERP, incluant le titre du produit, le prix, le marchand, la note et l'URL de l'image. Ce tutoriel explique comment extraire et analyser les données Google Shopping pour toute catégorie de produit.
Prérequis
- Python 3.8 ou supérieur
- bibliothèque requests installée
- Une clé API Scavio
- Connaissance de l'analyse des données de prix
Parcours
Étape 1: Récupérer les résultats Google Shopping
Ajoutez le contexte "shopping" à votre requête ou interrogez directement un nom de produit. Les résultats Google Shopping apparaissent dans shopping_results de la réponse Scavio.
def get_shopping(product: str) -> list[dict]:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"query": product, "country_code": "us"}
)
response.raise_for_status()
data = response.json()
return data.get("shopping_results", [])Étape 2: Extraire les prix par marchand
Construisez un dictionnaire associant les noms des marchands à leurs prix affichés pour le produit.
def prices_by_merchant(items: list[dict]) -> dict:
result = {}
for item in items:
merchant = item.get("source", "Unknown")
price = item.get("price", "N/A")
result[merchant] = price
return resultÉtape 3: Trouver le prix le plus bas
Analysez les prix et identifiez le marchand proposant le prix le plus bas.
def lowest_price(items: list[dict]) -> dict | None:
def parse(item):
p = item.get("price", "")
return float(p.replace("$", "").replace(",", "")) if p else float("inf")
return min(items, key=parse, default=None)Étape 4: Générer un résumé de veille tarifaire
Affichez un résumé de la fourchette de prix chez les marchands et mettez en évidence la meilleure offre.
items = get_shopping("iPhone 16 Pro")
merchants = prices_by_merchant(items)
best = lowest_price(items)
print(f"Found {len(items)} listings")
print(f"Best price: {best.get('price')} from {best.get('source')}")
for m, p in list(merchants.items())[:5]:
print(f" {m}: {p}")Exemple 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"
def get_shopping(product: str) -> list[dict]:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": product, "country_code": "us"})
r.raise_for_status()
return r.json().get("shopping_results", [])
def lowest_price(items: list[dict]) -> dict | None:
def val(item):
p = item.get("price", "")
return float(p.replace("$", "").replace(",", "")) if p else float("inf")
return min(items, key=val, default=None)
if __name__ == "__main__":
items = get_shopping("Sony WH-1000XM5 headphones")
best = lowest_price(items)
print(f"{len(items)} shopping listings found")
if best:
print(f"Lowest: {best.get('price')} at {best.get('source')}")
for item in items[:5]:
print(f" {item.get('source', 'N/A')}: {item.get('price', 'N/A')}")Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function getShopping(product) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: product, country_code: "us" })
});
const data = await res.json();
return data.shopping_results || [];
}
async function main() {
const items = await getShopping("Sony WH-1000XM5 headphones");
const sorted = items.sort((a, b) => {
const pa = parseFloat((a.price || "").replace(/[$,]/g, "")) || Infinity;
const pb = parseFloat((b.price || "").replace(/[$,]/g, "")) || Infinity;
return pa - pb;
});
console.log(`${items.length} listings found`);
sorted.slice(0, 5).forEach(i => console.log(`${i.source}: ${i.price}`));
}
main().catch(console.error);Sortie attendue
{
"shopping_results": [
{
"title": "Sony WH-1000XM5 Wireless Headphones",
"price": "$279.00",
"source": "Best Buy",
"rating": "4.8",
"reviews": 9842,
"link": "https://bestbuy.com/...",
"thumbnail": "https://cdn.bestbuy.com/..."
}
]
}