> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/api-targets/es/motores-de-busqueda/google/shopping/shopping-product.md).

# Producto de Shopping

La `google_shopping_product` source recupera información detallada del producto (título, descripción, precios, vendedores, elementos relacionados, reseñas, etc.) de Google Shopping usando un **token del producto** obtenido de `google_shopping_search` ([aquí](/api-targets/es/motores-de-busqueda/google/shopping/shopping-search.md)) o `google_search`.

## **Ejemplos de solicitud**

En el ejemplo de código a continuación, hacemos una solicitud para recuperar la página del producto de un producto de Google Shopping usando un token válido.

{% tabs %}
{% tab title="cURL" %}

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \

--user 'USERNAME:PASSWORD' \

-H 'Content-Type: application/json' \

-d '{
       "source": "google_shopping_product",
       "query": "<PRODUCT_TOKEN>",
       "render": "html",
       "parse": true
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint


# Structure payload.
payload = {
    "source": "google_shopping_product",
    "query": "[product_token_string]",
    "render": "html",
    "parse": True
}

# Get response.
response = requests.request(
    'POST',
    'https://realtime.oxylabs.io/v1/queries',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)

# Print prettified response to stdout.
pprint(response.json())
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const https = require("https");

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "google_shopping_product",
    query: "[product_token_string]",
    render: "html",
    parse: true
};

const options = {
    hostname: "realtime.oxylabs.io",
    path: "/v1/queries",
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Authorization:
            "Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
    },
};

const request = https.request(options, (response) => {
    let data = "";

    response.on("data", (chunk) => {
        data += chunk;
    });

    response.on("end", () => {
        const responseData = JSON.parse(data);
        console.log(JSON.stringify(responseData, null, 2));
    });
});

request.on("error", (error) => {
    console.error("Error:", error);
});

request.write(JSON.stringify(body));
request.end();
```

{% endtab %}

{% tab title="HTTP" %}

```http
https://realtime.oxylabs.io/v1/queries?source=google_shopping_product&query=[product_token_string]&parse=true&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'google_shopping_product',
    'query' => '[product_token_string]',
    'render' => 'html',
    'parse' => true
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");

$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
echo $result;

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
```

{% endtab %}

{% tab title="Golang" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	const Username = "USERNAME"
	const Password = "PASSWORD"

	payload := map[string]interface{}{
		"source": "google_shopping_product",
		"query": "[product_token_string]",
		"render": "html",
		"parse": true,
	}

	jsonValue, _ := json.Marshal(payload)

	client := &http.Client{}
	request, _ := http.NewRequest("POST",
		"https://realtime.oxylabs.io/v1/queries",
		bytes.NewBuffer(jsonValue),
	)

	request.SetBasicAuth(Username, Password)
	response, _ := client.Do(request)

	responseText, _ := ioutil.ReadAll(response.Body)
	fmt.Println(string(responseText))
}
```

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace OxyApi
{
    class Program
    {
        static async Task Main()
        {
            const string Username = "USERNAME";
            const string Password = "PASSWORD";

            var parameters = new {
                source = "google_shopping_product",
                query = "[product_token_string]",
                render = "html",
                parse = true
            };

            var client = new HttpClient();

            Uri baseUri = new Uri("https://realtime.oxylabs.io");
            client.BaseAddress = baseUri;

            var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
            requestMessage.Content = JsonContent.Create(parameters);

            var authenticationString = $"{Username}:{Password}";
            var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString));
            requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);

            var response = await client.SendAsync(requestMessage);
            var contents = await response.Content.ReadAsStringAsync();

            Console.WriteLine(contents);
        }
    }
}
```

{% endtab %}

{% tab title="Java" %}

```java
package org.example;

import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;

public class Main implements Runnable {
    private static final String AUTHORIZATION_HEADER = "Authorization";
    public static final String USERNAME = "USERNAME";
    public static final String PASSWORD = "PASSWORD";

    public void run() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("source", "google_shopping_product");
        jsonObject.put("query", "[product_token_string]");
        jsonObject.put("render", "html");
        jsonObject.put("parse", true);

        Authenticator authenticator = (route, response) -> {
            String credential = Credentials.basic(USERNAME, PASSWORD);
            return response
                    .request()
                    .newBuilder()
                    .header(AUTHORIZATION_HEADER, credential)
                    .build();
        };

        var client = new OkHttpClient.Builder()
                .authenticator(authenticator)
                .readTimeout(180, TimeUnit.SECONDS)
                .build();

        var mediaType = MediaType.parse("application/json; charset=utf-8");
        var body = RequestBody.create(jsonObject.toString(), mediaType);
        var request = new Request.Builder()
                .url("https://realtime.oxylabs.io/v1/queries")
                .post(body)
                .build();

        try (var response = client.newCall(request).execute()) {
            if (response.body() != null) {
                try (var responseBody = response.body()) {
                    System.out.println(responseBody.string());
                }
            }
        } catch (Exception exception) {
            System.out.println("Error: " + exception.getMessage());
        }

        System.exit(0);
    }

    public static void main(String[] args) {
        new Thread(new Main()).start();
    }
}
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "google_shopping_product",
    "query": "[product_token_string]",
    "render": "html",
    "parse": true
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
**Importante:** La `query` parameter debe contener un token válido generado a través de la `google_shopping_search` [source](/api-targets/es/motores-de-busqueda/google/shopping/shopping-search.md).
{% endhint %}

Usamos el método de integración síncrono de [**Realtime**](/products/es/web-scraper-api/integration-methods/realtime.md) en nuestros ejemplos. Si deseas usar [**Proxy Endpoint**](/products/es/web-scraper-api/integration-methods/proxy-endpoint.md) o la integración asíncrona [**Push-Pull**](/products/es/web-scraper-api/integration-methods/push-pull.md) consulta la [**sección de métodos de integración**](/products/es/web-scraper-api/integration-methods.md) .

## Valores de los parámetros de solicitud

### Genérico

Opciones básicas de configuración y personalización para extraer páginas de productos de Google Shopping.

<table><thead><tr><th width="222">Parámetro</th><th width="330.3333333333333">Descripción</th><th>Valor predeterminado</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><strong><code>source</code></strong></mark></td><td>Establece el scraper.</td><td><code>google_shopping_product</code></td></tr><tr><td><mark style="background-color:green;"><strong><code>query</code></strong></mark></td><td>El token del producto de <code>google_shopping_search</code> o <code>google_search</code></td><td>-</td></tr><tr><td><code>render</code></td><td>Habilita el renderizado de JavaScript cuando se establece en <code>html</code>. <strong>Obligatorio</strong> para recibir resultados de precios adicionales de la sección "More stores". <a href="/spaces/xofNngbwiAAH0MB3lMAb/pages/47852075b446d7f11217f4c0334348f21fb197b8#javascript-rendering"><strong>Más información</strong></a><strong>.</strong></td><td>-</td></tr><tr><td><code>parse</code></td><td>Devuelve datos analizados cuando se establece en <code>true</code>. Explora la salida <a href="#output-data-dictionary"><strong>diccionario de datos</strong></a>.</td><td><code>false</code></td></tr><tr><td><code>callback_url</code></td><td>URL a tu endpoint de callback. <a href="/spaces/xofNngbwiAAH0MB3lMAb/pages/28181dba27c108c1684f7f17f5d8fef78bd80d90"><strong>Más información</strong></a></td><td>-</td></tr><tr><td><code>user_agent_type</code></td><td>Tipo de dispositivo y navegador. La lista completa se puede encontrar <a href="/spaces/xofNngbwiAAH0MB3lMAb/pages/c0794af77dadf44c32dae6894baaca0b93585869"><strong>aquí</strong></a>.</td><td><code>desktop</code></td></tr></tbody></table>

&#x20;   \- parámetro obligatorio

### Localización

Adapta los resultados a ubicaciones geográficas, dominios e idiomas específicos.

{% hint style="warning" %}
**Nota:** Los parámetros de localización (`gl` y `hl`) ahora están integrados en el token del producto. Para recuperar `google_shopping_products` datos que coincidan con el resultado de búsqueda original, recomendamos dejar estos campos vacíos a menos que se necesiten anulaciones intencionalmente.&#x20;
{% endhint %}

<table><thead><tr><th width="218">Parámetro</th><th width="336.3333333333333">Descripción</th><th>Valor predeterminado</th></tr></thead><tbody><tr><td><code>geo_location</code></td><td>La ubicación geográfica para la que debe adaptarse el resultado. Usar correctamente este parámetro es extremadamente importante para obtener los datos correctos. Para más información, lee sobre nuestras <code>geo_location</code> estructuras de parámetros sugeridas <a href="/spaces/xofNngbwiAAH0MB3lMAb/pages/7ba8016b17441e2b1496d43e14d3e47b6eefb6f9#google"><strong>aquí</strong></a><strong>.</strong></td><td>-</td></tr><tr><td><code>locale</code></td><td><code>Accept-Language</code> valor de la cabecera para cambios de idioma de la interfaz. <a href="/spaces/xofNngbwiAAH0MB3lMAb/pages/6eb70a43f15a81321802a17be08ec05b79c90a3f#locale-1"><strong>Más información</strong></a>.</td><td>-</td></tr></tbody></table>

## Datos estructurados

A continuación puedes encontrar un **ejemplo de salida estructurada** de `google_shopping_product`.

{% file src="/files/396bd29e0458c931d488acd5108dceec5e1a5d2e" %}

## Diccionario de datos de salida

**Muestra HTML**

<figure><img src="/files/17bb887056fff6186d05be87d2705f3fb0935b56" alt=""><figcaption></figcaption></figure>

#### Estructura JSON

La tabla siguiente presenta una lista detallada de cada elemento de la página del producto que analizamos, junto con su descripción y tipo de datos. La tabla también incluye algunos metadatos.

<table><thead><tr><th width="247.11328125">Clave</th><th width="384">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>url</code></td><td>La URL de la página del producto de Google Shopping.</td><td>cadena</td></tr><tr><td><code>title</code> (opcional) </td><td>El título del producto.</td><td>cadena</td></tr><tr><td><code>description</code></td><td>Una descripción detallada del producto.</td><td>cadena</td></tr><tr><td><code>images</code></td><td>Un objeto que contiene imágenes del producto.</td><td>objeto</td></tr><tr><td><code>images.full_size</code></td><td>Un arreglo de URL de imágenes en tamaño completo del producto.</td><td>arreglo</td></tr><tr><td><code>images.thumbnails</code></td><td>Un arreglo de URL de imágenes en miniatura del producto.</td><td>arreglo</td></tr><tr><td><code>pricing</code></td><td>Un arreglo que contiene toda la información de precios en línea.</td><td>arreglo</td></tr><tr><td><code>reviews</code></td><td>Un objeto que contiene información de reseñas. (solo EE. UU.)</td><td>objeto</td></tr><tr><td><code>variants</code></td><td>Un arreglo de objetos que contiene variantes del producto. (colores, tallas, etc.)</td><td>arreglo</td></tr><tr><td><code>related_items</code></td><td>Un arreglo de objetos que contiene elementos relacionados.</td><td>arreglo</td></tr><tr><td><code>specifications</code></td><td>Un arreglo de objetos que contiene especificaciones del producto.</td><td>arreglo</td></tr><tr><td><code>parse_status_code</code></td><td>El código de estado del trabajo de análisis. Puedes ver los códigos de estado del parser descritos <a href="https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/google/shopping/broken-reference/README.md"><strong>aquí</strong></a>.</td><td>entero</td></tr><tr><td><code>created_at</code></td><td>La marca de tiempo en que se creó el trabajo de scraping.</td><td>marca de tiempo</td></tr><tr><td><code>updated_at</code></td><td>La marca de tiempo en que terminó el trabajo de scraping.</td><td>marca de tiempo</td></tr><tr><td><code>status_code</code></td><td>El código de estado del trabajo de scraping. Puedes ver los códigos de estado del scraper descritos <a href="https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/google/shopping/broken-reference/README.md"><strong>aquí</strong></a>.</td><td>entero</td></tr><tr><td><code>job_id</code></td><td>El ID del trabajo asociado con el trabajo de scraping.</td><td>cadena</td></tr></tbody></table>

{% hint style="info" %}
En las siguientes secciones, los fragmentos de código JSON analizados se acortan cuando hay más de un elemento disponible para el tipo de resultado.
{% endhint %}

### Precios

Un objeto que contiene información de precios del producto.

<figure><img src="/files/54753018ba46d972a5d7e492611aaf86a8069f7e" alt=""><figcaption></figcaption></figure>

```json
...
   "pricing": {
    "online": [
        {
          "price": 559,
          "seller": "Walmart - Seller",
          "details": "Pny GeForce RTX 4070 GPU 12gb Xlr8 Gaming Verto Epic-x RGB Triple Fan Dlss 3 Graphics Card",
          "currency": "USD",
          "condition": "New",
          "seller_link": "https://www.walmart.com/ip/PNY-GeForce-RTX-4070-GPU-12GB-XLR8-Gaming-VERTO-EPIC-X-RGB-Triple-Fan-DLSS-3-Graphics-Card/1396859462?wmlspartner=wlpa&selectedSellerId=101035116&selectedOfferId=159733DADC653E1891C050148D16D747&conditionGroupCode=1",
          "price_shipping": 22.05
        },
...
    ]
},
...
```

<table><thead><tr><th width="231">Clave (pricing[])</th><th width="375">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>online</code></td><td>Un arreglo de objetos que contiene detalles de precios del producto.</td><td>arreglo</td></tr><tr><td><code>online.price</code></td><td>El precio del producto en la moneda especificada.</td><td>flotante</td></tr><tr><td><code>online.seller</code></td><td>El nombre del vendedor o comerciante que ofrece el producto.</td><td>cadena</td></tr><tr><td><code>online.details</code></td><td>Detalles adicionales sobre el producto o la compra, como las políticas de entrega y devolución.</td><td>cadena</td></tr><tr><td><code>online.currency</code></td><td>El código de moneda del precio del producto.</td><td>cadena</td></tr><tr><td><code>online.condition</code></td><td>El estado del producto.</td><td>cadena</td></tr><tr><td><code>online.price_tax</code></td><td>El importe del impuesto aplicado al precio del producto.</td><td>flotante</td></tr><tr><td><code>online.price_total</code> (opcional)</td><td>El precio total del producto, con impuestos incluidos.</td><td>flotante</td></tr><tr><td><code>online.seller_link</code></td><td>La URL de la página del vendedor para el producto.</td><td>cadena</td></tr><tr><td><code>online.price_shipping</code></td><td>El costo de envío del producto.</td><td>flotante</td></tr></tbody></table>

### Reseñas

Un objeto que contiene información de reseñas y calificaciones del producto.

{% hint style="info" %}
Por el momento, las reseñas solo están disponibles en la configuración regional de EE. UU.
{% endhint %}

<figure><img src="/files/6f190da9b3807c0214c68f69fbd4d85724ed2cf4" alt=""><figcaption></figcaption></figure>

```json
...       
       "reviews": {
    "rating": 4.7,
    "top_review": {
        "text": "My computer is a Dell Optiplex 9020, i7-4770, 32mb, 500gb SSD. The 3 fan card is a long, and the hard drive cage had to be removed to fit in the Optiplex case. The power supply was upgraded to 750 watts which required an adapter for the Dell motherboard. With those modifications out of the way, installation of the card was drama free, but you have use Google to find the driver in the Nvidia website. I am using this GPU for 3D animation in Blender. I am very pleased with the speed of the rendering with ray tracing in EEVEE and Cycles. As this is an old computer, the computer's CPU never runs at 100%, and I haven't been able to max out this card's capacity yet. I don't hear the fans running but I have never put a high load enough on it yet, I guess. It does have a little electronic buzz when it is rendering.\u00a0Less",
        "author": "walmart.com Shopper",
        "rating": 5,
        "source": "Reviewed on walmart.com"
      },
      "rating_stars": 4.7,
      "reviews_count": 51,
      "reviews_by_stars": {
        "1": {
          "reviews_count": 2
        },
        "2": {
          "reviews_count": 0
        },
        "3": {
          "reviews_count": 2
        },
        "4": {
          "reviews_count": 3
        },
        "5": {
          "reviews_count": 44
        }
    },
},
...
```

<table><thead><tr><th width="253">Key(reviews[])</th><th width="375">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>calificación</code></td><td>La calificación media del producto, normalmente sobre 5.</td><td>flotante</td></tr><tr><td><code>top_review</code> (opcional)</td><td>Un objeto que contiene detalles de la reseña destacada del producto.</td><td>objeto</td></tr><tr><td><code>top_review.text</code> (opcional)</td><td>El contenido de texto de la reseña destacada.</td><td>cadena</td></tr><tr><td><code>top_review.title</code> (opcional)</td><td>El título de la reseña destacada.</td><td>cadena</td></tr><tr><td><code>top_review.author</code> (opcional)</td><td>El autor de la reseña destacada.</td><td>cadena</td></tr><tr><td><code>top_review.rating</code> (opcional)</td><td>La calificación dada por el autor de la reseña destacada, normalmente sobre 5.</td><td>flotante</td></tr><tr><td><code>top_review.source</code> (opcional)</td><td>La fuente o el sitio web donde se publicó la reseña destacada.</td><td>cadena</td></tr><tr><td><code>rating_stars</code></td><td>La calificación media del producto, normalmente sobre 5 estrellas.</td><td>flotante</td></tr><tr><td><code>reviews_count</code> (opcional)</td><td>El número total de reseñas del producto.</td><td>entero</td></tr><tr><td><code>reviews_by_stars</code></td><td>Un objeto que contiene el número de reseñas para cada calificación por estrellas.</td><td>objeto</td></tr><tr><td><code>reviews_by_stars.url</code> (opcional)</td><td>Un objeto que contiene detalles de las reseñas de X estrellas.</td><td>cadena</td></tr><tr><td><code>reviews_by_stars.reviews_count</code></td><td>El número de reseñas de X estrellas.</td><td>entero</td></tr></tbody></table>

### Artículos relacionados (Más opciones)

Un arreglo de objetos que contiene artículos relacionados con el producto objetivo.

<figure><img src="/files/c8704b7f85ac72913920481f93ececb92273211d" alt=""><figcaption></figcaption></figure>

```json
...             
   "related_items": [
      {
        "items": [
          {
            "url": "/search?ibp=oshop&prds=catalogid:1368129371371338580,gpcid:14975392695437189622,headlineOfferDocid:2388507960063782588,imageDocid:1618178582933849531,productid:7780474142858650836,pvo:2,pvt:hg,rds:PC_14975392695437189622%7CPROD_PC_14975392695437189622&q=nvidia+rtx&gl=us&hl=en&pvorigin=2",
            "image": "https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcScO-LIdlqj1WjcLznMECFXNo4qbZ1TRbkfHdDsDPoIYxx7S9TjKhnQX7Ah6QsKI-zPBKFrC54H0wGZC60Q_NdRebesvYUXwRhQFuZRwvtWmx4_0xoxbylM",
            "price": 639.99,
            "title": "NVIDIA GeForce RTX 5070 12GB GDDR7 Graphics Card",
            "currency": "USD",
            "reviews_count": 228
          },
...
        ],
        "title": "More options"
     }
],
...
```

<table><thead><tr><th width="265">Key(related_items[])</th><th width="350">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Un arreglo de objetos que contiene detalles de cada artículo relacionado.</td><td>arreglo</td></tr><tr><td><code>items.url</code></td><td>La URL de la página del producto relacionado.</td><td>cadena</td></tr><tr><td><code>items.image</code></td><td>La URL de la imagen del producto relacionado.</td><td>cadena</td></tr><tr><td><code>items.price</code></td><td>El precio del producto relacionado en la moneda especificada.</td><td>flotante</td></tr><tr><td><code>items.title</code> (opcional)</td><td>El título del anuncio del producto relacionado.</td><td>cadena</td></tr><tr><td><code>items.rating</code> (opcional)</td><td>La calificación promedio de los usuarios del producto relacionado, normalmente sobre 5.</td><td>entero</td></tr><tr><td><code>items.store</code> (opcional)</td><td>El nombre de la tienda o comerciante que ofrece el producto relacionado.</td><td>cadena</td></tr><tr><td><code>items.currency</code></td><td>El código de moneda del precio del producto.</td><td>cadena</td></tr><tr><td><code>items.reviews_count</code></td><td>El número total de reseñas del producto relacionado.</td><td>entero</td></tr><tr><td><code>title</code></td><td>El título o encabezado de la sección de artículos relacionados</td><td>cadena</td></tr></tbody></table>

### Especificaciones

Un arreglo de objetos que contiene detalles de especificaciones del producto.

<figure><img src="/files/1d5c1397668fb1d79bd56332add03278b58f0f6a" alt=""><figcaption></figcaption></figure>

```json
...
"specifications": [
    {
        "items": [
          {
            "title": "Manufacturer",
            "value": "PNY"
          },
          {
            "title": "Output",
            "value": "HDMI, DisplayPort"
          },
          {
            "title": "Interface",
            "value": "PCI Express"
          },
          {
            "title": "Brand",
            "value": "PNY"
          },
...
        ],
        "section_title": "attributes"
      }
],
...
```

<table><thead><tr><th width="220">Key (specifications[])</th><th width="367">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Un arreglo de objetos que contiene detalles de cada especificación.</td><td>arreglo</td></tr><tr><td><code>items.title</code></td><td>El título de la especificación.</td><td>cadena</td></tr><tr><td><code>items.value</code></td><td>El valor de la especificación.</td><td>cadena</td></tr><tr><td><code>section_title</code></td><td>El título o encabezado de la sección de especificaciones.</td><td>cadena</td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/api-targets/es/motores-de-busqueda/google/shopping/shopping-product.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
