# Pesquisa de compras

O `google_shopping_search` source retorna resultados de pesquisa do Google Shopping. Cada resultado renderizado inclui um **token de produto** que é necessário para coletar dados do produto usando o `google_shopping_product` [source](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/google/shopping/shopping-product).

## Exemplos de requisição

No exemplo de código abaixo, buscamos por "Nvidia RTX" para obter o produto `token` na resposta.

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


# Estruturar o payload.
payload = {
    "source": "google_shopping_search",
    "query": "nvidia rtx",
    "render": "html",
    "parse": True
}

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

# Imprimir a resposta formatada no 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:** Apenas jobs parseados renderizados retornarão tokens de produto.
{% endhint %}

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

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

### Genérico

<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_search</code></td></tr><tr><td><mark style="background-color:green;"><strong><code>query</code></strong></mark></td><td>A palavra-chave ou frase a ser pesquisada.</td><td>-</td></tr><tr><td><mark style="color:padrão;background-color:green;"><strong><code>render</code></strong></mark></td><td>Habilita a renderização JavaScript. Deve ser definido como <code>html</code> para obter <strong>tokens</strong>. <a href="../../../features/js-rendering-and-browser-control/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 o <a href="#output-data-dictionary"><strong>dicionário de dados de saída</strong></a>.</td><td><code>false</code></td></tr><tr><td><code>callback_url</code></td><td>URL para seu endpoint de callback. <a href="../../../../integration-methods/push-pull#callback"><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="../../../features/http-context-and-job-management/user-agent-type"><strong>aqui</strong></a>.</td><td><code>desktop</code></td></tr></tbody></table>

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

### Localização

<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 certos. Para mais informações, leia sobre nossas <code>geo_location</code> estruturas de parâmetro <a href="../../../../features/localization/serp-localization#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 que altera o idioma da interface da página de pesquisa do Google. <a href="../../../../features/localization/domain-locale-results-language#locale-1"><strong>Mais informações</strong></a>.</td><td>-</td></tr><tr><td><code>context</code>:<br><code>results_language</code></td><td>Idioma dos resultados. A lista de idiomas do Google suportados pode ser encontrada <a href="../../../../features/localization/domain-locale-results-language#results-language"><strong>aqui</strong></a>.</td><td>-</td></tr></tbody></table>

{% hint style="warning" %}
**Nota:** certifique-se de que seus parâmetros de localização para `google_shopping_product` e `google_shopping_search` as fontes sejam os mesmos (nenhum se não definido). O desalinhamento regional entre as fontes pode resultar em dados incompletos ou imprecisos.
{% endhint %}

### Paginação

Controles para gerenciar a paginação e a recuperação dos resultados de pesquisa.

<table><thead><tr><th width="222">Parâmetro</th><th width="350.3333333333333">Descrição</th><th width="167">Valor Padrão</th></tr></thead><tbody><tr><td><code>start_page</code></td><td>Número da página inicial.</td><td><code>1</code></td></tr><tr><td><code>pages</code></td><td>Número de páginas a serem recuperadas.</td><td><code>1</code></td></tr></tbody></table>

### Parâmetros de contexto

Opções avançadas para adaptar o contexto de pesquisa ou controles para requisitos especializados. Parâmetros de contexto devem ser adicionados a um array context conforme mostrado abaixo:

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

<table><thead><tr><th width="222">Parâmetro</th><th width="350.3333333333333">Descrição</th><th>Valor Padrão</th></tr></thead><tbody><tr><td><code>context</code>:<br><code>sort_by</code></td><td>Ordena a lista de produtos por um critério dado. <code>r</code> aplica a ordenação padrão do Google, <code>rv</code> - por avaliação (review), <code>p</code> - por preço ascendente, <code>pd</code> - por preço descendente.</td><td><code>r</code></td></tr><tr><td><code>context</code>:<br><code>min_price</code></td><td>Preço mínimo dos produtos para filtrar.</td><td>-</td></tr><tr><td><code>context</code>:<br><code>max_price</code></td><td>Preço máximo dos produtos para filtrar.</td><td>-</td></tr><tr><td><code>context</code>:<br><code>nfpr</code></td><td><code>true</code> desativará a autocorreção ortográfica.</td><td>-</td></tr></tbody></table>

## Dados estruturados

Abaixo você pode encontrar um **exemplo de saída estruturada** para `google_shopping_search`.

{% file src="<https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FwdPGjAxSYXIVy6fxCRhR%2Fgoogle_shopping_search-output.json?alt=media&token=28f851cf-527c-4619-a81a-c8f5fa6478fa>" %}

## Dicionário de dados de saída

**Exemplo de HTML**

<figure><img src="https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FFVGJfaQ1B7tj2WcvNPWO%2FScreenshot%202025-10-15%20at%2015.24.16.png?alt=media&#x26;token=5e390c87-35ad-4d49-81fc-eb998643371f" alt=""><figcaption></figcaption></figure>

#### Estrutura JSON

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

<table><thead><tr><th width="240">Chave</th><th width="373">Descrição</th><th width="143">Tipo</th></tr></thead><tbody><tr><td><code>url</code></td><td>A URL da página de pesquisa do Google Shopping para a consulta.</td><td>string</td></tr><tr><td><code>chave e indicando o número de resultados orgânicos por página usando a</code></td><td>O número da página atual dos resultados de pesquisa.</td><td>integer</td></tr><tr><td><code>resultados</code></td><td>Um objeto contendo resultados de pesquisa detalhados.</td><td>object</td></tr><tr><td><code>pla</code> (opcional)</td><td>Uma lista de anúncios de listagem de produtos com seus respectivos detalhes.</td><td>array</td></tr><tr><td><code>filters</code> (opcional)</td><td>Lista de vários filtros.</td><td>array</td></tr><tr><td><code>organic</code></td><td>Uma lista de listagens não pagas com seus respectivos detalhes.</td><td>array</td></tr><tr><td><code>search_information</code></td><td>Uma lista de detalhes para a consulta de pesquisa submetida.</td><td>object</td></tr><tr><td><code>search_information.query</code></td><td>O termo de pesquisa original.</td><td>string</td></tr><tr><td><code>search_information.showing_results_for</code></td><td>O termo de pesquisa para o qual os resultados estão sendo exibidos. `query` e `showing_results_for` podem diferir se o Google corrigiu automaticamente o termo de pesquisa fornecido.</td><td>string</td></tr><tr><td><code>last_visible_page</code></td><td>Valor que identifica o número máximo de página visível na página de resultados da consulta de pesquisa. (-1 quando o carregamento de mais resultados é iniciado pelo rolamento).</td><td>integer</td></tr><tr><td><code>parse_status_code</code></td><td>O código de status do trabalho de parsing. 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>integer</td></tr><tr><td><code>created_at</code></td><td>O timestamp quando o trabalho de scraping foi criado.</td><td>timestamp</td></tr><tr><td><code>updated_at</code></td><td>O timestamp quando o trabalho de scraping foi finalizado.</td><td>timestamp</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>integer</td></tr><tr><td><code>job_id</code></td><td>O ID do job associado ao trabalho de scraping.</td><td>string</td></tr></tbody></table>

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

### Anúncios de listagem pagos

Um array de objetos contendo Product Listing Ads (PLA) para o produto. (Exemplo 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">Chave (pla)</th><th width="434">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>itens</code></td><td>Todos os PLAs disponíveis na página.</td><td>array</td></tr><tr><td><code>pos</code></td><td>Um indicador que denota a posição de um determinado item entre os resultados PLA.</td><td>integer</td></tr><tr><td><code>url</code></td><td>A URL do produto.</td><td>string</td></tr><tr><td><code>price</code></td><td>O preço do produto no anúncio de listagem.</td><td>string</td></tr><tr><td><code>title</code></td><td>O título do produto no anúncio de listagem.</td><td>string</td></tr><tr><td><code>rating</code></td><td>A avaliação (rating) do produto.</td><td>integer</td></tr><tr><td><code>seller</code></td><td>O vendedor do produto no anúncio de listagem.</td><td>string</td></tr><tr><td><code>thumbnail</code></td><td>A URL da imagem em miniatura do produto.</td><td>string</td></tr><tr><td><code>reviews_count</code></td><td>A contagem de avaliações do produto.</td><td>opcional</td></tr><tr><td><code>pos_overall</code></td><td>Uma indicação da posição do resultado dentro do SERP.</td><td>integer</td></tr></tbody></table>

### Filtros

<figure><img src="https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FbQA38FgDLSPjyisdPCfx%2FScreenshot%202025-10-15%20at%2016.29.04.png?alt=media&#x26;token=fb4173e0-f084-4371-addd-640228026a35" 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">Chave (filters)</th><th width="402">Descrição</th><th width="113">Tipo</th></tr></thead><tbody><tr><td><code>name</code></td><td>O nome da categoria do filtro</td><td>string</td></tr><tr><td><code>values</code></td><td>Opções de filtro disponíveis dentro da categoria.</td><td>array</td></tr><tr><td><code>values.url</code></td><td>A URL que representa a consulta de pesquisa filtrada para esta opção de filtro.</td><td>string</td></tr><tr><td><code>values.value</code></td><td>O nome exibido da opção de filtro</td><td>string</td></tr><tr><td><code>values.merchant_id</code> (opcional)</td><td>O ID do comerciante associado a esta opção de filtro.</td><td>string</td></tr></tbody></table>

### Organic

Um array de objetos contendo detalhes dos resultados de pesquisa orgânicos.

<figure><img src="https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FzYqsLANm9HZ9DMfeVQNc%2FScreenshot%202025-10-15%20at%2016.34.10.png?alt=media&#x26;token=2de4c379-ddac-4648-a42d-a6f6b9957662" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FsmE3qjM6CkyUsWlZIVBK%2FScreenshot%202025-10-15%20at%2016.26.24.png?alt=media&#x26;token=9ee312a4-eaf0-4056-8086-53247a3337da" 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">Chave (organic)</th><th width="360">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>pos</code></td><td>A posição do produto nos resultados de pesquisa.</td><td>integer</td></tr><tr><td><code>url</code></td><td>A URL da página do produto.</td><td>string</td></tr><tr><td><code>tipo</code></td><td>O tipo de layout de listagem.</td><td>string</td></tr><tr><td><code>price</code></td><td>O preço do produto na moeda especificada.</td><td>float</td></tr><tr><td><code>title</code></td><td>O título do anúncio do produto.</td><td>string</td></tr><tr><td><code>token</code></td><td>O token do produto.</td><td>string</td></tr><tr><td><code>rating</code> (opcional)</td><td>A avaliação média do usuário do produto, tipicamente em uma escala de 5.</td><td>integer</td></tr><tr><td><code>currency</code></td><td>O código da moeda do preço do produto.</td><td>string</td></tr><tr><td><code>delivery</code></td><td>Detalhes de entrega, incluindo data estimada de entrega e política de devolução.</td><td>string</td></tr><tr><td><code>merchant</code> (opcional)</td><td>Um objeto contendo detalhes sobre o comerciante que vende o produto.</td><td>object</td></tr><tr><td><code>merchant.url</code></td><td>A URL da página do comerciante.</td><td>string</td></tr><tr><td><code>merchant.name</code></td><td>O nome do comerciante.</td><td>string</td></tr><tr><td><code>price_str</code></td><td>O preço do produto como string, incluindo o símbolo da moeda.</td><td>string</td></tr><tr><td><code>thumbnail</code></td><td>A URL da imagem em miniatura do produto.</td><td>string</td></tr><tr><td><code>product_id</code></td><td>Um identificador único para o produto.</td><td>string</td></tr><tr><td><code>pos_overall</code></td><td>A posição geral do produto nos resultados de pesquisa.</td><td>integer</td></tr><tr><td><code>reviews_count</code> (opcional)</td><td>O número total de avaliações do produto.</td><td>integer</td></tr></tbody></table>
