> 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/pt-br/mecanismos-de-busca/google/shopping/shopping-product.md).

# Produto do Shopping

A `google_shopping_product` fonte recupera informações detalhadas do produto (título, descrição, preços, vendedores, itens relacionados, avaliações etc.) do Google Shopping usando um **token do produto** obtido de `google_shopping_search` ([aqui](/api-targets/pt-br/mecanismos-de-busca/google/shopping/shopping-search.md)) ou `google_search`.

## **Exemplos de requisição**

No exemplo de código abaixo, fazemos uma solicitação para recuperar a página do produto de um produto do Google Shopping usando um 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:** A `query` o parâmetro deve conter um token válido gerado por meio do `google_shopping_search` [source](/api-targets/pt-br/mecanismos-de-busca/google/shopping/shopping-search.md).
{% endhint %}

Usamos o método de integração síncrona [**Realtime**](/products/pt-br/web-scraper-api/integration-methods/realtime.md) em nossos exemplos. Se você quiser usar [**Proxy Endpoint**](/products/pt-br/web-scraper-api/integration-methods/proxy-endpoint.md) ou assíncrona [**Push-Pull**](/products/pt-br/web-scraper-api/integration-methods/push-pull.md) integração, consulte a [**métodos de integração**](/products/pt-br/web-scraper-api/integration-methods.md) seção.

## Valores dos parâmetros da solicitação

### Genérico

Opções básicas de configuração e personalização para extrair páginas de produtos do Google Shopping.

<table><thead><tr><th width="222">Parâmetro</th><th width="330.3333333333333">Descrição</th><th>Valor padrão</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><strong><code>source</code></strong></mark></td><td>Define o scraper.</td><td><code>google_shopping_product</code></td></tr><tr><td><mark style="color:padrão;background-color:green;"><strong><code>query</code></strong></mark></td><td>O token do produto de <code>google_shopping_search</code> ou <code>google_search</code></td><td>-</td></tr><tr><td><code>render</code></td><td>Habilita a renderização de JavaScript quando definido como <code>html</code>. <strong>Obrigatório</strong> para receber resultados adicionais de preços da seção "More stores". <a href="/spaces/OBEE5GAZ3BuoLyZVZDxR/pages/3233bca1879be403b915f4b370f405d36a5941e9#javascript-rendering"><strong>Mais informações</strong></a><strong>.</strong></td><td>-</td></tr><tr><td><code>parse</code></td><td>Retorna dados analisados quando definido como <code>true</code>. Explore a saída <a href="#output-data-dictionary"><strong>dicionário de dados</strong></a>.</td><td><code>false</code></td></tr><tr><td><code>callback_url</code></td><td>URL do seu endpoint de callback. <a href="/spaces/OBEE5GAZ3BuoLyZVZDxR/pages/f8ca26d94a776244a1a6f4d756ea5f2840b96d85"><strong>Mais informações</strong></a></td><td>-</td></tr><tr><td><code>user_agent_type</code></td><td>Tipo de dispositivo e navegador. A lista completa pode ser encontrada <a href="/spaces/OBEE5GAZ3BuoLyZVZDxR/pages/8bd3ad6c17b2bc99727ff7015e9ec2fe3745e22c"><strong>aqui</strong></a>.</td><td><code>desktop</code></td></tr></tbody></table>

&#x20;   \- parâmetro obrigatório

### Localização

Adapte os resultados para localidades geográficas, domínios e idiomas específicos.

{% hint style="warning" %}
**Observação:** Parâmetros de localização (`gl` e `hl`) agora estão incorporados ao token do produto. Para recuperar `google_shopping_products` dados correspondentes ao resultado original da pesquisa, recomendamos deixar esses campos vazios, a menos que substituições sejam intencionalmente necessárias.&#x20;
{% endhint %}

<table><thead><tr><th width="218">Parâmetro</th><th width="336.3333333333333">Descrição</th><th>Valor padrão</th></tr></thead><tbody><tr><td><code>geo_location</code></td><td>A localização geográfica para a qual o resultado deve ser adaptado. Usar este parâmetro corretamente é extremamente importante para obter os dados corretos. Para mais informações, leia sobre nossas <code>geo_location</code> estruturas de parâmetros <a href="/spaces/OBEE5GAZ3BuoLyZVZDxR/pages/97e9eae2fb35538ed9515ec3ade8adafbcf468e4#google"><strong>aqui</strong></a><strong>.</strong></td><td>-</td></tr><tr><td><code>locale</code></td><td><code>Accept-Language</code> valor do cabeçalho para mudanças no idioma da interface. <a href="/spaces/OBEE5GAZ3BuoLyZVZDxR/pages/8f87e4b64bbb69f35a75da02cf71929fb386f857#locale-1"><strong>Mais informações</strong></a>.</td><td>-</td></tr></tbody></table>

## Dados estruturados

Abaixo você encontra um **exemplo de saída estruturada** para `google_shopping_product`.

{% file src="/files/066924219aa931e8e776309092706733944407ab" %}

## Dicionário de dados de saída

**Exemplo de HTML**

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

#### Estrutura JSON

A tabela abaixo apresenta uma lista detalhada de cada elemento da página do produto que analisamos, juntamente com sua descrição e tipo de dado. A tabela também inclui alguns metadados.

<table><thead><tr><th width="247.11328125">Chave</th><th width="384">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>url</code></td><td>A URL da página do produto no Google Shopping.</td><td>texto</td></tr><tr><td><code>title</code> (opcional) </td><td>O título do anúncio do produto.</td><td>texto</td></tr><tr><td><code>description</code></td><td>Uma descrição detalhada do produto.</td><td>texto</td></tr><tr><td><code>images</code></td><td>Um objeto contendo imagens do produto.</td><td>objeto</td></tr><tr><td><code>images.full_size</code></td><td>Uma lista de URLs para imagens em tamanho real do produto.</td><td>lista</td></tr><tr><td><code>images.thumbnails</code></td><td>Uma lista de URLs para imagens em miniatura do produto.</td><td>lista</td></tr><tr><td><code>pricing</code></td><td>Uma lista contendo todas as informações de preços online.</td><td>lista</td></tr><tr><td><code>reviews</code></td><td>Um objeto contendo informações de avaliações. (somente EUA)</td><td>objeto</td></tr><tr><td><code>variants</code></td><td>Uma lista de objetos contendo variantes do produto. (cores, tamanhos etc.)</td><td>lista</td></tr><tr><td><code>related_items</code></td><td>Uma lista de objetos contendo itens relacionados.</td><td>lista</td></tr><tr><td><code>specifications</code></td><td>Uma lista de objetos contendo especificações do produto.</td><td>lista</td></tr><tr><td><code>parse_status_code</code></td><td>O código de status do trabalho de análise. Você pode ver os códigos de status do 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>aqui</strong></a>.</td><td>inteiro</td></tr><tr><td><code>created_at</code></td><td>O timestamp em que o trabalho de scraping foi criado.</td><td>carimbo de data/hora</td></tr><tr><td><code>updated_at</code></td><td>O timestamp em que o trabalho de scraping foi concluído.</td><td>carimbo de data/hora</td></tr><tr><td><code>status_code</code></td><td>O código de status do trabalho de scraping. Você pode ver os códigos de status do 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>aqui</strong></a>.</td><td>inteiro</td></tr><tr><td><code>job_id</code></td><td>O ID do trabalho associado ao trabalho de scraping.</td><td>texto</td></tr></tbody></table>

{% hint style="info" %}
Nas seções a seguir, os trechos de código JSON analisados são abreviados quando há mais de um item disponível para o tipo de resultado.
{% endhint %}

### Preços

Um objeto contendo informações de preços do produto.

<figure><img src="/files/4acc82ae596ada5b0d1adcb83773708ebf9a910e" 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">Chave (pricing[])</th><th width="375">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>online</code></td><td>Uma lista de objetos contendo detalhes de preços do produto.</td><td>lista</td></tr><tr><td><code>online.price</code></td><td>O preço do produto na moeda especificada.</td><td>decimal</td></tr><tr><td><code>online.seller</code></td><td>O nome do vendedor ou comerciante que oferece o produto.</td><td>texto</td></tr><tr><td><code>online.details</code></td><td>Detalhes adicionais sobre o produto e a compra, como políticas de entrega e devolução.</td><td>texto</td></tr><tr><td><code>online.currency</code></td><td>O código da moeda para o preço do produto.</td><td>texto</td></tr><tr><td><code>online.condition</code></td><td>A condição do produto.</td><td>texto</td></tr><tr><td><code>online.seller_link</code></td><td>A URL para a página do vendedor do produto.</td><td>texto</td></tr><tr><td><code>online.price_shipping</code></td><td>O custo de frete do produto.</td><td>decimal</td></tr></tbody></table>

### Avaliações

Um objeto contendo informações de avaliações e notas do produto.

{% hint style="info" %}
No momento, as avaliações estão disponíveis apenas no locale dos EUA.
{% endhint %}

<figure><img src="/files/18a6df023390f9997d50fa1c5112e54a4cef1d91" alt=""><figcaption></figcaption></figure>

```json
...       
       "reviews": {
    "rating": 4.7,
    "top_review": {
        "text": "Meu computador é um Dell Optiplex 9020, i7-4770, 32 MB, SSD de 500 GB. A placa de três ventoinhas é comprida, e a gaiola do disco rígido precisou ser removida para caber no gabinete do Optiplex. A fonte foi atualizada para 750 watts, o que exigiu um adaptador para a placa-mãe da Dell. Com essas modificações resolvidas, a instalação da placa foi tranquila, mas é preciso usar o Google para encontrar o driver no site da Nvidia. Estou usando esta GPU para animação 3D no Blender. Fiquei muito satisfeito com a velocidade da renderização com ray tracing no EEVEE e no Cycles. Como este é um computador antigo, a CPU do computador nunca fica em 100%, e ainda não consegui levar esta placa ao limite máximo. Não ouço as ventoinhas funcionando, mas, suponho, ainda não a submeti a uma carga alta o suficiente. Ela faz um leve zumbido eletrônico quando está renderizando.\u00a0Menos",
        "author": "Cliente do walmart.com",
        "rating": 5,
        "source": "Avaliado em walmart.com"
      },
      "rating_stars": 4.7,
      "reviews_count": 51,
      "review_count_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">Chave(reviews[])</th><th width="375">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>rating</code></td><td>A avaliação média do produto, geralmente de 5.</td><td>decimal</td></tr><tr><td><code>top_review</code> (opcional)</td><td>Um objeto contendo detalhes da avaliação principal do produto.</td><td>objeto</td></tr><tr><td><code>top_review.text</code> (opcional)</td><td>O conteúdo de texto da avaliação principal</td><td>texto</td></tr><tr><td><code>top_review.title</code> (opcional)</td><td>O título da avaliação principal.</td><td>texto</td></tr><tr><td><code>top_review.author</code> (opcional)</td><td>O autor da avaliação principal.</td><td>texto</td></tr><tr><td><code>top_review.rating</code> (opcional)</td><td>A nota dada pelo autor da avaliação principal, geralmente de 5.</td><td>decimal</td></tr><tr><td><code>top_review.source</code> (opcional)</td><td>A fonte ou site onde a avaliação principal foi publicada.</td><td>texto</td></tr><tr><td><code>rating_stars</code></td><td>A nota média do produto, geralmente de 5 estrelas.</td><td>decimal</td></tr><tr><td><code>reviews_count</code> (opcional)</td><td>O número total de avaliações do produto.</td><td>inteiro</td></tr><tr><td><code>review_count_by_stars</code></td><td>Um objeto contendo a contagem de avaliações para cada nota em estrelas.</td><td>objeto</td></tr><tr><td><code>review_count_by_stars.url</code> (opcional)</td><td>Um objeto contendo detalhes das avaliações de X estrelas.</td><td>texto</td></tr><tr><td><code>review_count_by_stars.reviews_count</code></td><td>A contagem de avaliações de X estrelas.</td><td>inteiro</td></tr></tbody></table>

### Itens relacionados (Mais opções)

Um array de objetos contendo itens relacionados ao produto-alvo.

<figure><img src="/files/96e77e550493766ca0787a1a11d89e5f02886246" 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": "Placa de vídeo NVIDIA GeForce RTX 5070 12GB GDDR7",
            "currency": "USD",
            "reviews_count": 228
          },
...
        ],
        "title": "Mais opções"
     }
],
...
```

<table><thead><tr><th width="265">Chave(related_items[])</th><th width="350">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Um array de objetos contendo detalhes de cada item relacionado.</td><td>lista</td></tr><tr><td><code>items.url</code></td><td>A URL para a página do produto relacionado.</td><td>texto</td></tr><tr><td><code>items.image</code></td><td>A URL da imagem do produto relacionado.</td><td>texto</td></tr><tr><td><code>items.price</code></td><td>O preço do produto relacionado na moeda especificada.</td><td>decimal</td></tr><tr><td><code>items.title</code> (opcional)</td><td>O título do anúncio do produto relacionado.</td><td>texto</td></tr><tr><td><code>items.rating</code> (opcional)</td><td>A avaliação média dos usuários do produto relacionado, geralmente de 5.</td><td>inteiro</td></tr><tr><td><code>items.store</code> (opcional)</td><td>O nome da loja ou vendedor que oferece o produto relacionado.</td><td>texto</td></tr><tr><td><code>items.currency</code></td><td>O código da moeda para o preço do produto.</td><td>texto</td></tr><tr><td><code>items.reviews_count</code></td><td>O número total de avaliações do produto relacionado.</td><td>inteiro</td></tr><tr><td><code>title</code></td><td>O título ou cabeçalho da seção de itens relacionados</td><td>texto</td></tr></tbody></table>

### Especificações

Um array de objetos contendo detalhes das especificações do produto.

<figure><img src="/files/07aabee833389f57f60f3c8affb7b6fab644637b" alt=""><figcaption></figcaption></figure>

```json
...
"specifications": [
    {
        "items": [
          {
            "title": "Fabricante",
            "value": "PNY"
          },
          {
            "title": "Saída",
            "value": "HDMI, DisplayPort"
          },
          {
            "title": "Interface",
            "value": "PCI Express"
          },
          {
            "title": "Marca",
            "value": "PNY"
          },
...
        ],
        "section_title": "atributos"
      }
],
...
```

<table><thead><tr><th width="220">Chave (specifications[])</th><th width="367">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items.title</code></td><td>O título da especificação.</td><td>texto</td></tr><tr><td><code>items.value</code></td><td>O valor da especificação.</td><td>texto</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/pt-br/mecanismos-de-busca/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.
