> 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-search.md).

# Búsqueda de Shopping

La `google_shopping_search` la fuente devuelve resultados de búsqueda de Google Shopping. Cada resultado renderizado incluye un **token del producto** que es necesario para recopilar datos del producto usando el `google_shopping_product` [fuente](/api-targets/es/motores-de-busqueda/google/shopping/shopping-product.md).

## Ejemplos de solicitud

En el ejemplo de código siguiente, buscamos "Nvidia RTX" para obtener el producto `token` en la respuesta.

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

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \\
--user 'USERNAME:PASSWORD' \\
-H 'Content-Type: application/json' \\
-d '{
    "source": "google_shopping_search",
    "query": "nvidia rtx",
    "render": "html",
    "parse": true
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint


# Structure payload.
payload = {
    "source": "google_shopping_search",
    "query": "nvidia rtx",
    "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_search",
    query: "nvidia rtx",
    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_search&query=nvidia+rtx&render=html&parse=true&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'google_shopping_search',
    'query' => 'nvidia rtx',
    '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_search",
		"query":  "nvidia rtx",
		"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_search",
                query = "nvidia rtx",
                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.JSONArray;
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_search");
        jsonObject.put("query", "nvidia rtx");
        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_search",
    "query": "nvidia rtx",
    "render": "html",
    "parse": true
}
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
**Nota:** Solo los trabajos analizados y renderizados devolverán tokens de producto.
{% endhint %}

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

## Valores de los parámetros de solicitud

### Genérico

<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>fuente</code></strong></mark></td><td>Establece el scraper.</td><td><code>google_shopping_search</code></td></tr><tr><td><mark style="background-color:green;"><strong><code>query</code></strong></mark></td><td>La palabra clave o frase que se va a buscar.</td><td>-</td></tr><tr><td><mark style="background-color:green;"><strong><code>render</code></strong></mark></td><td>Habilita la renderización de JavaScript. Debe establecerse en <code>html</code> para obtener <strong>tokens</strong>. <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

<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 del encabezado que cambia el idioma de la interfaz web de tu página de búsqueda de Google. <a href="/spaces/xofNngbwiAAH0MB3lMAb/pages/6eb70a43f15a81321802a17be08ec05b79c90a3f#google"><strong>Más información</strong></a>.</td><td>-</td></tr></tbody></table>

{% 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 %}

### Paginación

Controles para gestionar la paginación y la recuperación de resultados de búsqueda.

<table><thead><tr><th width="222">Parámetro</th><th width="350.3333333333333">Descripción</th><th width="167">Valor predeterminado</th></tr></thead><tbody><tr><td><code>página_inicial</code></td><td>Número de página inicial.</td><td><code>1</code></td></tr><tr><td><code>páginas</code></td><td>Número de páginas a recuperar.</td><td><code>1</code></td></tr></tbody></table>

### Parámetros de contexto

Opciones avanzadas para adaptar el contexto de búsqueda o los controles para requisitos especializados. Los parámetros de contexto deben añadirse a un array de contexto como se muestra a continuación:

```json
...
"context": [
    {
        "key": "filter",
        "value": "0"
    }
]
...
```

<table><thead><tr><th width="222">Parámetro</th><th width="350.3333333333333">Descripción</th><th>Valor predeterminado</th></tr></thead><tbody><tr><td><code>contexto</code>:<br><code>ordenar_por</code></td><td>Ordena la lista de productos según un criterio determinado. <code>r</code> aplica la ordenación predeterminada de Google, <code>rv</code> - por puntuación de reseñas, <code>p</code> - por precio ascendente, <code>pd</code> - por precio descendente.</td><td><code>r</code></td></tr><tr><td><code>contexto</code>:<br><code>precio_mínimo</code></td><td>Precio mínimo de los productos para filtrar.</td><td>-</td></tr><tr><td><code>contexto</code>:<br><code>precio_máximo</code></td><td>Precio máximo de los productos para filtrar.</td><td>-</td></tr><tr><td><code>contexto</code>:<br><code>nfpr</code></td><td><code>true</code> desactivará la autocorrección ortográfica.</td><td>-</td></tr></tbody></table>

## Datos estructurados

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

{% file src="/files/6337f48ad1c0086841e1d43968f6b2251830bef9" %}

## Diccionario de datos de salida

**Ejemplo de HTML**

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

#### Estructura JSON

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

<table><thead><tr><th width="240">Clave</th><th width="373">Descripción</th><th width="143">Tipo</th></tr></thead><tbody><tr><td><code>url</code></td><td>La URL de la página de búsqueda de Google Shopping para la consulta.</td><td>cadena</td></tr><tr><td><code>página</code></td><td>El número de página actual de los resultados de búsqueda.</td><td>entero</td></tr><tr><td><code>resultados</code></td><td>Un objeto que contiene resultados de búsqueda detallados.</td><td>objeto</td></tr><tr><td><code>pla</code> (opcional)</td><td>Una lista de anuncios de listado de productos con sus respectivos detalles.</td><td>arreglo</td></tr><tr><td><code>filtros</code> (opcional)</td><td>Lista de varios filtros.</td><td>arreglo</td></tr><tr><td><code>orgánico</code></td><td>Una lista de listados orgánicos con sus respectivos detalles.</td><td>arreglo</td></tr><tr><td><code>información_de_búsqueda</code></td><td>Una lista de detalles para la consulta de búsqueda enviada.</td><td>objeto</td></tr><tr><td><code>search_information.query</code></td><td>El término de búsqueda original.</td><td>cadena</td></tr><tr><td><code>search_information.showing_results_for</code></td><td>El término de búsqueda para el que se muestran los resultados. `query` y `showing_results_for` pueden diferir si Google corrigió automáticamente el término de búsqueda proporcionado.</td><td>cadena</td></tr><tr><td><code>última_página_visible</code></td><td>Valor que identifica el número máximo de página visible en la página de resultados de la consulta de búsqueda. (-1 cuando la carga de más resultados se inicia al desplazar).</td><td>entero</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 %}

### Anuncios de listados de pago

Un array de objetos que contiene Anuncios de listado de productos (PLA) para el producto. (Ejemplo ilustrativo)

<figure><img src="https://lh7-us.googleusercontent.com/docsz/AD_4nXfkje7GDLS8Q67yEA9wX9tcFSZpI79pun9D5XUsoaHoOPqmVM9-eAAHoNd8n_pi46NKy648vV5yB_2GvzXZEhh7p8JRBV73GBVHiczC71v6haNGkdZqgYYnR8I44UdtzqzIGzdt3wp1dB0SG-xaR0sHCYj8?key=dCZ5EAYTk7rLOr8OSUpsuw" alt=""><figcaption></figcaption></figure>

```json
...
  "pla": [
    {
        "items": [
            {
                "pos": 1,
                "url": "/aclk?sa=l&ai=DChcSEwiY8fLUi9OGAxVtj1AGHYnVBj0YABABGgJkZw&gclid=EAIaIQobChMImPHy1IvThgMVbY9QBh2J1QY9EAQYASABEgKpS_D_BwE&sig=AOD64_2DguiyFTR4GRY6Ww9o__l9HgJC_A&ctype=5&q=&ved=0ahUKEwj-6ezUi9OGAxWiWUEAHdbxAgsQww8I2xA&adurl=",
                "price": "$2,199.00",
                "title": "Polycade Sente: Black",
                "seller": "Polycade",
                "thumbnail": "https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcS59ZNOrZH96cy_cOgzxL52VoJYq9iPl7q8g26f9odcuG8pY8ZRxe9YMhkZDPnFAZDyP04lu29gy57ObwsKpWHb_pzQBja34tkErnSAz3nw&usqp=CAE"
            },
            {
                "pos": 2,
                "url": "/aclk?sa=l&ai=DChcSEwiY8fLUi9OGAxVtj1AGHYnVBj0YABADGgJkZw&gclid=EAIaIQobChMImPHy1IvThgMVbY9QBh2J1QY9EAQYAiABEgJwHvD_BwE&sig=AOD64_0LFB8jrHwNdEkmOdjcjGOdhQ9ZVg&ctype=5&q=&ved=0ahUKEwj-6ezUi9OGAxWiWUEAHdbxAgsQww8I3hA&adurl=",
                "price": "$2,199.00",
                "title": "Polycade Sente: White",
                "seller": "Polycade",
                "thumbnail": "https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcQ2onFg_aXbg8LTX3qJT9f9XdiFrl_SNLXlpKhSjCQQ2c5EmQcrNXPwCMphjugJUhWctBpRVC0BiS4OUnq0FRAeQ4BXEWI6FuvZvGERsLc&usqp=CAE"
            },
                                ...
        ],
        "pos_overall": 1
    }
],
...
```

<table><thead><tr><th width="188">Clave (pla)</th><th width="434">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Todos los PLA disponibles dentro de la página.</td><td>arreglo</td></tr><tr><td><code>pos</code></td><td>Un indicador que denota la posición de un elemento dado entre los resultados de PLA.</td><td>entero</td></tr><tr><td><code>url</code></td><td>La URL del producto.</td><td>cadena</td></tr><tr><td><code>precio</code></td><td>El precio del producto en el anuncio de listado.</td><td>cadena</td></tr><tr><td><code>title</code></td><td>El título del producto en el anuncio de listado.</td><td>cadena</td></tr><tr><td><code>calificación</code></td><td>La valoración del producto.</td><td>entero</td></tr><tr><td><code>vendedor</code></td><td>El vendedor del producto en el anuncio de listado.</td><td>cadena</td></tr><tr><td><code>miniatura</code></td><td>La URL de la imagen en miniatura del producto.</td><td>cadena</td></tr><tr><td><code>reviews_count</code></td><td>El número de reseñas del producto.</td><td>opcional</td></tr><tr><td><code>pos_overall</code></td><td>Una indicación de la posición del resultado dentro de la SERP.</td><td>entero</td></tr></tbody></table>

### Filtros

<figure><img src="/files/93ad74d6f3f784df701fd9ee860fbcbe38382ad9" alt=""><figcaption></figcaption></figure>

```json
...
"filters": [
    {
        "name": "Show only",
        "values": [
            {
                "url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,sales:1&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQ7KEGCJ4WKAA",
                "value": "On sale"
            }
        ]
    },
    {
        "name": "Price",
        "values": [
            {
                "url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,price:1,ppr_max:40&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQvSsIohYoAA",
                "value": "Up to $40"
            },
                                ...
                                {
                "url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,price:1,ppr_min:90&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQvSsIpRYoAw",
                "value": "Over $90"
            }
        ]
    },
    {
        "name": "Color",
        "values": [
            {
                "url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,color:specific,color_val:black&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQtSsIrBYoAA",
                "value": "Black"
            },
                                ...
                                {
                "url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,color:specific,color_val:pink&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQtSsIshYoBg",
                "value": "Pink"
            }
        ]
    },
                        ...
]
```

<table><thead><tr><th width="238">Clave (filtros)</th><th width="402">Descripción</th><th width="113">Tipo</th></tr></thead><tbody><tr><td><code>nombre</code></td><td>El nombre de la categoría del filtro</td><td>cadena</td></tr><tr><td><code>valores</code></td><td>Opciones de filtro disponibles dentro de la categoría.</td><td>arreglo</td></tr><tr><td><code>values.url</code></td><td>La URL que representa la consulta de búsqueda filtrada para esta opción de filtro.</td><td>cadena</td></tr><tr><td><code>values.value</code></td><td>El nombre mostrado de la opción de filtro</td><td>cadena</td></tr><tr><td><code>values.merchant_id</code> (opcional)</td><td>El ID del comerciante asociado con esta opción de filtro.</td><td>cadena</td></tr></tbody></table>

### Orgánico

Un array de objetos que contiene detalles de los resultados de búsqueda orgánicos.

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

<figure><img src="/files/3a8e81f8f3bfcef06ff69cb9af849a7e28069d80" alt=""><figcaption></figcaption></figure>

```json
...
"organic": [
    {
        "pos": 1,
        "url": "https://www.google.com/shopping/product/16307418470740744792?q=nvidia+rtx&hl=en&udm=28&sei=j5fsaPC2FYWQur8P293m8A8&gl=us",
        "type": "grid",
        "price": 3090,
        "title": "NVIDIA GeForce RTX 5090 32GB GDDR7 Graphics Card",
        "token": "eyJjYXRhbG9naWQiOiAiMTYzMDc0MTg0NzA3NDA3NDQ3OTIiLCAiZ3BjaWQiOiAiMjM4NTIwNzk2NTI4MjUxMzUzOSIsICJpbWFnZURvY2lkIjogIjkyMjY0MjkwODMxMzQ4NDkwNDUiLCAibWlkIjogIiIsICJwdm8iOiAiMjMiLCAicHZ0IjogImhnIiwgInJkcyI6ICJQQ18yMzg1MjA3OTY1MjgyNTEzNTM5fFBST0RfUENfMjM4NTIwNzk2NTI4MjUxMzUzOSIsICJwcm9kdWN0aWQiOiAiIiwgInF1ZXJ5IjogIm52aWRpYSBydHgifQ==",
        "rating": 4.6,
        "currency": "USD",
        "delivery": "Free delivery by Fri",
        "merchant": {
            "name": "eBay"
        },
        "price_str": "$3,090.00",
        "thumbnail": "<THUMBNAIL_STR>",
        "product_id": "1503163696221055935",
        "pos_overall": 1,
        "reviews_count": 311
    },
]
...
```

<table><thead><tr><th width="266">Clave (orgánico)</th><th width="360">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>pos</code></td><td>La posición del producto en los resultados de búsqueda.</td><td>entero</td></tr><tr><td><code>url</code></td><td>La URL de la página del producto.</td><td>cadena</td></tr><tr><td><code>tipo</code></td><td>El tipo de diseño del listado.</td><td>cadena</td></tr><tr><td><code>precio</code></td><td>El precio del producto en la moneda especificada.</td><td>flotante</td></tr><tr><td><code>title</code></td><td>El título del producto.</td><td>cadena</td></tr><tr><td><code>token</code></td><td>El token del producto.</td><td>cadena</td></tr><tr><td><code>calificación</code> (opcional)</td><td>La valoración media del usuario del producto, normalmente sobre 5.</td><td>entero</td></tr><tr><td><code>moneda</code></td><td>El código de moneda del precio del producto.</td><td>cadena</td></tr><tr><td><code>entrega</code></td><td>Detalles de entrega, incluida la fecha estimada de entrega y la política de devoluciones.</td><td>cadena</td></tr><tr><td><code>comerciante</code> (opcional)</td><td>Un objeto que contiene detalles sobre el comerciante que vende el producto.</td><td>objeto</td></tr><tr><td><code>merchant.name</code></td><td>El nombre del comerciante.</td><td>cadena</td></tr><tr><td><code>cadena_de_precio</code></td><td>El precio del producto como una cadena, incluido el símbolo de la moneda.</td><td>cadena</td></tr><tr><td><code>miniatura</code></td><td>La URL de la imagen en miniatura del producto.</td><td>cadena</td></tr><tr><td><code>id_del_producto</code></td><td>Un identificador único para el producto.</td><td>cadena</td></tr><tr><td><code>pos_overall</code></td><td>La posición general del producto en los resultados de búsqueda.</td><td>entero</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></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-search.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.
