> For the complete documentation index, see [llms.txt](https://developers.oxylabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.oxylabs.io/api-targets/es/search-engines/google/search/image-search.md).

# Búsqueda de imágenes

Extrae resultados de Google Image Search con datos analizados, incluidos listados de imágenes orgánicas, URLs de imágenes, dominios de origen, títulos, búsquedas sugeridas e información de búsqueda.

La `google_search` La fuente está diseñada para recuperar resultados de búsqueda de Google (SERPs). Esta subpágina presenta específicamente datos relacionados con la Búsqueda de imágenes de Google. Para explorar otros tipos de resultados, lea aquí: [**Búsqueda web**](https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/google/search/broken-reference/README.md), [**Búsqueda de noticias**](https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/google/search/broken-reference/README.md).

{% hint style="warning" %}
Para extraer la Búsqueda de imágenes de Google, incluya el `context:udm` parámetro con el valor establecido en `2` o `context:tbm` parámetro con el valor establecido en `isch`.
{% endhint %}

{% hint style="info" %}
Explorar la salida [**diccionario de datos**](#data-dictionary) para cada función de SERP de imágenes, ofreciendo una breve descripción, captura de pantalla, fragmento de código JSON analizado y una tabla que define cada campo analizado. Navegue por los detalles usando la navegación de la derecha o desplazándose hacia abajo en la página.
{% endhint %}

## Ejemplos de solicitud

En los ejemplos siguientes, hacemos una solicitud para obtener páginas de resultados de búsqueda de imágenes para el término de búsqueda `adidas`.

### udm

{% 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": "adidas",
        "parse": true,
        "context": [
            {
                "key": "udm",
                "value": 2
            }
        ]
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint

# Structure payload.
payload = {
    'source': 'google_search',
    'query': 'adidas',
    'parse': True,
    'context': [
        {'key': 'udm', 'value': 2},
    ],
}

# Get response.
response = requests.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_search",
    query: "adidas",
    parse: true,
    context: [
        { key: "udm", value: 2 },
    ],
};

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_search&query=adidas&parse=true&context[0][key]=udm&context[0][value]=2&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'google_search',
    'query' => 'adidas',
    'parse' => true,
    'context' => [
        [
            'key' => 'udm',
            'value' => 2,
        ]
    ]
);

$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_search",
		"query":  "adidas",
		"parse":  true,
		"context": []map[string]interface{}{
			{"key": "udm", "value": 2},
		},
	}

	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_search",
                query = "adidas",
                parse = true,
                context = new dynamic [] {
                    new { key = "udm", value = 2 },
                }
            };

            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_search");
        jsonObject.put("query", "adidas");
        jsonObject.put("parse", true);
        jsonObject.put("context", new JSONArray()
                .put(new JSONObject()
                        .put("key", "udm")
                        .put("value", 2))
        );

        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_search",
    "query": "adidas",
    "parse": true,
    "context": [
        {
            "key": "udm",
            "value": 2
        }
    ]
}
```

{% endtab %}
{% endtabs %}

### tbm

{% 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": "adidas",
        "parse": true,
        "context": [
            {
                "key": "tbm",
                "value": "isch"
            }
        ]
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint

# Structure payload.
payload = {
    'source': 'google_search',
    'query': 'adidas',
    'parse': True,
    'context': [
        {'key': 'tbm', 'value': 'isch'},
    ],
}

# Get response.
response = requests.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_search",
    query: "adidas",
    parse: true,
    context: [
        { key: "tbm", value: "isch" },
    ],
};

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_search&query=adidas&parse=true&context[0][key]=tbm&context[0][value]=isch&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'google_search',
    'query' => 'adidas',
    'parse' => true,
    'context' => [
        [
            'key' => 'tbm',
            'value' => 'isch',
        ]
    ]
);

$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_search",
		"query":  "adidas",
		"parse":  true,
		"context": []map[string]interface{}{
			{"key": "tbm", "value": "isch"},
		},
	}

	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_search",
                query = "adidas",
                parse = true,
                context = new dynamic [] {
                    new { key = "tbm", value = "isch" },
                }
            };

            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_search");
        jsonObject.put("query", "adidas");
        jsonObject.put("parse", true);
        jsonObject.put("context", new JSONArray()
                .put(new JSONObject()
                        .put("key", "tbm")
                        .put("value", "isch"))
        );

        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_search",
    "query": "adidas",
    "parse": true,
    "context": [
        {
            "key": "tbm",
            "value": "isch"
        }
    ]
}
```

{% endtab %}
{% endtabs %}

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

## Valores de los parámetros de solicitud

### Genérico

Opciones básicas de configuración y personalización para extraer resultados de búsqueda de Google Imágenes.

<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><mark style="background-color:green;"><strong><code>source</code></strong></mark></td><td>Configura el scraper. Use <code>google_search</code>.</td><td>–</td></tr><tr><td><mark style="background-color:green;"><strong><code>query</code></strong></mark></td><td>La palabra clave o frase que se va a buscar.</td><td>–</td></tr><tr><td><mark style="background-color:orange;"><strong><code>context:</code></strong></mark><br><mark style="background-color:orange;"><strong><code>udm</code></strong></mark></td><td>Para obtener resultados de búsqueda de imágenes, establezca el valor en <mark style="background-color:orange;"><strong>2</strong></mark>. Encuentre otros 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><mark style="background-color:orange;"><strong><code>context:</code></strong></mark><br><mark style="background-color:orange;"><strong><code>tbm</code></strong></mark></td><td>Para obtener resultados de búsqueda de imágenes, establezca el valor en <strong><code>isch</code></strong>. Otros valores aceptados: <code>app</code>, <code>blg</code>, <code>bks</code>, <code>dsc</code>, <code>nws</code>, <code>pts</code>, <code>plcs</code>, <code>rcp</code>, <code>lcl.</code></td><td>–</td></tr><tr><td><code>render</code></td><td>Habilita la renderización de JavaScript cuando se establece en <code>html</code>. <a href="/products/es/web-scraper-api/features/js-rendering-and-browser-control.md#javascript-rendering"><strong>Más información</strong></a><strong>.</strong></td><td>–</td></tr><tr><td><code>parse</code></td><td>Devuelve datos analizados cuando se establece en <code>true</code>. Explore la salida <a href="#output-data-dictionary"><strong>diccionario de datos</strong></a>.</td><td><code>false</code></td></tr><tr><td><code>callback_url</code></td><td>URL de su endpoint de callback. <a href="/products/es/web-scraper-api/integration-methods/push-pull.md"><strong>Más información</strong></a></td><td>–</td></tr><tr><td><code>user_agent_type</code></td><td>Tipo de dispositivo y navegador. La lista completa se puede encontrar <a href="/products/es/web-scraper-api/features/http-context-and-job-management/user-agent-type.md"><strong>aquí</strong></a>.</td><td><code>desktop</code></td></tr></tbody></table>

\- parámetro obligatorio

{% hint style="warning" %}
`udm` y `tbm` los parámetros context no se pueden usar juntos en una sola solicitud de scraping; **seleccione uno de ellos**. Usar ambos simultáneamente puede provocar conflictos o un comportamiento inesperado.
{% endhint %}

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

Al hacer scraping, puede resultarle útil combinar los operadores de búsqueda avanzados de Google con su consulta. Esto le permite personalizar el alcance de la búsqueda, asegurando que los resultados sean más relevantes y precisos. Explore 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). Vea un ejemplo a continuación.

```json
{
    "source": "google_search",
    "query": "iphone 15 launch inurl:apple"
}
```

### Localización

Adapte 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 debe adaptarse el resultado. Usar este parámetro correctamente es extremadamente importante para obtener los datos correctos. Para obtener más información, lea sobre nuestras <code>geo_location</code> estructuras de parámetros sugeridas <a href="/products/es/web-scraper-api/features/localization/serp-localization.md#google"><strong>aquí</strong></a><strong>.</strong></td><td>-</td></tr><tr><td><code>locale</code></td><td><code>valor del encabezado Accept-Language</code> que cambia el idioma de la interfaz web de su página de búsqueda de Google. <a href="/products/es/web-scraper-api/features/localization/domain-locale.md#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></tbody></table>

### Filtrado

Opciones para filtrar y refinar los resultados de búsqueda según varios criterios.

<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>:<code>safe_search</code></td><td>Búsqueda segura. Establézcalo en <code>true</code> para activarla.</td><td><code>false</code></td></tr><tr><td><code>context</code>:<br><code>tbs</code></td><td><code>tbs</code> parámetro. Contenedor para parámetros de Google menos comunes, como limitar/ordenar resultados por fecha u otros filtros que dependen del <code>tbm</code> parámetro (p. ej. <code>tbs=app_os:1</code> solo está disponible con <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>

### 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 <code>fpstate</code> valor en <code>aig</code> hará que Google cargue más apps. 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 agregarse al `context` arreglo como objetos con `key` y `valor` pares, por ejemplo:

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

## Datos estructurados

SERP Scraper API es capaz de extraer un objeto HTML o JSON que contiene resultados de búsqueda de Google, ofreciendo datos estructurados sobre varios elementos de la página de resultados.

<details>

<summary><code>google_search</code> salida estructurada de imágenes</summary>

```json
{
    "results": [
        {
            "content": {
                "url": "https://www.google.com/search?q=adidas&tbm=isch&gbv=1&uule=w+CAIQICINdW5pdGVkIHN0YXRlcw&gl=us&hl=en",
                "results": {
                    "organic": [
                        {
                            "pos": 1,
                            "link": "/url?q=https://www.adidas.com/us/superstar-shoes/EG4958.html&sa=U&ved=2ahUKEwiP4pv98dH3AhUY8rsIHTP1C64QqoUBegQIAxAB&usg=AOvVaw1qdoyk_FXXss1qGlPCyT1k",
                            "image": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQaV6fadzwfHzBcTbF0i3Uat_MLSvoJ6702u7iONGGz2jwdItge9zQTi6gjhg&s",
                            "title": "Men's Superstar Cloud White...",
                            "domain": "www.adidas.com",
                            "pos_overall": 1
                        },
                        ...
                        {
                            "pos": 20,
                            "link": "/url?q=https://www.adidas.com/us/men-shoes&sa=U&ved=2ahUKEwiP4pv98dH3AhUY8rsIHTP1C64QqoUBegQIBRAB&usg=AOvVaw37cvHwAEOJFq55hDO1iXtw",
                            "image": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTiprl_ce5WWZHyY3fFm2iXpOkhiy3EoOMv7UnuRoZ3zvYcpOS1MCKlzIFuSes&s",
                            "title": "Men's Shoes & Sneakers |...",
                            "domain": "www.adidas.com",
                            "pos_overall": 20
                        }
                    ],
                    "search_information": {
                        "query": "adidas",
                        "showing_results_for": "adidas"
                    },
                    "suggested_searches": [
                        "logo",
                        "shoes",
                        "wallpaper",
                        "superstar",
                        "yeezy",
                        "stan smith",
                        "ultra boost",
                        "nmd",
                        "eqt",
                        "tubular"
                    ]
                },
                "parse_status_code": 12000
            },
            "created_at": "2022-05-09 07:26:14",
            "updated_at": "2022-05-09 07:26:18",
            "page": 1,
            "url": "https://www.google.com/search?q=adidas&tbm=isch&gbv=1&uule=w+CAIQICINdW5pdGVkIHN0YXRlcw&gl=us&hl=en",
            "job_id": "6929330677540195329",
            "status_code": 200,
            "parser_type": "v2"
        }
    ]
}
```

</details>

{% hint style="info" %}
Solo analizamos los resultados de búsqueda de imágenes para **desktop** búsquedas.
{% endhint %}

## Diccionario de datos de salida

#### Ejemplo HTML

<figure><img src="https://197269033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBaJCXoqO1zdFnaMnCKrg%2Fuploads%2Fgit-blob-922628519af533aae367fbb2330f79334fe2fbdd%2Fgoogle_image_search_2.png?alt=media" alt=""><figcaption></figcaption></figure>

#### Estructura JSON

La salida estructurada de Búsqueda de imágenes de Google incluye campos como `URL`, `page`, `results`, y otros. La tabla a continuación presenta una lista detallada de cada función SERP que analizamos, junto con su descripción y tipo de dato. La tabla también incluye algunos metadatos.

{% hint style="info" %}
El número de elementos y campos para un tipo de resultado específico puede variar según la consulta de búsqueda.
{% endhint %}

<table><thead><tr><th width="315.3333333333333">Clave (results.images)</th><th width="299">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>url</code></td><td>La URL de la página de búsqueda de Google.</td><td>cadena</td></tr><tr><td><code>results</code></td><td>Un diccionario que contiene los resultados de la búsqueda.</td><td>arreglo</td></tr><tr><td><code>results.organic</code></td><td>Una lista de resultados orgánicos con sus respectivos detalles.</td><td>arreglo</td></tr><tr><td><code>resaults.search_information</code></td><td>Una lista de detalles de la consulta de búsqueda enviada.</td><td>objeto</td></tr><tr><td><code>results.suggested_searches</code></td><td>Una lista de búsquedas sugeridas que se muestran justo debajo de la consulta de búsqueda original.</td><td>arreglo</td></tr><tr><td><code>parse_status_code</code></td><td>El código de estado del trabajo de análisis. Puede ver los códigos de estado del analizador descritos <a href="https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/google/search/broken-reference/README.md"><strong>aquí</strong></a>.</td><td>entero</td></tr><tr><td><code>created_at</code></td><td>La marca de tiempo en que se creó el trabajo de scraping.</td><td>marca de tiempo</td></tr><tr><td><code>updated_at</code></td><td>La marca de tiempo en que se finalizó el trabajo de scraping.</td><td>marca de tiempo</td></tr><tr><td><code>page</code></td><td>Número de página relativo a la paginación del SERP de Google.</td><td>entero</td></tr><tr><td><code>job_id</code></td><td>El ID del trabajo asociado con el trabajo de scraping.</td><td>cadena</td></tr><tr><td><code>status_code</code></td><td>El código de estado del trabajo de scraping. Puede ver los códigos de estado del scraper descritos <a href="https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/google/search/broken-reference/README.md"><strong>aquí</strong></a>.</td><td>entero</td></tr></tbody></table>

{% hint style="info" %}
En las siguientes secciones, los fragmentos de código JSON analizados se acortan cuando hay más de un elemento disponible para el tipo de resultado.
{% endhint %}

### Orgánico

La búsqueda de imágenes `orgánico` la sección muestra listados orgánicos en los resultados de búsqueda de imágenes de Google, organizados por relevancia mediante el algoritmo de Google. Estos resultados se presentan a usuarios que buscan contenido visual y se muestran en una sección dedicada, distinta de otros tipos de resultados de búsqueda.

<figure><img src="https://lh7-us.googleusercontent.com/JbIWkxeHN1m-BqIrLFB9pITIkcozrf2PCpbGbacsr1QLzYmJDeon35IyU9NqTciBUMMfRmTxiA9yoXVTFnsffP5uEX9zhQkie_1vMmxZjsQcfM-RNZo5TsZpY8RqkGW1FyIBRYC-Ry3gpRJnGI0V71U" alt=""><figcaption></figcaption></figure>

```json
...
"organic": [
    {
        "pos": 1,
        "link": "/url?q=https://www.amazon.com/Ravensburger-Glitter-Unicorn-Together-Perfectly/dp/B08X4HRQQL&sa=U&ved=2ahUKEwi6suTk3_ODAxWNqZUCHToXDMkQqoUBegQICBAB&usg=AOvVaw0sGY22JL_Z1oVPkKfuOY-T",
        "image": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcROtE0idmQWj_8Mt5JJoiLUFyJRSU7VANreAOFSijiLH9HsB4H3IWw8j_SxtA&s",
        "title": "Amazon.com: Ravensburger...",
        "domain": "www.amazon.com",
        "pos_overall": 1
    },
...
]
...
```

<table><thead><tr><th width="200">Clave (results.organic)</th><th width="446.3333333333333">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>pos</code></td><td>Un indicador único que denota la posición de la imagen en la lista.</td><td>cadena</td></tr><tr><td><code>link</code></td><td>La URL del sitio donde se ubica la imagen.</td><td>arreglo</td></tr><tr><td><code>image</code></td><td>La URL de la imagen.</td><td>arreglo</td></tr><tr><td><code>title</code></td><td>El título del artículo donde se ubica la imagen.</td><td>objeto</td></tr><tr><td><code>domain</code></td><td>El dominio del sitio que contiene el resultado de la imagen.</td><td>arreglo</td></tr><tr><td><code>pos_overall</code></td><td>Un indicador único que denota la posición de la imagen en la lista.</td><td>entero</td></tr></tbody></table>

### Información de búsqueda

`información de búsqueda` es una sección que proporciona detalles sobre la consulta de búsqueda. Incluye información como el término de búsqueda original y, si corresponde, cualquier autocorrección realizada por Google.

<figure><img src="https://197269033-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBaJCXoqO1zdFnaMnCKrg%2Fuploads%2Fgit-blob-9682e35fa8660d7ea5b92c8577d8179605bfd1f1%2Fgoogle_image_search_1.png?alt=media" alt=""><figcaption></figcaption></figure>

```json
...
"search_information": {
    "query": "unicorn",
    "showing_results_for": "unicorn"
},
...
```

<table><thead><tr><th width="294">Clave (results.search_information)</th><th width="365.3333333333333">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>query</code></td><td>El término de búsqueda original.</td><td>cadena</td></tr><tr><td><code>showing_results_for</code></td><td>El término de búsqueda para el que se muestran los resultados. <code>query</code> y <code>showing_results_for</code> puede diferir si Google autocorrigió el término de búsqueda proporcionado.</td><td>arreglo</td></tr></tbody></table>

### Búsquedas sugeridas

La `suggested_searches` (arreglo) en Búsqueda de imágenes de Google proporciona una lista de términos de búsqueda sugeridos relacionados con la consulta original. Los usuarios pueden explorar estas opciones de búsqueda adicionales para refinar o ampliar su búsqueda de imágenes.

<figure><img src="https://lh7-us.googleusercontent.com/tBGwN37xODwtHFLvQjBK0ZIKPhVR_JCupNCFno6vIbjDZXBlXb0NB6DH2cXgxz5fBLtttvnxQsNKRx4TV9kZOh7MZ9535dMdka3iAzrogVCtLBptZgv6y-db7F40myz00XYmPQvqUTdSbBP4E7eHyw8" alt=""><figcaption></figcaption></figure>

```json
...
"suggested_searches": [
    "cute",
    "rainbow",
    "drawing",
    "glitter",
    "wallpaper",
    "galaxy",
    "kawaii",
    "easy",
    "clipart",
    "transparent"
]
...
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developers.oxylabs.io/api-targets/es/search-engines/google/search/image-search.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
