Comment extraire les prix de Google Shopping : Offres, Vendeurs, Données géographiques

Google Shopping agrège les prix de milliers de marchands en un seul endroit. Voici comment transformer son volet shopping en un flux de prix structuré et géo-localisé en lequel vous pouvez avoir confiance.

Google Shopping est l'un des plus grands agrégateurs de prix sur le web : pour un produit donné, il récupère des offres en direct, des prix et des détails de vendeurs de milliers de marchands en une seule vue classée. Cela en fait une source d'intelligence tarifaire exceptionnellement efficace - une requête révèle ce que des dizaines de détaillants facturent actuellement. Ce guide couvre comment extraire proprement les prix de Google Shopping, pourquoi la géographie change tout, et quand arrêter de bricoler un navigateur et appeler plutôt une API structurée.

Ce que le volet Shopping vous offre réellement

L'onglet Shopping est le volet tbm=shop de Google Search. Chaque fiche produit comporte un titre, un prix, le nom du marchand/vendeur, une note étoilée et un nombre d'avis, ainsi qu'un identifiant de produit qui regroupe plusieurs offres du même article. Pour le travail sur les prix, cette association vendeur-prix est l'or : vous pouvez observer la répartition entre détaillants pour un SKU, voir qui sous-cote qui, et suivre l'évolution des prix dans le temps - la matière première d'un flux de travail de réajustement de prix ou de surveillance MAP.

La structure de l'URL est simple. Les résultats se paginent dix par page via un décalage start, et le pays de sortie est défini avec gl :

# Google Shopping search URL, page 1, US results
https://www.google.com/search?q=wireless+earbuds&tbm=shop&gl=us

# Page 2 (results 11-20): add a start offset
https://www.google.com/search?q=wireless+earbuds&tbm=shop&gl=us&start=10

Pourquoi la localisation décide de la réponse

Les résultats Shopping sont localisés. Les prix s'affichent dans la devise locale, le mix de marchands change selon le marché, la disponibilité diffère, et le seul paramètre gl ne suffit pas - Google prend également en compte la localisation de l'IP de la requête. Demandez des résultats allemands depuis une IP de datacenter aux États-Unis et vous obtiendrez une réponse incohérente, partiellement américaine. Pour lire le catalogue qu'un acheteur à Berlin voit réellement, la requête doit sortir d'une IP résidentielle allemande. Un pool de proxys résidentiels couvrant plus de 200 pays vous permet de fixer la sortie sur chaque marché que vous évaluez. C'est la même discipline derrière la surveillance des prix des concurrents à grande échelle.

Diagramme de comparaison du scraping de navigateur DIY versus une API SERP pour collecter des données Google Shopping
La méthode DIY fonctionne, mais vous héritez des murs de cookies, des sélecteurs cassants et des tentatives de réessai infinies.

La méthode DIY (et son coût)

Vous pouvez extraire les pages directement avec un navigateur sans tête. Google Shopping est rendu dynamiquement et bien défendu, donc les requêtes HTTP simples ne suffisent pas - vous avez besoin d'un véritable moteur de navigateur, d'un proxy sur chaque requête, et de code pour ignorer le mur de consentement aux cookies (le fameux button#L2AGLb "Tout accepter") avant que les produits ne se chargent. Ensuite, vous luttez contre le CSS : les noms de classes des conteneurs de Shopping sont obfusqués et tournent, donc les sélecteurs qui fonctionnent aujourd'hui se cassent dans quinze jours. Ajoutez une logique de réessai (trois tentatives avec un backoff aléatoire est un minimum raisonnable) et vous avez un extracteur fonctionnel - et un travail de maintenance permanent.

# Sketch of the DIY approach with Playwright + proxy
from playwright.sync_api import sync_playwright

PROXY = {"server": "http://gate.quantumproxies.io:8000",
         "username": "USER", "password": "PASS"}
URL = "https://www.google.com/search?q=wireless+earbuds&tbm=shop&gl=us"

with sync_playwright() as pw:
    browser = pw.chromium.launch(proxy=PROXY, headless=True)
    page = browser.new_context(locale="en-US").new_page()
    page.goto(URL, wait_until="networkidle", timeout=15000)
    # dismiss the consent wall before products render
    for sel in ("button#L2AGLb", "button:has-text('Accept all')"):
        btn = page.locator(sel).first
        if btn.is_visible():
            btn.click(); break
    # ...then wrestle the obfuscated product containers
    browser.close()

La méthode API : un appel, JSON structuré

L'alternative est de laisser une API SERP gérer le navigateur, les proxys et le parsing, et vous remettre le volet shopping sous forme de JSON. Vous passez la requête et un pays ; elle renvoie les offres avec titre, prix, vendeur, note et identifiant de produit déjà extraits. Pas de murs de cookies, pas de maintenance de sélecteurs, la géo en tant que paramètre. Pour un flux de prix qui doit continuer à fonctionner, cet échange est généralement le bon - notre analyse de comment fonctionne l'extraction SERP en 2026 explique pourquoi le chemin HTML brut devient de plus en plus difficile.

# One request to the SERP API's Google Shopping vertical
curl -G "https://api.quantumproxies.io/v1/serp" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-urlencode "engine=google_shopping" \
  --data-urlencode "q=wireless earbuds" \
  --data-urlencode "gl=us"
import requests

def shopping_offers(query, country="us"):
    r = requests.get(
        "https://api.quantumproxies.io/v1/serp",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
        params={"engine": "google_shopping", "q": query, "gl": country},
        timeout=30,
    )
    r.raise_for_status()
    rows = []
    for p in r.json().get("shopping_results", []):
        rows.append({
            "title":  p.get("title"),
            "price":  p.get("price"),
            "seller": p.get("source"),   # merchant name
            "rating": p.get("rating"),
            "pid":    p.get("product_id"),
        })
    return rows

for country in ("us", "gb", "de"):
    print(country, shopping_offers("wireless earbuds", country)[:3])
Diagramme de pipeline d'un ensemble de requêtes via une API SERP géo-localisée jusqu'à des offres analysées et un stockage d'historique des prix
Un flux de prix est une boucle : requête, appel SERP géo-localisé, analyse des offres, stockage et alerte sur les mouvements.

Ce que contient réellement une seule offre

Il est utile de comprendre la structure d'une fiche produit avant de construire un pipeline autour d'elle. Au-delà du prix principal, chaque offre comporte le nom du marchand, un état de l'article (neuf, d'occasion ou reconditionné), des indices sur l'expédition et les taxes, une note étoilée avec un nombre d'avis, et un identifiant de produit que Google utilise pour regrouper chaque vendeur du même article sous une seule entrée. Cet identifiant de produit est la clé de jointure pour tout ce qui suit : regroupez les offres par celui-ci et vous pouvez comparer à l'identique entre marchands, suivre le prix d'un SKU dans le temps, et détecter le moment où un nouveau vendeur entre dans une liste ou qu'un existant disparaît.

Deux champs méritent une attention particulière pour le travail sur les prix. Le nom du vendeur vous permet de construire une vue par marchand - qui sous-cote systématiquement, qui ancre haut, qui n'apparaît que lors des promotions - ce qui est bien plus exploitable qu'un nuage de prix anonyme. La note donne un poids de confiance approximatif, afin que vous ne traitiez pas un revendeur avec un seul avis comme équivalent à un détaillant établi. Capturez les deux avec le prix et la devise, et votre ensemble de données répondra à des questions qu'un simple flux de prix ne peut jamais.

Transformer les offres en intelligence

Les offres brutes ne sont pas de l'intelligence - la boucle l'est. Exécutez votre ensemble de requêtes selon un calendrier, stockez chaque capture avec un horodatage, et comparez avec l'historique pour faire ressortir ce qui compte : un concurrent qui tombe en dessous de votre prix, un nouveau vendeur entrant dans un SKU, une rupture de stock que vous pouvez exploiter. Regroupez les offres par identifiant de produit pour que les vendeurs du même article soient comparés à l'identique, et exécutez l'ensemble complet par marché cible. Si vous construisez des outils par-dessus cela, notre note sur le choix d'une API SERP couvre les questions de forme JSON et de coût par requête qui décident des économies d'échelle.

Obtenez des données Google Shopping structurées avec l'API SERP

Questions fréquemment posées

Comment puis-je extraire Google Shopping avec Python ?

Deux chemins. Pilotez un navigateur sans tête (Playwright) via un proxy résidentiel, ignorez le mur de consentement aux cookies, et analysez les conteneurs de produits - flexible mais nécessitant beaucoup de maintenance car le balisage est obfusqué et change. Ou appelez le moteur google_shopping d'une API SERP avec votre requête et un code pays et recevez des offres analysées sous forme de JSON en une seule requête. Le chemin API est bien moins de code à maintenir.

Les données de Google Shopping changent-elles selon le pays ?

Oui, considérablement. La devise, l'ensemble des marchands, les prix et la disponibilité varient tous selon le marché. Le paramètre gl demande un pays, mais Google prend également en compte l'IP de la requête, donc des résultats localisés précis nécessitent une IP de sortie dans le pays cible. Fixez la requête à une IP résidentielle par marché que vous évaluez.

L'extraction de Google Shopping est-elle légale ?

La collecte de prix et d'offres affichés publiquement est une pratique courante pour l'intelligence tarifaire, mais les conditions de la source et toute règle sur les données personnelles s'appliquent toujours, et ceci n'est pas un conseil juridique. Tenez-vous aux données de produits publiques, respectez les limites de taux, et si vous avez des doutes sur une utilisation spécifique, consultez un conseiller. Ne collectez ni ne stockez des informations personnelles dont vous n'avez pas besoin.

À quelle fréquence devrais-je extraire les prix de Shopping ?

Cela dépend de la rapidité de votre catégorie. Les produits électroniques à rotation rapide ou les biens à billets peuvent justifier des captures horaires ; les catégories stables conviennent à une fréquence quotidienne. Adaptez la cadence à la volatilité des prix, horodatez chaque capture pour pouvoir construire un historique, et répartissez les requêtes sur les IPs et le temps pour rester un visiteur poli et à faible risque.

Google Shopping condense les prix d'un marché entier en une seule surface interrogeable. Que vous le rendiez vous-même ou appeliez une API pour un JSON structuré, le modèle gagnant est le même : ciblez géographiquement chaque marché, capturez selon un calendrier, et comparez avec l'historique. C'est un moteur d'intelligence tarifaire, pas une extraction ponctuelle.

Obtenez un JSON Shopping structuré de l'API SERP