Jak zeskrobać ceny Google Shopping: Oferty, Sprzedawcy, Dane Geograficzne

Google Shopping agreguje ceny od tysięcy sprzedawców w jednym miejscu. Oto jak przekształcić jego pion zakupowy w strukturalny, świadomy geograficznie kanał cenowy, któremu możesz zaufać.

Google Shopping to jeden z największych agregatorów cen w sieci: dla danego produktu pobiera aktualne oferty, ceny i szczegóły sprzedawców od tysięcy sprzedawców w jednym widoku rankingowym. To czyni go wyjątkowo efektywnym źródłem inteligencji cenowej - jedno zapytanie ujawnia, ile dziesiątki detalistów pobierają w danym momencie. Ten przewodnik omawia, jak czysto zeskrobać ceny Google Shopping, dlaczego geografia zmienia wszystko i kiedy przestać ręcznie obsługiwać przeglądarkę, a zamiast tego skorzystać ze strukturalnego API.

Co faktycznie daje pion zakupowy

Zakładka Zakupy to pion tbm=shop w wyszukiwarce Google. Każda karta produktu zawiera tytuł, cenę, nazwę sprzedawcy, ocenę w gwiazdkach i liczbę recenzji oraz identyfikator produktu, który grupuje wiele ofert tego samego przedmiotu. Dla pracy z cenami, to połączenie sprzedawcy i ceny jest złotem: możesz obserwować rozpiętość wśród detalistów dla jednego SKU, złapać, kto podcina kogo i śledzić ruch cenowy w czasie - surowy materiał do repricingu lub monitorowania MAP.

Struktura URL jest prosta. Wyniki są stronicowane po dziesięć na stronę za pomocą przesunięcia start, a kraj wyjścia jest ustawiony za pomocą 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

Dlaczego lokalizacja decyduje o odpowiedzi

Wyniki zakupów są lokalizowane. Ceny są wyświetlane w lokalnej walucie, mieszanka sprzedawców zmienia się w zależności od rynku, dostępność różni się, a sam parametr gl nie wystarcza - Google również uwzględnia lokalizację IP żądającego. Poproś o niemieckie wyniki z IP centrum danych w USA, a otrzymasz niespójną, częściowo amerykańską odpowiedź. Aby zobaczyć katalog, który faktycznie widzi kupujący w Berlinie, żądanie musi wychodzić z niemieckiego IP rezydencyjnego. Pula proxy rezydencyjnych obejmująca ponad 200 krajów pozwala przypiąć wyjście do każdego rynku, który cenisz. To ta sama dyscyplina, która stoi za monitorowaniem cen konkurencji na dużą skalę.

Diagram porównawczy DIY przeglądarkowego scrapingu versus SERP API do zbierania danych Google Shopping
Ścieżka DIY działa, ale dziedziczysz ściany ciasteczek, łamiące się selektory i wieczne próby ponowne.

Ścieżka DIY (i jej koszt)

Możesz zeskrobać strony bezpośrednio za pomocą przeglądarki bezgłowej. Google Shopping jest dynamicznie renderowany i dobrze chroniony, więc zwykłe żądania HTTP są niewystarczające - potrzebujesz prawdziwego silnika przeglądarki, proxy przy każdym żądaniu i kodu do odrzucenia ściany zgody na ciasteczka (sławny button#L2AGLb „Akceptuj wszystko”) zanim jakiekolwiek produkty się załadują. Następnie walczysz z CSS: nazwy klas kontenerów Shopping są zaciemnione i rotują, więc selektory, które działają dzisiaj, łamią się za dwa tygodnie. Dodaj logikę ponawiania (trzy próby z losowym opóźnieniem to rozsądne minimum) i masz działający skraper - oraz stałą pracę konserwacyjną.

# 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()

Ścieżka API: jedno wywołanie, strukturalny JSON

Alternatywą jest pozwolenie, by SERP API przejęło przeglądarkę, proxy i parsowanie, i przekazało ci pion zakupowy jako JSON. Przekazujesz zapytanie i kraj; zwraca oferty z tytułem, ceną, sprzedawcą, oceną i identyfikatorem produktu już wyodrębnionymi. Żadnych ścian ciasteczek, żadnej konserwacji selektorów, geografia jako parametr. Dla kanału cenowego, który musi działać, ten wybór jest zazwyczaj właściwy - nasza analiza jak działa skraping SERP w 2026 roku wyjaśnia, dlaczego ścieżka surowego HTML staje się coraz trudniejsza.

# 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])
Diagram przepływu od zestawu zapytań przez świadome geograficznie SERP API do przeanalizowanych ofert i magazynu historii cen
Kanał cenowy to pętla: zapytanie, świadome geograficznie wywołanie SERP, analiza ofert, magazynowanie i alerty o ruchu.

Co faktycznie zawiera pojedyncza oferta

Warto zrozumieć kształt jednej karty produktu, zanim zbudujesz wokół niej pipeline. Poza ceną nagłówkową, każda oferta zawiera nazwę sprzedawcy, stan przedmiotu (nowy, używany lub odnowiony), wskazówki dotyczące wysyłki i podatków, ocenę w gwiazdkach z liczbą recenzji oraz identyfikator produktu, który Google używa do grupowania każdego sprzedawcy tego samego przedmiotu pod jednym wpisem. Ten identyfikator produktu jest kluczem do wszystkiego poniżej: grupuj oferty według niego, a możesz porównywać jak za jak, śledzić cenę jednego SKU w czasie i wykrywać moment, gdy nowy sprzedawca wchodzi na listę lub istniejący znika.

Dwa pola zasługują na szczególną uwagę w pracy z cenami. Nazwa sprzedawcy pozwala zbudować widok per-sprzedawca - kto konsekwentnie podcina, kto kotwiczy wysoko, kto pojawia się tylko na promocjach - co jest znacznie bardziej użyteczne niż anonimowa chmura cen. Ocena daje przybliżoną wagę zaufania, więc nie traktujesz sprzedawcy z jedną recenzją jako równoważnego z ugruntowanym detalistą. Zarejestruj oba wraz z ceną i walutą, a twój zestaw danych odpowie na pytania, na które nigdy nie odpowie goły kanał cenowy.

Przekształcanie ofert w inteligencję

Surowe oferty to nie inteligencja - pętla nią jest. Uruchom swój zestaw zapytań według harmonogramu, zarejestruj każdą rejestrację z datą i porównaj z historią, aby ujawnić to, co ważne: konkurenta spadającego poniżej twojej ceny, nowego sprzedawcę wchodzącego na SKU, brak towaru, który możesz wykorzystać. Grupuj oferty według identyfikatora produktu, aby sprzedawcy tego samego przedmiotu byli porównywani jak za jak, i uruchamiaj cały zestaw na każdy docelowy rynek. Jeśli budujesz narzędzia na tym, nasza uwaga na temat wyboru SERP API obejmuje pytania dotyczące kształtu JSON i kosztu na zapytanie, które decydują o ekonomice jednostkowej przy dużej skali.

Pobierz dane Google Shopping za pomocą SERP API

Najczęściej zadawane pytania

Jak zeskrobać Google Shopping za pomocą Python?

Dwie ścieżki. Uruchom przeglądarkę bezgłową (Playwright) przez proxy rezydencyjne, odrzuć ścianę zgody na ciasteczka i przeanalizuj kontenery produktów - elastyczne, ale wymagające dużej konserwacji, ponieważ znacznik jest zaciemniony i zmienia się. Lub wywołaj silnik google_shopping SERP API z twoim zapytaniem i kodem kraju i otrzymaj przeanalizowane oferty jako JSON w jednym żądaniu. Ścieżka API to znacznie mniej kodu do utrzymania.

Czy dane Google Shopping zmieniają się w zależności od kraju?

Tak, znacznie. Waluta, zestaw sprzedawców, ceny i dostępność różnią się w zależności od rynku. Parametr gl żąda kraju, ale Google również uwzględnia IP żądającego, więc dokładne lokalizowane wyniki wymagają IP wyjściowego w docelowym kraju. Przypnij żądanie do IP rezydencyjnego na każdy rynek, który cenisz.

Czy zeskrobywanie Google Shopping jest legalne?

Zbieranie publicznie wyświetlanych cen i ofert jest powszechną praktyką dla inteligencji cenowej, ale nadal obowiązują warunki źródła i wszelkie zasady dotyczące danych osobowych, a to nie jest porada prawna. Trzymaj się publicznych danych produktowych, respektuj limity szybkości, a jeśli nie jesteś pewien konkretnego zastosowania, skonsultuj się z prawnikiem. Nie zbieraj ani nie przechowuj danych osobowych, których nie potrzebujesz.

Jak często powinienem zeskrobywać ceny zakupów?

To zależy od tego, jak szybko porusza się twoja kategoria. Szybko poruszająca się elektronika lub towary biletowane mogą wymagać godzinnych rejestracji; stabilne kategorie są w porządku codziennie. Dopasuj częstotliwość do zmienności cen, oznaczaj czasem każdą rejestrację, aby móc budować historię, i rozpraszaj żądania wśród IP i czasu, aby pozostać uprzejmym, niskiego ryzyka odwiedzającym.

Google Shopping kondensuje ceny całego rynku w jedną powierzchnię zapytaniową. Niezależnie od tego, czy renderujesz to sam, czy wywołujesz API dla strukturalnego JSON, wzór sukcesu jest ten sam: celuj geograficznie każdy rynek, rejestruj według harmonogramu i porównuj z historią. To jest silnik inteligencji cenowej, a nie jednorazowe zeskrobywanie.

Uzyskaj strukturalny JSON zakupowy z SERP API