# AI Overviews

El `google_search` y `google_ads` las fuentes pueden devolver AI Overviews de los resultados de Google Search en todas las regiones globales compatibles. `ai_overviews` el array de resultados admite varios bloques de AI en una sola respuesta, incluidas secciones como “People also ask” y “Things to know.”

Para maximizar la posibilidad de recibir contenido de AI Overviews completamente renderizado, debes incluir los siguientes parámetros:

| Parámetro         | Valor                          |
| ----------------- | ------------------------------ |
| `source`          | `google_search` o `google_ads` |
| `render`          | `html`                         |
| `user_agent_type` | `desktop` o `móvil`            |

Usar estos parámetros también te permite recibir tanto la respuesta general como el contenido de AI Overviews con una sola solicitud.

{% hint style="danger" %}
Google genera este contenido dinámicamente o carga una versión en caché, por lo que las respuestas generadas por AI pueden variar con el tiempo, incluso con parámetros idénticos.
{% endhint %}

{% hint style="success" %}
Explorar[ **diccionario de datos**](#data-dictionary) para algunas de las funciones SERP de AI Overviews.
{% endhint %}

## Disponibilidad regional de AI Overviews

Google AI Overviews está disponible en la mayoría de los países, con algunas excepciones. Actualmente, los países más grandes excluidos son:

* Francia
* Mónaco
* China
* Irán
* Sudán
* Siria
* Cuba
* Corea del Norte

{% hint style="warning" %}
La función Google AI Overviews se está implementando continuamente y se van incluyendo más países con el tiempo.
{% endhint %}

## Ejemplos de solicitud

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

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

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

# Imprime la respuesta con formato en 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 el método de integración síncrona [**Realtime**](/products/es/web-scraper-api/integration-methods/realtime.md) en nuestros ejemplos. Si deseas usar [**Proxy Endpoint**](/products/es/web-scraper-api/integration-methods/proxy-endpoint.md) o la integración asíncrona [**Push-Pull**](/products/es/web-scraper-api/integration-methods/push-pull.md) consulta la sección de [**métodos de integración**](/products/es/web-scraper-api/integration-methods.md) .

## Valores de los parámetros de solicitud

### Genérico

Configuración básica y opciones de personalización para extraer resultados de Google Web search con AI Overviews.

<table><thead><tr><th width="191">Parámetro</th><th width="377.3333333333333">Descripción</th><th>Valor predeterminado</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><strong>source</strong></mark></td><td>Establece el scraper. Usa <code>google_search</code> o <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>La palabra clave o frase a buscar.</td><td>-</td></tr><tr><td><code>render</code></td><td>Habilita el renderizado de JavaScript cuando se establece en <code>html</code>. <a href="/spaces/xofNngbwiAAH0MB3lMAb/pages/47852075b446d7f11217f4c0334348f21fb197b8#javascript-rendering"><strong>Más información</strong></a><strong>.</strong></td><td>-</td></tr><tr><td><code>context</code>:<br><code>expand_aio</code></td><td>Establecer en <code>true</code> para expandir Google AI Overviews (renderizado de JavaScript habilitado).</td><td><code>false</code></td></tr><tr><td><code>parse</code></td><td>Devuelve datos analizados cuando se establece en <code>true</code>.</td><td><code>false</code></td></tr><tr><td><code>callback_url</code></td><td>URL de 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. Usa <code>desktop</code> o <code>móvil</code>. </td><td><code>desktop</code></td></tr></tbody></table>

&#x20;   \- parámetro obligatorio

#### Operadores avanzados de búsqueda de Google

Al extraer datos, puede resultarte útil combinar operadores avanzados de búsqueda de Google con tu consulta. Esto te permite personalizar el alcance de la búsqueda, asegurando que los resultados sean más relevantes y específicos. Explora estos comandos especiales [**aquí**](https://ahrefs.com/blog/google-advanced-search-operators/) y [**aquí**](https://www.semrush.com/kb/831-how-to-use-google-advanced-search-operators). Consulta la consulta de ejemplo a continuación.

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

### Localización

Adapta los resultados de búsqueda a ubicaciones geográficas e idiomas específicos.

<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>geo_location</code></td><td>La ubicación geográfica para la que se debe adaptar el resultado. Usar este parámetro correctamente es extremadamente importante para obtener los datos correctos. Para más información, lee sobre nuestras <code>geo_location</code> estructuras de parámetros <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>

### 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>start_page</code></td><td>Número de 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 en cada página.</td><td><code>10</code></td></tr><tr><td><code>context</code>:<code>limit_per_page</code></td><td>Extrae varias páginas usando la misma dirección IP y sesión (conjunto de cookie). Al especificar los números de página en un arreglo JSON con la clave <code>page</code> y al indicar el número de resultados orgánicos por página usando la clave <code>limit</code> puedes minimizar la posibilidad de ver resultados orgánicos superpuestos entre páginas (por ejemplo, que el último resultado orgánico de la primera página sea el mismo que el primer resultado orgánico de la segunda página). <a href="#request-sample"><strong>Ver ejemplo</strong></a><strong>.</strong></td><td>-</td></tr></tbody></table>

#### Compatibilidad con desplazamiento continuo

La Web Scraper API admite completamente el desplazamiento continuo de Google Search. Detecta automáticamente diseños de desplazamiento continuo y carga de forma eficiente los resultados orgánicos solicitados sin necesidad de parámetros adicionales.

#### Límite por página

{% hint style="warning" %}
Debido a cambios recientes en los límites de Google, hemos ajustado el comportamiento de Web Scraper API. El máximo de resultados por página coincidirá con la salida orgánica de Google, que normalmente es de 10 resultados.
{% endhint %}

Para usar esta función, incluye un arreglo JSON con objetos JSON que contengan los siguientes datos:

<table><thead><tr><th width="142">Parámetro</th><th width="446.3333333333333">Descripción</th><th>Ejemplo</th></tr></thead><tbody><tr><td><code>page</code></td><td>El número de la página que deseas extraer. Cualquier valor entero mayor que <code>0</code> funcionará</td><td><code>1</code></td></tr><tr><td><code>limit</code></td><td>El número de resultados en la página en cuestión. Cualquier valor entero entre <code>1</code> y <code>100</code> (incluido) funcionará.</td><td><code>90</code></td></tr></tbody></table>

#### Ejemplo de solicitud

```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}
                    ]
        }]
}
```

### Filtrado

Opciones para filtrar y refinar los resultados de búsqueda según varios criterios. Aprende a usar los parámetros de contexto [**aquí**](#context-parameters).

<table><thead><tr><th width="245">Parámetro</th><th width="350.3333333333333">Descripción</th><th>Valor predeterminado</th></tr></thead><tbody><tr><td><code>context</code>:<br><code>filter</code></td><td>Establecer el valor de este parámetro en <code>0</code> te permite ver resultados que de otro modo se excluirían debido a su similitud con otros resultados.</td><td><code>1</code></td></tr><tr><td><code>context</code>:<br><code>safe_search</code></td><td>Búsqueda segura. Establécelo en <code>true</code> para habilitarla.</td><td><code>false</code></td></tr><tr><td><code>context</code>:<br><code>udm</code></td><td><code>udm</code> el parámetro permite cambiar entre diferentes pestañas de búsqueda, como imágenes, lugares o videos, para personalizar el tipo de resultados mostrados. Encuentra los valores aceptados <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>aquí</strong></a>.</td><td>-</td></tr><tr><td><code>context</code>:<br><code>tbm</code></td><td>To-be-matched o <code>tbm</code> parámetro. Los valores aceptados son: <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 es como un contenedor para parámetros menos comunes de Google, como limitar/ordenar resultados por fecha y otros filtros, algunos de los cuales dependen de la <code>tbm</code> (p. ej. <code>tbs=app_os:1</code> solo está disponible con el <code>tbm</code> valor <code>app</code>). Más información <a href="https://stenevang.wordpress.com/2013/02/22/google-advanced-power-search-url-request-parameters/"><strong>aquí</strong></a>.</td><td>-</td></tr></tbody></table>

{% hint style="warning" %}
`udm` y `tbm` los parámetros de contexto no pueden usarse juntos en una sola solicitud de scraping; selecciona solo uno. Usar ambos simultáneamente puede provocar conflictos o comportamientos inesperados.
{% endhint %}

### Otros

Configuraciones y controles avanzados adicionales para requisitos especializados.

<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>context</code>:<br><code>fpstate</code></td><td>Establecer el valor de <code>fpstate</code> en <code>aig</code> hará que Google cargue más aplicaciones. Este parámetro solo es útil si se usa junto con el <code>render</code> parámetro.</td><td>-</td></tr><tr><td><code>context</code>:<br><code>nfpr</code></td><td><code>true</code> desactivará la autocorrección ortográfica</td><td><code>false</code></td></tr></tbody></table>

### Parámetros de contexto

Todos los parámetros de contexto deben añadirse al arreglo `context` como objetos con pares `key` y `valor` value, por ejemplo.:

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

## Estructura y procesamiento de datos

### Diccionario de datos

Todas las claves disponibles dentro de la función SERP de AI Overviews se definen en la siguiente tabla:

<table><thead><tr><th width="249">Clave (results.ai_overview)</th><th width="383">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>answer_text</code></td><td>Información general sobre el término de consulta de Google Search.</td><td>array</td></tr><tr><td><code>bullet_list</code></td><td>Indica información sobre los elementos renderizados en una lista con viñetas dentro de la función SERP de AI Overviews.</td><td>array</td></tr><tr><td><code>products</code></td><td>Una lista de productos con sus respectivos detalles.</td><td>object</td></tr><tr><td><code>source_panel</code></td><td>Una lista de fuentes usadas para generar el resultado de AI Overviews en la función SERP de Google.</td><td>object</td></tr><tr><td><code>additional_questions</code></td><td>Una lista de preguntas adicionales con sus respectivos detalles.</td><td>object</td></tr><tr><td><code>recipes</code></td><td>Una lista de recetas con sus respectivos detalles.</td><td>object</td></tr><tr><td><code>info_list</code></td><td>Una lista de información usada con mayor frecuencia para representar pasos de un proceso relacionados con la consulta de búsqueda.</td><td>array</td></tr><tr><td><code>pos_overall</code></td><td>Un indicador que denota la posición del resultado de la función SERP de AI Overviews entre todos los resultados disponibles de Google SERP.</td><td>integer</td></tr></tbody></table>

### Trabajar con múltiples AI Overviews

Como AI Overviews ahora se devuelven como un array, debes iterar sobre ellos:

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

```javascript
// Procesando todos los AI Overviews en una respuesta
response.results.ai_overviews.forEach((aiOverview, index) => {
  console.log(`Procesando AI Overview #${index + 1}`);
  // Procesar componentes individuales
  if (aiOverview.answer_text) {
    // Manejar el texto de respuesta
  }
  if (aiOverview.bullet_list) {
    // Manejar listas con viñetas
  }
  // Y así sucesivamente...
});
```

{% endtab %}

{% tab title="Python" %}

```python
# Procesando todos los AI Overviews en una respuesta
for index, ai_overview in enumerate(response['results']['ai_overviews']):
    print(f"Procesando AI Overview #{index + 1}")
    # Procesar componentes individuales
    if 'answer_text' in ai_overview:
        answer_texts = ai_overview['answer_text']
        for answer in answer_texts:
            # Procesar cada texto de respuesta
            if 'text' in answer:
                for text_item in answer['text']:
                    print(f"Texto de respuesta: {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 de la lista: {bullet_list['list_title']}")
            if 'points' in bullet_list:
                for point in bullet_list['points']:
                    print(f"- {point}")
    # Continuar procesando otros elementos...
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
// Procesando todos los AI Overviews en una respuesta
if (isset($response['results']['ai_overviews']) && is_array($response['results']['ai_overviews'])) {
    foreach ($response['results']['ai_overviews'] as $index => $aiOverview) {
        $indexNumber = $index + 1;
        echo "Procesando AI Overview #{$indexNumber}\n";
        
        // Procesar el texto de respuesta
        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 de respuesta: {$textItem}\n";
                    }
                }
            }
        }
        
        // Procesar listas con viñetas
        if (isset($aiOverview['bullet_list']) && is_array($aiOverview['bullet_list'])) {
            foreach ($aiOverview['bullet_list'] as $bulletList) {
                if (isset($bulletList['list_title'])) {
                    echo "Título de la lista: {$bulletList['list_title']}\n";
                }
                if (isset($bulletList['points']) && is_array($bulletList['points'])) {
                    foreach ($bulletList['points'] as $point) {
                        echo "- {$point}\n";
                    }
                }
            }
        }
        // Continuar procesando otros elementos...
    }
}
?>
```

{% endtab %}
{% endtabs %}

En la mayoría de los casos, solo habrá un AI Overview, pero tu código debe estar preparado para manejar varias entradas.

Explora ejemplos de resultados de AI Overviews a continuación, categorizados por diferentes consultas de búsqueda: [**Elemento**](#item), [**Recetas**](#recipe), [**Instrucción**](#instruction).

### Elemento

En el siguiente ejemplo, se usó la 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 es una marca de lujo conocida por sus diseños atemporales y su compromiso con la artesanía italiana.",
            "Las Emporio Armani EA3192 son unas gafas graduadas diseñadas para hombres.",
            "Tienen una montura rectangular hecha de plástico hipoalergénico y ligero.",
            "Las lentes son UV y antirreflectantes.",
            "Aquí hay algunas ideas de las reseñas:"
          ],
          "pos": 1
        }
      ],
      "bullet_list": [
        {
          "list_title": "Pros",
          "points": [
            "Cómodas",
            "Marca mínima"
          ],
          "pos": 1
        }
      ],
      "products": {
        "items": [
          {
            "product_name": "Emporio Armani Men Eyeglasses Shiny Black Size: 53",
            "price": "$163.00",
            "previous_price": null,
            "seller": "Lenscrafters",
            "shipping": "Entrega gratis",
            "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": "What is Emporio Armani and is Emporio Armani a luxury brand?",
            "pos": 1
          },
        ...
        ]
      },
      "additional_questions": {
        "items": [
          {
           "question": "Is Emporio Armani the same as Giorgio Armani?",
           "pos": 1
          }
        ]
      },
      "pos_overall": 1
    }
  ],
...
```

#### Texto de respuesta

<table><thead><tr><th width="273">Clave (results.ai_overviews.answer_text)</th><th width="368">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>text</code></td><td>Una respuesta breve a la consulta de Google Search.</td><td>array</td></tr><tr><td><code>pos</code></td><td>Un indicador que denota la posición de un elemento dado entre todos los resultados de respuesta de AI Overviews.</td><td>integer</td></tr></tbody></table>

**Lista con viñetas**

<table><thead><tr><th width="268">Clave (results.ai_overviews.bullet_list)</th><th width="364">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>list_title</code></td><td>El título de la lista con viñetas.</td><td>string</td></tr><tr><td><code>points</code></td><td>Los elementos renderizados en la lista con viñetas. Todos los elementos están separados por comas.</td><td>array</td></tr><tr><td><code>pos</code></td><td>Un indicador que denota la posición de un elemento dado entre todos los resultados de la lista con viñetas de AI Overviews.</td><td>integer</td></tr></tbody></table>

**Productos**

<table><thead><tr><th width="271">Clave (results.ai_overviews.products)</th><th width="364">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Una lista de productos con sus respectivos detalles.</td><td>array</td></tr><tr><td><code>items.product_name</code></td><td>El nombre del producto.</td><td>string</td></tr><tr><td><code>items.price</code></td><td>El precio actual del producto.</td><td>string</td></tr><tr><td><code>items.previous_price</code></td><td>El precio inicial del producto (si aplica).</td><td>string</td></tr><tr><td><code>items.seller</code></td><td>El vendedor del producto.</td><td>string</td></tr><tr><td><code>items.shipping</code></td><td>El tipo de envío disponible para el producto.</td><td>string</td></tr><tr><td><code>items.url</code></td><td>La URL del producto.</td><td>string</td></tr><tr><td><code>items.pos</code></td><td>Un indicador que denota la posición de un elemento dado entre todos los resultados de productos de AI Overviews.</td><td>integer</td></tr></tbody></table>

#### Panel de fuentes

<table><thead><tr><th width="274">Clave (results.ai_overviews.source_panel)</th><th width="353">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Una lista de fuentes usadas para generar el resultado de AI Overviews en la función SERP de Google.</td><td>object</td></tr><tr><td><code>items.url</code></td><td>La URL del sitio web.</td><td>string</td></tr><tr><td><code>items.source</code></td><td>El nombre del sitio web.</td><td>string</td></tr><tr><td><code>items.date</code></td><td>La fecha en que se publicó el artículo.</td><td>string</td></tr><tr><td><code>items.title</code></td><td>El título del artículo.</td><td>string</td></tr><tr><td><code>items.pos</code></td><td>Un indicador que denota la posición de un elemento dado entre todos los resultados del panel de fuentes de AI Overviews.</td><td>integer</td></tr></tbody></table>

#### Preguntas adicionales

<table><thead><tr><th width="275">Clave (results.ai_overviews.additional_questions)</th><th width="343">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items.question</code></td><td>Una lista de preguntas adicionales relevantes para la consulta de búsqueda original, separadas por comas.</td><td>array</td></tr><tr><td><code>items.pos</code></td><td>Un indicador que denota la posición de un elemento dado entre todos los resultados de preguntas adicionales de AI Overviews.</td><td>integer</td></tr></tbody></table>

### Receta

En el siguiente ejemplo, se usó la consulta "recipe for an apple pie".

<figure><img src="/files/539d6ad1da773b8a618966a5cdd04efef0e2fcc9" alt=""><figcaption></figcaption></figure>

```json
...  
 "ai_overviews": [
   {
      "recipes": {
        "items": [
          {
            "description": "Esta receta sencilla incluye una base casera, manzanas Granny Smith y especias cálidas.",
            "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"
          },
...
        ]
      }
    }
  ],
...
```

**Recetas**

<table><thead><tr><th width="234">Clave (results.ai_overviews.recipes)</th><th width="375">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>items</code></td><td>Una lista de recetas con sus respectivos detalles.</td><td>array</td></tr><tr><td><code>items.description</code></td><td>Una breve descripción de la receta.</td><td>string</td></tr><tr><td><code>items.image</code></td><td>Una imagen miniatura de la receta codificada en base64.</td><td>string</td></tr><tr><td><code>items.source</code></td><td>El nombre del sitio donde se publica la receta.</td><td>string</td></tr><tr><td><code>items.rating</code></td><td>La calificación de la receta.</td><td>string</td></tr><tr><td><code>items.rating_count</code></td><td>El número de valoraciones.</td><td>string</td></tr><tr><td><code>items.duration</code></td><td>El tiempo necesario para preparar el plato.</td><td>string</td></tr><tr><td><code>items.url</code></td><td>La URL de la receta completa.</td><td>string</td></tr><tr><td><code>items.title</code></td><td>El título de la receta.</td><td>string</td></tr></tbody></table>

En el siguiente ejemplo, se usó la consulta "recipe of a juicy succulent steak".

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

#### Lista de información

<table><thead><tr><th width="276">Clave (results.ai_overviews.info_list)</th><th width="353">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>list_title</code></td><td>El título de la lista.</td><td>string</td></tr><tr><td><code>list_items</code></td><td>Contiene una lista de elementos con sus respectivos detalles.</td><td>array</td></tr><tr><td><code>list_items.title</code></td><td>El título de la sección dentro de la lista.</td><td>string</td></tr><tr><td><code>list_items.content</code></td><td>Una breve descripción de la sección.</td><td>array</td></tr><tr><td><code>list_item.pos</code></td><td>Un indicador que denota la posición de un elemento dado entre todos los resultados de la lista de información de AI Overviews.</td><td>integer</td></tr></tbody></table>

### Instrucción

En el siguiente ejemplo, se usó la consulta "docker exec commands explained".

<figure><img src="/files/95ea65f19cf1582bd7724711a13e9753e26b068f" alt=""><figcaption></figcaption></figure>

```json
...
  "ai_overviews": [
    {
      "answer_text": [
        {
          "text": [
            "El docker execExecEn informática, exec es una funcionalidad de un sistema operativo que ejecuta un archivo ejecutable en el contexto de un proceso ya existente, reemplazando el ejecutable anterior...",
            "Es una herramienta poderosa que puede usarse para una variedad de tareas, como solucionar problemas de un contenedor, ejecutar un script o instalar software."
          ],
          "pos": 1
        },
        {
          "text": [
            "La sintaxis del comando docker exec es la siguiente:"
          ],
          "command": [
            "docker exec [OPTIONS] CONTAINER COMMAND [ARG...]"
          ],
          "pos": 2
        },
        ...
        }
      ]
    }
  ],
...
```

**Comando de texto de respuesta**

{% hint style="info" %}
Nota: los detalles se renderizan en el mismo array que para [**consulta de búsqueda relacionada con el elemento**](#answer-text), sin embargo, aparece un nuevo tipo de clave (command) para el tipo de consulta relacionado con instrucciones
{% endhint %}

<table><thead><tr><th width="268">Clave (results.ai_overviews.answer_text)</th><th width="342">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>command</code></td><td>Una instrucción dada a una computadora o software para realizar una tarea 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/api-targets/es/motores-de-busqueda/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.
