Cómo extraer precios de Google Shopping: Ofertas, Vendedores, Datos Geográficos
Google Shopping agrega precios de miles de comerciantes en un solo lugar. Aquí te mostramos cómo convertir su vertical de compras en un flujo de precios estructurado y geográficamente consciente en el que puedes confiar.
Google Shopping es uno de los mayores agregadores de precios en la web: para un producto dado, reúne ofertas en vivo, precios y detalles de vendedores de miles de comerciantes en una sola vista clasificada. Eso lo convierte en una fuente de inteligencia de precios excepcionalmente eficiente: una consulta revela lo que docenas de minoristas cobran en este momento. Esta guía cubre cómo extraer precios de Google Shopping de manera limpia, por qué la geografía lo cambia todo, y cuándo dejar de construir un navegador manualmente y llamar a una API estructurada en su lugar.
Lo que realmente te ofrece el vertical de Compras
La pestaña de Compras es el vertical tbm=shop de Google Search. Cada tarjeta de producto lleva un título, un precio, el nombre del comerciante/vendedor, una calificación de estrellas y un conteo de reseñas, y un identificador de producto que agrupa múltiples ofertas del mismo artículo. Para el trabajo de precios, esa combinación de vendedor y precio es el oro: puedes observar la distribución entre minoristas para un SKU, detectar quién está rebajando a quién y seguir el movimiento de precios a lo largo del tiempo: la materia prima de un flujo de trabajo de reprecificación o monitoreo de MAP.
La estructura de la URL es sencilla. Los resultados se paginan diez por página mediante un desplazamiento start, y el país de salida se establece con 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
Por qué la ubicación decide la respuesta
Los resultados de Compras están localizados. Los precios se muestran en la moneda local, la mezcla de comerciantes cambia por mercado, la disponibilidad difiere, y el parámetro gl por sí solo no es suficiente: Google también considera la ubicación de la IP solicitante. Solicita resultados alemanes desde una IP de centro de datos en EE. UU. y obtendrás una respuesta inconsistente, parcialmente estadounidense. Para leer el catálogo que realmente ve un comprador en Berlín, la solicitud debe salir desde una IP residencial alemana. Un pool de proxies residenciales que abarca más de 200 países te permite fijar la salida a cada mercado que precies. Esta es la misma disciplina detrás del monitoreo de precios de la competencia a gran escala.

La ruta DIY (y su costo)
Puedes extraer las páginas directamente con un navegador sin cabeza. Google Shopping se renderiza dinámicamente y está bien defendido, por lo que las solicitudes HTTP simples no son suficientes: necesitas un motor de navegador real, un proxy en cada solicitud y código para descartar el muro de consentimiento de cookies (el notorio button#L2AGLb "Aceptar todo") antes de que se carguen los productos. Luego luchas con el CSS: los nombres de las clases contenedoras de Compras están ofuscados y rotan, por lo que los selectores que funcionan hoy se rompen en quince días. Agrega lógica de reintento (tres intentos con retroceso aleatorio es un piso sensato) y tienes un extractor funcional, y un trabajo de mantenimiento permanente.
# 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 ruta de la API: una llamada, JSON estructurado
La alternativa es dejar que una SERP API se encargue del navegador, los proxies y el análisis, y te entregue el vertical de compras como JSON. Pasas la consulta y un país; devuelve ofertas con título, precio, vendedor, calificación e id de producto ya extraídos. Sin muros de cookies, sin mantenimiento de selectores, geografía como parámetro. Para un flujo de precios que debe seguir funcionando, ese intercambio suele ser el correcto: nuestra explicación de cómo funciona la extracción SERP en 2026 explica por qué el camino del HTML puro sigue siendo cada vez más difícil.
# 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])

Qué contiene realmente una sola oferta
Vale la pena entender la forma de una tarjeta de producto antes de escalar un pipeline a su alrededor. Más allá del precio principal, cada oferta lleva el nombre del comerciante, una condición del artículo (nuevo, usado o reacondicionado), indicios de envío e impuestos, una calificación de estrellas con un conteo de reseñas, y un id de producto que Google usa para agrupar a cada vendedor del mismo artículo bajo una entrada. Ese id de producto es la clave de unión para todo lo posterior: agrupa ofertas por él y puedes comparar de manera similar entre comerciantes, seguir el precio de un SKU a lo largo del tiempo y detectar el momento en que un nuevo vendedor entra en una lista o uno existente desaparece.
Dos campos merecen atención especial para el trabajo de precios. El nombre del vendedor te permite construir una vista por comerciante: quién consistentemente rebaja, quién ancla alto, quién solo aparece en promociones, lo cual es mucho más accionable que una nube de precios anónima. La calificación proporciona un peso de confianza aproximado, para que no trates a un revendedor con una sola reseña como equivalente a un minorista establecido. Captura ambos junto con el precio y la moneda, y tu conjunto de datos responde preguntas que un flujo de precios simple nunca puede.
- product_id - la clave de agrupación; deduplica y une a cada vendedor de un artículo en ella.
- price + currency - la métrica, siempre emparejada con el mercado del que la obtuviste.
- seller / source - el comerciante, para vistas competitivas por minorista.
- rating + reviews - un peso de confianza para que las comparaciones sean justas.
- timestamp - marca cada captura para que el historial y las diferencias sean posibles.
Convertir ofertas en inteligencia
Las ofertas en bruto no son inteligencia: el ciclo lo es. Ejecuta tu conjunto de consultas en un horario, almacena cada captura con una marca de tiempo y compara con el historial para destacar lo que importa: un competidor bajando por debajo de tu precio, un nuevo vendedor entrando en un SKU, un agotamiento de stock que puedes explotar. Agrupa ofertas por id de producto para que los vendedores del mismo artículo se comparen de manera similar, y ejecuta todo el conjunto por mercado objetivo. Si estás construyendo herramientas sobre esto, nuestra nota sobre elegir una SERP API cubre las preguntas sobre la forma de JSON y el costo por consulta que deciden la economía unitaria a volumen.
Extrae datos de Google Shopping con la SERP API
Preguntas frecuentes
¿Cómo extraer Google Shopping con Python?
Dos caminos. Conduce un navegador sin cabeza (Playwright) a través de un proxy residencial, descarta el muro de consentimiento de cookies y analiza los contenedores de productos: flexible pero de alto mantenimiento porque el marcado está ofuscado y cambia. O llama al motor google_shopping de una SERP API con tu consulta y un código de país y recibe ofertas analizadas como JSON en una solicitud. La ruta de la API es mucho menos código para mantener vivo.
¿Los datos de Google Shopping cambian por país?
Sí, sustancialmente. La moneda, el conjunto de comerciantes, los precios y la disponibilidad varían por mercado. El parámetro gl solicita un país, pero Google también considera la IP solicitante, por lo que los resultados localizados precisos necesitan una IP de salida en el país objetivo. Fija la solicitud a una IP residencial por mercado que precies.
¿Es legal extraer datos de Google Shopping?
Recopilar precios y ofertas mostrados públicamente es una práctica común para la inteligencia de precios, pero los términos de la fuente y cualquier regla de datos personales aún se aplican, y esto no es un consejo legal. Limítate a los datos de productos públicos, respeta los límites de velocidad, y si no estás seguro sobre un uso específico, busca asesoría. No recolectes ni almacenes información personal que no necesites.
¿Con qué frecuencia debería extraer precios de Compras?
Depende de qué tan rápido se mueva tu categoría. Electrónicos de rápido movimiento o bienes con entradas pueden justificar capturas por hora; las categorías estables están bien diariamente. Ajusta la cadencia a la volatilidad de precios, marca cada captura para que puedas construir un historial, y distribuye las solicitudes a través de IPs y tiempo para que seas un visitante educado y de bajo riesgo.
Google Shopping condensa el precio de todo un mercado en una superficie consultable. Ya sea que lo renderices tú mismo o llames a una API para obtener JSON estructurado, el patrón ganador es el mismo: geodirige cada mercado, captura según un horario y compara con el historial. Eso es un motor de inteligencia de precios, no una extracción única.