Как скрейпить цены Google Shopping в 2026: API против HTML
Если вам нужно собрать конкурентные цены из Google Shopping, первый вопрос — какой источник данных использовать. У Google есть Content API for Shopping, но он отдаёт только товары собственного мерчанта-аккаунта. Чужие цены, продавцов и рейтинги через официальный API не получить — это означает, что конкурентная разведка сводится к парсингу SERP-страницы tbm=shop или карточек товаров /shopping/product/.
В этом руководстве мы покажем, как скрейпить цены Google Shopping в 2026 году: паттерны URL, CSS-селекторы для парсинга, стратегию ротации IP через residential-прокси с геолокацией на уровне города, а также методы обхода антибот-защиты Google. Целевая аудитория — аналитики ценообразования и инженеры конкурентной разведки, которым нужны надёжные пайплайны данных.
Почему проблема существует: антибот-стек Google
Google Shopping работает поверх основного поискового движка Google, который имеет один из самых агрессивных антибот-стеков в индустрии. При парсинге вы столкнётесь с тремя уровнями защиты:
- reCAPTCHA и Enterprise-варианты — при подозрительном трафике Google показывает интерактивную капчу или невидимую reCAPTCHA v3, которая присваивает риск-скор и может заблокировать запрос без видимой причины.
- Редирект
sorry/index— вместо капчи Google может молча перенаправить наhttps://www.google.com/sorry/index?continue=.... Это «мягкий блок»: страница не отдаёт результаты, но и не показывает CAPTCHA. Часто срабатывает после 50–200 запросов с одного IP за короткий период. - Per-IP rate limits — Google ограничивает частоту запросов с одного IP-адреса. Порог зависит от типа IP: datacenter-адреса блокируются быстрее (часто после 20–50 запросов), residential-адреса выдерживают дольше, но тоже имеют лимиты.
Согласно RFC 7231, сервер может возвращать статус 429 (Too Many Requests) при превышении лимитов, но Google часто использует 200 OK с редиректом на sorry-страницу или 302 на CAPTCHA — это усложняет детектирование блоков.
URL-паттерны и селекторы для Google Shopping
Поисковая SERP Google Shopping
Базовый URL для поиска по товарам:
https://www.google.com/search?tbm=shop&q=Nike+Air+Max+90&gl=US&hl=en
Ключевые параметры:
tbm=shop— переключает на вкладку Shopping.q=— поисковый запрос (URL-encoded).gl=— геолокация страны (US, DE, FR, GB и т.д.).hl=— язык интерфейса (en, de, fr, ru).num=— количество результатов на странице (Google обычно отдаёт 20–40 для Shopping).
CSS-селекторы для парсинга SERP
Структура HTML Google Shopping регулярно меняется, но на момент 2026 года актуальны следующие селекторы:
| Данные | CSS-селектор | Описание |
|---|---|---|
| Контейнер результатов | .sh-dgr__content | Основной блок с результатами Shopping |
| Карточка товара | .sh-pr__product-results | Отдельная карточка товара в выдаче |
| Цена | .a8Pemb или span[data-base-shipping-id] | Текст цены, например «$129.99» |
| Название товара | h3.t16o7d или .Lq0Khd | Заголовок товара |
| Продавец | .dMEzLd или span[data-shipping] | Имя продавца/магазина |
| Рейтинг | span[aria-label$="stars"] | Звёздный рейтинг, например «4.5 stars» |
Карточка товара /shopping/product/
При клике на товар открывается страница детализации:
https://www.google.com/shopping/product/1:en-US:1234567890:0?gl=US&hl=en
Здесь доступны офферы от разных продавцов. Селекторы для панели офферов:
.sh-os__offer-seller— имя продавца в списке офферов..sh-os__offer-price— цена конкретного оффера..sh-os__offer-link— ссылка на магазин продавца..sh-pro__geo-region— регион доставки для оффера.
Важно: Google регулярно обновляет DOM-структуру. Рекомендуется использовать несколько fallback-селекторов и логировать неразобранные блоки для последующего анализа.
Локализованные цены: почему нужны residential-прокси с городом
Цены в Google Shopping зависят от геолокации пользователя. Американский покупатель видит продавцов из США с ценами в USD, немецкий — продавцов из ЕС с ценами в EUR. Это означает, что для корректного сбора конкурентных цен по рынкам вам нужны residential-прокси с геотаргетингом на уровне страны и города.
Параметры gl и hl в URL задают страну и язык, но Google также сверяет IP-адрес запроса с указанной геолокацией. Если IP из Германии, а gl=US, Google может показать гибридные результаты или вернуть редирект. Residential-прокси с точным соответствием IP и параметра gl дают наиболее чистые данные.
ProxyHat поддерживает геотаргетинг на уровне страны и города через флаги в username:
user-country-US— IP из США (случайный город).user-country-DE-city-berlin— IP из Берлина, Германия.user-country-GB-city-london— IP из Лондона, Великобритания.
Для сравнения, datacenter-прокси часто блокируются Google Shopping уже после 20–50 запросов, тогда как residential-адреса выдерживают 200–500 запросов с одного IP до мягкого блока, согласно отраслевым наблюдениям.
Практическая реализация: Python requests через ProxyHat
Ниже — рабочий пример парсинга Google Shopping через ProxyHat residential-прокси. Скрипт отправляет запрос на SERP, парсит первый блок результата и выводит название, цену, продавца и рейтинг.
import requests
from bs4 import BeautifulSoup
import time
import random
# ProxyHat residential proxy with US geo-targeting
proxy_url = "http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080"
proxies = {
"http": proxy_url,
"https": proxy_url,
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
}
query = "Nike Air Max 90"
url = f"https://www.google.com/search?tbm=shop&q={requests.utils.quote(query)}&gl=US&hl=en"
response = requests.get(url, headers=headers, proxies=proxies, timeout=30)
# Detect soft-block: check for sorry redirect
if "sorry/index" in response.url:
print("SOFT BLOCK detected — IP flagged. Rotate session.")
exit(1)
soup = BeautifulSoup(response.text, "html.parser")
# Parse first product result block
product_container = soup.select_one(".sh-dgr__content .sh-pr__product-results")
if product_container:
title = product_container.select_one("h3.t16o7d")
price = product_container.select_one(".a8Pemb")
seller = product_container.select_one(".dMEzLd")
rating = product_container.select_one('span[aria-label$="stars"]')
print(f"Title: {title.text.strip() if title else 'N/A'}")
print(f"Price: {price.text.strip() if price else 'N/A'}")
print(f"Seller: {seller.text.strip() if seller else 'N/A'}")
print(f"Rating: {rating['aria-label'] if rating else 'N/A'}")
else:
print("No product results found — selectors may have changed.")
print(f"Response length: {len(response.text)} chars")
# Save HTML for debugging
with open("debug_shopping.html", "w", encoding="utf-8") as f:
f.write(response.text)
Пример вывода (сокращённо):
Title: Nike Air Max 90 Men's Shoes
Price: $129.97
Seller: Foot Locker
Rating: 4.6 stars
Версия для SOCKS5
Если вам нужен SOCKS5 (например, для обхода корпоративных прокси-фильтров), используйте порт 1080:
proxy_url = "socks5://user-country-DE-city-berlin:YOUR_PASSWORD@gate.proxyhat.com:1080"
proxies = {
"http": proxy_url,
"https": proxy_url,
}
Пагинация, батчинг и детектирование блоков
Пагинация Google Shopping
Google Shopping не использует классическую пагинацию с номерами страниц. Вместо этого применяется бесконечная прокрутка через AJAX-запросы. Для программного доступа можно использовать параметр start:
https://www.google.com/search?tbm=shop&q=Nike+Air+Max+90&gl=US&hl=en&start=20
Шаг start обычно равен 20 или 40. Для глубокого сбора данных рекомендуется не уходить дальше 3–5 страниц (60–200 результатов), так как релевантность падает, а риск блокировки растёт.
Стратегия батчинга запросов
- Размер батча: 10–20 запросов на одну сессию IP перед ротацией.
- Задержка: случайные 2–5 секунд между запросами (не фиксированные).
- Ротация сессий: используйте флаг
user-session-{id}для sticky-сессий, меняйте ID каждые 10–20 запросов. - Конкурентность: не более 3–5 параллельных потоков с одного IP.
Детектирование мягких блоков
Ключевой навык — обнаружить мягкий блок до того, как получите hard CAPTCHA. Признаки мягкого блока:
- Редирект на
/sorry/index— проверяйтеresponse.url. - Пустая SERP при наличии результатов (длина HTML < 10 000 символов).
- Статус 429 или 503.
- CAPTCHA-страница вместо результатов (ищите
g-recaptchaв HTML). - Резкое падение количества распарсенных результатов (с 20 до 0–2).
def check_soft_block(response, min_html_length=10000):
"""Detect soft blocks before they escalate to hard CAPTCHA."""
if "sorry/index" in response.url:
return "sorry_redirect"
if response.status_code == 429:
return "rate_limited"
if "g-recaptcha" in response.text:
return "captcha_page"
if len(response.text) < min_html_length:
return "empty_response"
return None
# Usage in loop
block_type = check_soft_block(response)
if block_type:
print(f"Soft block detected: {block_type}")
# Rotate session immediately
session_id = f"shop-{random.randint(10000, 99999)}"
proxy_url = f"http://user-country-US-session-{session_id}:PASS@gate.proxyhat.com:8080"
time.sleep(random.uniform(10, 30)) # Cool-down before retry
Сравнение типов прокси для Google Shopping
| Тип прокси | Скорость | Риск блокировки | Геотаргетинг | Стоимость | Рекомендация |
|---|---|---|---|---|---|
| Datacenter | Высокая (<100ms) | Очень высокий (20–50 запросов) | Ограниченный | Низкая | Не рекомендуется для Shopping |
| Residential | Средняя (200–800ms) | Низкий (200–500 запросов) | Страна + город | Средняя | Оптимальный выбор |
| Mobile | Низкая (500–2000ms) | Минимальный | Страна (ASN) | Высокая | Для самых жёстких блоков |
Для большинства задач парсинга Google Shopping residential-прокси с геотаргетингом на уровне города — оптимальный баланс цены и надёжности. Ознакомьтесь с тарифами на странице цен ProxyHat.
Этика, ToS и правовые аспекты
Парсинг публичных данных — серая зона. Ключевые моменты:
- Публичные данные только: цены и рейтинги на Google Shopping общедоступны без авторизации. Не пытайтесь обходить paywall или собирать персональные данные.
- robots.txt: Google запрещает парсинг SERP в
robots.txtдля большинства User-Agent. Технически вы можете игнорировать robots.txt, но это ослабляет вашу правовую позицию. - CFAA (Computer Fraud and Abuse Act): в США парсинг публичных данных после дела hiQ Labs v. LinkedIn (2022) признан допустимым, но обход технических барьеров может квалифицироваться иначе.
- GDPR: если вы собираете данные из ЕС, убедитесь, что не обрабатываете персональные данные пользователей. Цены товаров не являются персональными данными, но отзывы с именами — да.
- ToS Google: условия использования Google запрещают автоматизированный доступ. Нарушение ToS — не обязательно преступление, но может привести к бану аккаунтов и IP.
Для крупномасштабного коммерческого сбора данных рассмотрите официальные партнёрские программы Google, такие как Custom Search API (ограниченный, но легитимный доступ) или официальный SERP API-партнёр. Полная документация по настройке прокси доступна на docs.proxyhat.com.
Key Takeaways
Главное о парсинге Google Shopping в 2026:
- Content API for Shopping отдаёт только собственные товары — для конкурентных цен нужен парсинг HTML SERP.
- Базовый URL:
google.com/search?tbm=shop&q=QUERY&gl=COUNTRY&hl=LANG.- Ключевые селекторы:
.sh-dgr__content,.sh-pr__product-results,.a8Pemb(цена).- Локализация требует residential-прокси с city-level geo:
user-country-DE-city-berlin.- Детектируйте мягкие блоки (sorry-редирект, пустой HTML) до получения hard CAPTCHA.
- Батч по 10–20 запросов, задержки 2–5 секунд, ротация сессий.
- Этика: только публичные данные, уважайте robots.txt, рассматривайте официальные API для масштаба.
Готовы начать? Изучите доступные локации прокси на странице локаций ProxyHat, прочитайте о веб-скрапинге и SERP-трекинге в наших руководствах, или сразу перейдите к тарифам.






