# AI Overviews

O `google_search` e `google_ads` as fontes podem retornar AI Overviews dos resultados do Google Search em todas as regiões globais suportadas. `ai_overviews` array de resultados suporta vários blocos de IA em uma única resposta, incluindo seções como “As pessoas também perguntam” e “Coisas que você precisa saber.”

Para maximizar a chance de receber conteúdo de AI Overviews totalmente renderizado, você deve incluir os seguintes parâmetros:

| Parâmetro         | Valor                           |
| ----------------- | ------------------------------- |
| `source`          | `google_search` ou `google_ads` |
| `render`          | `html`                          |
| `user_agent_type` | `desktop` ou `mobile`           |

Usar esses parâmetros também permite receber tanto a resposta geral quanto o conteúdo de AI Overviews em uma única solicitação.

{% hint style="danger" %}
O Google gera esse conteúdo dinamicamente ou carrega uma versão em cache, então as respostas geradas por IA podem variar ao longo do tempo, mesmo com parâmetros idênticos.
{% endhint %}

{% hint style="success" %}
Explorar[ **dicionário de dados**](#data-dictionary) para alguns dos recursos SERP de AI Overviews.
{% endhint %}

## Disponibilidade regional de AI Overviews

O Google AI Overviews está disponível na maioria dos países, com algumas exceções. Atualmente, os maiores países excluídos são:

* França
* Mônaco
* China
* Irã
* Sudão
* Síria
* Cuba
* Coreia do Norte

{% hint style="warning" %}
O recurso Google AI Overviews está sendo lançado continuamente, com mais países incluídos ao longo do tempo.
{% endhint %}

## Exemplos de solicitação

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

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
        "source": "google_search",
        "query": "how to sell on amazon",
        "render": "html",
        "user_agent_type": "desktop",
        "parse": true
        
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint

# Updated payload.
payload = {
    'source': 'google_search',
    'query': 'how to sell on amazon',
    'render': 'html',
    'user_agent_type': 'desktop',
}

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

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

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = [
    'source' => 'google_search',
    'query' => 'how to sell on amazon',
    'render' => 'html',
    'user_agent_type' => 'desktop',
];

$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, "user" . ":" . "pass1");

$headers = [];
$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="HTTP" %}

```http
https://realtime.oxylabs.io/v1/queries?source=google_search&query=Emporio%20Armani%20EA3192&render=html&user_agent_type=desktop&access_token=12345abcde
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "google_search",
    "query": "how to sell on amazon",
    "render": "html",
    "user_agent_type": "desktop"
}
```

{% endtab %}
{% endtabs %}

Usamos o método de integração síncrono [**Realtime**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/realtime) 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 a integração assíncrona [**Push-Pull**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods/push-pull) consulte a seção de [**métodos de integração**](https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/integration-methods) .

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

### Genérico

Configuração básica e opções de personalização para raspar resultados de pesquisa da Web do Google com AI Overviews.

<table><thead><tr><th width="191">Parâmetro</th><th width="377.3333333333333">Descrição</th><th>Valor padrão</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><strong>source</strong></mark></td><td>Define o scraper. Use <code>google_search</code> ou <code>google_ads</code>.</td><td><code>google_search</code></td></tr><tr><td><mark style="background-color:green;"><strong>query</strong></mark></td><td>A palavra-chave ou frase a ser pesquisada.</td><td>-</td></tr><tr><td><code>render</code></td><td>Ativa a renderização de JavaScript quando definido como <code>html</code>. <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>context</code>:<br><code>expand_aio</code></td><td>Defina como <code>true</code> para expandir o Google AI Overviews (renderização de JavaScript ativada).</td><td><code>false</code></td></tr><tr><td><code>parse</code></td><td>Retorna dados parseados quando definido como <code>true</code>.</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. Use <code>desktop</code> ou <code>mobile</code>.</td><td><code>desktop</code></td></tr></tbody></table>

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

#### Operadores de pesquisa avançada do Google

Ao raspar, pode ser útil combinar operadores avançados de pesquisa do Google com sua consulta. Isso permite personalizar o escopo da pesquisa, garantindo que os resultados sejam mais relevantes e focados. Explore esses comandos especiais [**aqui**](https://ahrefs.com/blog/google-advanced-search-operators/) e [**aqui**](https://www.semrush.com/kb/831-how-to-use-google-advanced-search-operators). Veja o exemplo de consulta abaixo.

```json
{
    "source": "google_search",
    "query": "iphone 15 launch inurl:apple", 
    "render": "html",
    "user_agent_type": "desktop"
}
```

### Localização

Adapte os resultados da pesquisa para locais geográficos e idiomas específicos.

<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>geo_location</code></td><td>A localização geográfica para a qual o resultado deve ser adaptado. Usar esse parâmetro corretamente é extremamente importante para obter os dados certos. Para mais informações, leia sobre nossas <code>geo_location</code> estruturas de parâmetros <a href="../../../features/localization/serp-localization#google"><strong>sugeridas aqui.</strong></a></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 web da sua 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>.<br>Saiba como usar parâmetros de contexto <a href="#context-parameters"><strong>aqui</strong></a>.</td><td>-</td></tr></tbody></table>

### Paginação

Controles para gerenciar a paginação e a obtençã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 recuperar.</td><td><code>1</code></td></tr><tr><td><code>limit</code></td><td>Número de resultados a recuperar em cada página.</td><td><code>10</code></td></tr><tr><td><code>context</code>:<code>limit_per_page</code></td><td>Raspe várias páginas usando o mesmo endereço IP e sessão (conjunto de cookies). Ao especificar os números das páginas em um array JSON com a chave <code>page</code> e indicar o número de resultados orgânicos por página usando a chave <code>limit</code> você pode minimizar a chance de ver resultados orgânicos sobrepostos entre as páginas (por exemplo, o último resultado orgânico da primeira página ser o mesmo que o primeiro resultado orgânico da segunda página). <a href="#request-sample"><strong>Veja o exemplo</strong></a><strong>.</strong></td><td>-</td></tr></tbody></table>

#### Suporte a rolagem contínua

A Web Scraper API oferece suporte total à rolagem contínua do Google Search. Ela detecta automaticamente layouts de rolagem contínua, carregando com eficiência os resultados orgânicos solicitados sem necessidade de parâmetros extras.

#### Limite por página

{% hint style="warning" %}
Devido a mudanças recentes nos limites do Google, ajustamos o comportamento da Web Scraper API. O máximo de resultados por página corresponderá à saída orgânica do Google, que normalmente é de 10 resultados.
{% endhint %}

Para usar este recurso, inclua um array JSON com objetos JSON contendo os seguintes dados:

<table><thead><tr><th width="142">Parâmetro</th><th width="446.3333333333333">Descrição</th><th>Exemplo</th></tr></thead><tbody><tr><td><code>page</code></td><td>O número da página que você deseja raspar. Qualquer valor inteiro maior que <code>0</code> funcionará</td><td><code>1</code></td></tr><tr><td><code>limit</code></td><td>O número de resultados na página em questão. Qualquer valor inteiro entre <code>1</code> e <code>100</code> (inclusive) funcionará.</td><td><code>90</code></td></tr></tbody></table>

#### Exemplo de solicitação

```json
{
    "source": "google_search",
    "query": "how to sell on amazon",
    "render": "html",
    "user_agent_type": "dekstop",
    "parse": true,
    "context": [
        {
            "key": "limit_per_page",
            "value": [
                {"page": 1, "limit": 10},
                {"page": 2, "limit": 90}
                    ]
        }]
}
```

### Filtragem

Opções para filtrar e refinar os resultados da pesquisa com base em vários critérios. Saiba como usar parâmetros de contexto [**aqui**](#context-parameters).

<table><thead><tr><th width="245">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>filter</code></td><td>Definir o valor deste parâmetro como <code>0</code> permite ver resultados que, de outra forma, seriam excluídos por similaridade com outros resultados.</td><td><code>1</code></td></tr><tr><td><code>context</code>:<br><code>safe_search</code></td><td>Pesquisa segura. Defina como <code>true</code> para ativá-la.</td><td><code>false</code></td></tr><tr><td><code>context</code>:<br><code>udm</code></td><td><code>udm</code> o parâmetro permite alternar entre diferentes abas de pesquisa, como imagens, locais ou vídeos, para personalizar o tipo de resultados exibidos. Encontre os valores aceitos <a href="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FeoShpvYuZlb4hGpCIXNG%2Fudm_values%20(eu%2Bus).json?alt=media&#x26;token=a6b77fab-b170-478c-b06f-b8fbf7ab64c7"><strong>aqui</strong></a>.</td><td>-</td></tr><tr><td><code>context</code>:<br><code>tbm</code></td><td>a ser correspondido ou <code>tbm</code> parâmetro. Os valores aceitos são: <code>app</code>, <code>blg</code>, <code>bks</code>, <code>dsc</code>, <code>isch</code>, <code>nws</code>, <code>pts</code>, <code>plcs</code>, <code>rcp</code>, <code>lcl</code></td><td>-</td></tr><tr><td><code>context</code>:<br><code>tbs</code></td><td>Este parâmetro funciona como um contêiner para parâmetros mais obscuros do Google, como limitar/classificar resultados por data, além de outros filtros, alguns dos quais dependem do parâmetro <code>tbm</code> (ex.: <code>tbs=app_os:1</code> está disponível apenas com o valor <code>tbm</code> do parâmetro <code>app</code>). Mais informações <a href="https://stenevang.wordpress.com/2013/02/22/google-advanced-power-search-url-request-parameters/"><strong>aqui</strong></a>.</td><td>-</td></tr></tbody></table>

{% hint style="warning" %}
`udm` e `tbm` parâmetros de contexto não podem ser usados juntos em uma única solicitação de raspagem; selecione apenas um. Usar ambos simultaneamente pode levar a conflitos ou comportamento inesperado.
{% endhint %}

### Outro

Configurações e controles avançados adicionais para requisitos especializados.

<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>fpstate</code></td><td>Definir o valor de <code>fpstate</code> como <code>aig</code> fará o Google carregar mais apps. Este parâmetro só é útil se usado junto com o parâmetro <code>render</code> .</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><code>false</code></td></tr></tbody></table>

### Parâmetros de contexto

Todos os parâmetros de contexto devem ser adicionados ao array `context` como objetos com pares `key` e `do parâmetro` de, por exemplo:

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

## Estrutura e processamento de dados

### Dicionário de dados

Todas as chaves disponíveis no recurso SERP de AI Overviews estão definidas na tabela abaixo:

<table><thead><tr><th width="249">Chave (results.ai_overview)</th><th width="383">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>answer_text</code></td><td>Informações gerais sobre o termo de consulta do Google Search.</td><td>array</td></tr><tr><td><code>bullet_list</code></td><td>Indica informações sobre itens renderizados em uma lista com marcadores dentro do recurso SERP de AI Overviews.</td><td>array</td></tr><tr><td><code>products</code></td><td>Uma lista de produtos com seus respectivos detalhes.</td><td>object</td></tr><tr><td><code>source_panel</code></td><td>Uma lista de fontes usadas para gerar o resultado do AI Overviews no recurso SERP do Google.</td><td>object</td></tr><tr><td><code>additional_questions</code></td><td>Uma lista de perguntas adicionais com seus respectivos detalhes.</td><td>object</td></tr><tr><td><code>recipes</code></td><td>Uma lista de receitas com seus respectivos detalhes.</td><td>object</td></tr><tr><td><code>info_list</code></td><td>Uma lista de informações mais frequentemente usadas para representar etapas de um processo relevante para a consulta de pesquisa.</td><td>array</td></tr><tr><td><code>pos_overall</code></td><td>Uma indicação da posição do resultado do recurso SERP de AI Overviews entre todos os resultados SERP disponíveis do Google.</td><td>integer</td></tr></tbody></table>

### Trabalhando com vários AI Overviews

Como os AI Overviews agora são retornados como um array, você precisa iterar por eles:

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

```javascript
// Processando todos os AI Overviews em uma resposta
response.results.ai_overviews.forEach((aiOverview, index) => {
  console.log(`Processando AI Overview #${index + 1}`);
  // Processar componentes individuais
  if (aiOverview.answer_text) {
    // Tratar o texto da resposta
  }
  if (aiOverview.bullet_list) {
    // Tratar listas com marcadores
  }
  // E assim por diante...
});
```

{% endtab %}

{% tab title="Python" %}

```python
# Processando todos os AI Overviews em uma resposta
for index, ai_overview in enumerate(response['results']['ai_overviews']):
    print(f"Processando AI Overview #{index + 1}")
    # Processar componentes individuais
    if 'answer_text' in ai_overview:
        answer_texts = ai_overview['answer_text']
        for answer in answer_texts:
            # Processar cada texto de resposta
            if 'text' in answer:
                for text_item in answer['text']:
                    print(f"Texto da resposta: {text_item}")
    
    if 'bullet_list' in ai_overview:
        bullet_lists = ai_overview['bullet_list']
        for bullet_list in bullet_lists:
            if 'list_title' in bullet_list:
                print(f"Título da lista: {bullet_list['list_title']}")
            if 'points' in bullet_list:
                for point in bullet_list['points']:
                    print(f"- {point}")
    # Continue processando outros elementos...
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// Processando todos os AI Overviews em uma resposta
if (isset($response['results']['ai_overviews']) && is_array($response['results']['ai_overviews'])) {
    foreach ($response['results']['ai_overviews'] as $index => $aiOverview) {
        $indexNumber = $index + 1;
        echo "Processando AI Overview #{$indexNumber}\n";
        
        // Processar texto da resposta
        if (isset($aiOverview['answer_text']) && is_array($aiOverview['answer_text'])) {
            foreach ($aiOverview['answer_text'] as $answer) {
                if (isset($answer['text']) && is_array($answer['text'])) {
                    foreach ($answer['text'] as $textItem) {
                        echo "Texto da resposta: {$textItem}\n";
                    }
                }
            }
        }
        
        // Processar listas com marcadores
        if (isset($aiOverview['bullet_list']) && is_array($aiOverview['bullet_list'])) {
            foreach ($aiOverview['bullet_list'] as $bulletList) {
                if (isset($bulletList['list_title'])) {
                    echo "Título da lista: {$bulletList['list_title']}\n";
                }
                if (isset($bulletList['points']) && is_array($bulletList['points'])) {
                    foreach ($bulletList['points'] as $point) {
                        echo "- {$point}\n";
                    }
                }
            }
        }
        // Continue processando outros elementos...
    }
}
?>
```

{% endtab %}
{% endtabs %}

Na maioria dos casos, haverá apenas um AI Overview, mas seu código deve estar preparado para lidar com várias entradas.

Explore exemplos de resultados de AI Overviews abaixo, categorizados por diferentes consultas de pesquisa: [**Item**](#item), [**Receitas**](#recipe), [**Instrução**](#instruction).

### Item

No exemplo a seguir, foi usada a consulta "Emporio Armani EA3192".

<figure><img src="https://lh7-us.googleusercontent.com/Ecp6t0NHm0ZDg2qopAN4uLilI5onTqfLK8i_GdT_NTeEawPopV-CFGMqHwfi7mX3sTRgD7PnWGks1gsn3yu5Ekmo5tadyQQyMgGpbx0qSwhHlnWSs4RO9_Y7f-0Bww8SIaF4uD9X3z8xO4tIfd948rY" alt=""><figcaption></figcaption></figure>

```json
...
  "ai_overviews": [
    {
      "answer_text": [
        {
          "text": [
            "Emporio Armani é uma marca de luxo conhecida por seus designs atemporais e compromisso com o artesanato italiano.",
            "O Emporio Armani EA3192 é um par de óculos de grau projetado para homens.",
            "Eles têm uma armação retangular feita de plástico leve e hipoalergênico.",
            "As lentes são UV e antirreflexo.",
            "Aqui estão alguns insights das avaliações:",
          ],
          "pos": 1
        }
      ],
      "bullet_list": [
        {
          "list_title": "Prós",
          "points": [
            "Confortável",
            "Marca discreta"
          ],
          "pos": 1
        }
      ],
      "products": {
        "items": [
          {
            "product_name": "Óculos de grau Emporio Armani masculino preto brilhante Tamanho: 53",
            "price": "$163.00",
            "previous_price": null,
            "seller": "Lenscrafters",
            "shipping": "Entrega grátis",
            "url": "https://www.lenscrafters.com/lc-us/emporio-armani/8056597975810?srsltid=AfmBOoqWO55KIJevhQp_c5OAp0JOM_8Uza3_gCvn9S4x4Vz342AUSQewzJI",
            "pos": 1
          }
        ]
      },
      "source_panel": {
        "items": [
          {
            "url": "https://www.italist.com/magazine/what-is-emporio-armani/#:~:text=Emporio%20Armani%20is%20a%20luxury,reinforce%20the%20perception%20of%20luxury.",
            "source": "italist.com",
            "date": "May 5, 2023",
            "title": "O que é Emporio Armani e o Emporio Armani é uma marca de luxo?",
            "pos": 1
          },
        ...
        ]
      },
      "additional_questions": {
        "items": [
          {
           "question": "O Emporio Armani é o mesmo que Giorgio Armani?",
           "pos": 1
          }
        ]
      },
      "pos_overall": 1
    }
  ],
...
```

#### Texto da resposta

<table><thead><tr><th width="273">Chave (results.ai_overviews.answer_text)</th><th width="368">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>text</code></td><td>Uma resposta curta para a consulta do Google Search.</td><td>array</td></tr><tr><td><code>pos</code></td><td>Um indicador que denota a posição de um item entre todos os resultados de resposta de AI Overviews.</td><td>integer</td></tr></tbody></table>

**Lista com marcadores**

<table><thead><tr><th width="268">Chave (results.ai_overviews.bullet_list)</th><th width="364">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>list_title</code></td><td>O título da lista com marcadores.</td><td>string</td></tr><tr><td><code>points</code></td><td>Os itens renderizados na lista com marcadores. Todos os itens são separados por vírgula.</td><td>array</td></tr><tr><td><code>pos</code></td><td>Um indicador que denota a posição de um item entre todos os resultados de lista com marcadores de AI Overviews.</td><td>integer</td></tr></tbody></table>

**Produtos**

<table><thead><tr><th width="271">Chave (results.ai_overviews.products)</th><th width="364">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Uma lista de produtos com seus respectivos detalhes.</td><td>array</td></tr><tr><td><code>items.product_name</code></td><td>O nome do produto.</td><td>string</td></tr><tr><td><code>items.price</code></td><td>O preço atual do produto.</td><td>string</td></tr><tr><td><code>items.previous_price</code></td><td>O preço inicial do produto (se aplicável).</td><td>string</td></tr><tr><td><code>items.seller</code></td><td>O vendedor do produto.</td><td>string</td></tr><tr><td><code>items.shipping</code></td><td>O tipo de frete disponível para o produto.</td><td>string</td></tr><tr><td><code>items.url</code></td><td>A URL do produto.</td><td>string</td></tr><tr><td><code>items.pos</code></td><td>Um indicador que denota a posição de um item entre todos os resultados de produtos de AI Overviews.</td><td>integer</td></tr></tbody></table>

#### Painel de fonte

<table><thead><tr><th width="274">Chave (results.ai_overviews.source_panel)</th><th width="353">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Uma lista de fontes usadas para gerar o resultado do AI Overviews no recurso SERP do Google.</td><td>object</td></tr><tr><td><code>items.url</code></td><td>A URL do site.</td><td>string</td></tr><tr><td><code>items.source</code></td><td>O nome do site.</td><td>string</td></tr><tr><td><code>items.date</code></td><td>A data em que o artigo foi publicado.</td><td>string</td></tr><tr><td><code>items.title</code></td><td>O título do artigo.</td><td>string</td></tr><tr><td><code>items.pos</code></td><td>Um indicador que denota a posição de um item entre todos os resultados do painel de fontes de AI Overviews.</td><td>integer</td></tr></tbody></table>

#### Perguntas adicionais

<table><thead><tr><th width="275">Chave (results.ai_overviews.additional_questions)</th><th width="343">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items.question</code></td><td>Uma lista de perguntas adicionais relevantes, separadas por vírgula, para a consulta de pesquisa original.</td><td>array</td></tr><tr><td><code>items.pos</code></td><td>Um indicador que denota a posição de um item entre todos os resultados de perguntas adicionais de AI Overviews.</td><td>integer</td></tr></tbody></table>

### Receita

No exemplo a seguir, foi usada a consulta "recipe for an apple pie".

<figure><img src="https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FBqo3YSylUPTuTuoo5wPH%2Frecipe_for_an_apple_pie.png?alt=media&#x26;token=fba1b0f9-4ac8-4421-abb8-f35b03e542b1" alt=""><figcaption></figcaption></figure>

```json
...  
 "ai_overviews": [
   {
      "recipes": {
        "items": [
          {
            "description": "Esta receita simples apresenta uma massa caseira, maçãs Granny Smith e especiarias quentes.",
            "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/...",
            "source": "Allrecipes",
            "rating": "4.8",
            "rating_count": "13K",
            "duration": "90 min",
            "url": "https://www.allrecipes.com/recipe/12682/apple-pie-by-grandma-ople/",
            "title": "Apple Pie by Grandma Ople"
          },
...
        ]
      }
    }
  ],
...
```

**Receitas**

<table><thead><tr><th width="234">Chave (results.ai_overviews.recipes)</th><th width="375">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Uma lista de receitas com seus respectivos detalhes.</td><td>array</td></tr><tr><td><code>items.description</code></td><td>Uma breve descrição da receita.</td><td>string</td></tr><tr><td><code>items.image</code></td><td>Uma imagem em miniatura da receita codificada em base64.</td><td>string</td></tr><tr><td><code>items.source</code></td><td>O nome do site onde a receita é publicada.</td><td>string</td></tr><tr><td><code>items.rating</code></td><td>A avaliação da receita.</td><td>string</td></tr><tr><td><code>items.rating_count</code></td><td>O número de avaliações.</td><td>string</td></tr><tr><td><code>items.duration</code></td><td>O tempo necessário para preparar o prato.</td><td>string</td></tr><tr><td><code>items.url</code></td><td>A URL da receita completa.</td><td>string</td></tr><tr><td><code>items.title</code></td><td>O título da receita.</td><td>string</td></tr></tbody></table>

No exemplo a seguir, foi usada a consulta "recipe of a juicy succulent steak".

<figure><img src="https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FnSGAvuTLJoNsEKNxZaa6%2Frecipe_of_a_juicy_succulent_steak.png?alt=media&#x26;token=709025b4-80a5-4a43-8d9f-7429bc4da446" alt=""><figcaption></figcaption></figure>

#### Lista de informações

<table><thead><tr><th width="276">Chave (results.ai_overviews.info_list)</th><th width="353">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>list_title</code></td><td>O título da lista.</td><td>string</td></tr><tr><td><code>list_items</code></td><td>Contém uma lista de itens com seus respectivos detalhes.</td><td>array</td></tr><tr><td><code>list_items.title</code></td><td>O título da seção dentro da lista.</td><td>string</td></tr><tr><td><code>list_items.content</code></td><td>Uma breve descrição da seção.</td><td>array</td></tr><tr><td><code>list_item.pos</code></td><td>Um indicador que denota a posição de um determinado item entre todos os resultados da lista AI Overviews Info.</td><td>integer</td></tr></tbody></table>

### Instrução

No exemplo a seguir, a consulta "docker exec commands explained" foi usada.

<figure><img src="https://1214208351-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2Fb3YBmQk5cYVULbAAPokZ%2Fdocker_exec_command_explained.png?alt=media&#x26;token=bf50d5e7-b4f1-48a0-ab76-80475d2323fa" alt=""><figcaption></figcaption></figure>

```json
...
  "ai_overviews": [
    {
      "answer_text": [
        {
          "text": [
            "O docker execExecEm computação, exec é uma funcionalidade de um sistema operacional que executa um arquivo executável no contexto de um processo já existente, substituindo o executável anterior...",
            "É uma ferramenta poderosa que pode ser usada para uma variedade de tarefas, como solucionar problemas de um contêiner, executar um script ou instalar software."
          ],
          "pos": 1
        },
        {
          "text": [
            "A sintaxe do comando docker exec é a seguinte:"
          ],
          "command": [
            "docker exec [OPTIONS] CONTAINER COMMAND [ARG...]"
          ],
          "pos": 2
        },
        ...
        }
      ]
    }
  ],
...
```

**Comando de texto da resposta**

{% hint style="info" %}
Observação: os detalhes são renderizados no mesmo array que para [**consulta de pesquisa relacionada ao item**](#answer-text), no entanto, um novo tipo de chave (command) aparece para tipo de consulta relacionado a instruções
{% endhint %}

<table><thead><tr><th width="268">Chave (results.ai_overviews.answer_text)</th><th width="342">Descrição</th><th>Tipo</th></tr></thead><tbody><tr><td><code>command</code></td><td>Uma instrução dada a um computador ou software para executar uma tarefa específica.</td><td>string</td></tr></tbody></table>


---

# Agent Instructions: 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:

```
GET https://developers.oxylabs.io/documentation/pt-br/solucoes-de-scraping/web-scraper-api/targets/google/ai-overviews.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
