# Tendencias: Explorar

El `google_trends_explore` la fuente está diseñada para recuperar resultados de Google Trends.

{% hint style="warning" %}
Debido a problemas en curso, los datos extraídos pueden no ser 100% precisos en comparación con el uso directo de Google Trends a través de navegadores web. Úselo con precaución y tenga en cuenta posibles discrepancias.
{% endhint %}

## Ejemplos de solicitudes

En este ejemplo, hacemos una solicitud para obtener resultados de tendencias para un término de búsqueda `adidas` entre el 1 de enero de 2021 y el 2 de febrero de 2022, y establecemos la categoría en "Arts & Entertainment" (id de categoría: `3`).

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

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
        "source": "google_trends_explore",
        "query": "adidas",
        "context": [
            {"key": "date_from", "value": "2021-01-01"},
            {"key": "date_to", "value": "2022-02-02"},
            {"key": "category_id", "value": 3}
        ]
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint


# Structure payload.
payload = {
    'source': 'google_trends_explore',
    'query': 'adidas',
    'context': [
        {'key': 'date_from', 'value': '2021-01-01'},
        {'key': 'date_to', 'value': '2022-02-02'},
        {'key': 'category_id', 'value': 3},
    ],
}


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

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

{% endtab %}

{% tab title="Node.js" %}

```javascript
const https = require("https");

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "google_trends_explore",
    query: "adidas",
    context: [
        { key: "date_from", value: "2021-01-01" },
        { key: "date_to", value: "2022-02-02" },
        { key: "category_id", value: 3 },
    ],
};

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" %}

```shell
https://realtime.oxylabs.io/v1/queries?source=google_trends_explore&query=adidas&context[0][key]=date_from&context[0][value]=2021-01-01&&context[1][key]=date_to&context[1][value]=2022-02-02&context[2][key]=category_id&context[0][value]=3&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'google_trends_explore',
    'query' => 'adidas',
    'context' => [
        ['key' => 'date_from', 'value' => '2021-01-01'],
        ['key' => 'date_to', 'value' => '2022-02-02'],
        ['key' => 'category_id', 'value' => 3]
    ]
);

$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_trends_explore",
		"query":  "adidas",
		"context": []map[string]interface{}{
			{"key": "date_from", "value": "2021-01-01"},
			{"key": "date_to", "value": "2022-02-02"},
			{"key": "category_id", "value": 3},
		},
	}

	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_trends_explore",
                query = "adidas",
                context = new dynamic [] {
                    new { key = "date_from", value = "2021-01-01" },
                    new { key = "date_to", value = "2022-02-02" },
                    new { key = "category_id", value = 3 }
                }
            };

            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_trends_explore");
        jsonObject.put("query", "adidas");
        jsonObject.put("context", new JSONArray()
                .put(new JSONObject().put("key", "date_from").put("value", "2021-01-01"))
                .put(new JSONObject().put("key", "date_to").put("value", "2022-02-02"))
                .put(new JSONObject().put("key", "category_id").put("value", 3))
        );

        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_trends_explore",
    "query": "adidas",
    "context": [
        {"key": "date_from", "value": "2021-01-01"},
        {"key": "date_to", "value": "2022-02-02"},
        {"key": "category_id", "value": 3}
    ]
}
```

{% 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 integración asíncrona [**Push-Pull**](/products/es/web-scraper-api/integration-methods/push-pull.md) consulte la sección de [**métodos de integración**](/products/es/web-scraper-api/integration-methods.md) .

## Valores de los parámetros de solicitud

### General

Configuración básica y opciones de personalización para extraer resultados de Google Trends.

<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>source</strong></mark></td><td>Establece el scraper.</td><td><code>google_trends_explore</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>callback_url</code></td><td>URL de su 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. La lista completa se puede encontrar <a href="/spaces/xofNngbwiAAH0MB3lMAb/pages/c0794af77dadf44c32dae6894baaca0b93585869"><strong>aquí</strong></a>.</td><td><code>desktop</code></td></tr><tr><td><code>geo_location</code></td><td>La ubicación geográfica para la que debe adaptarse el resultado. Con Google Trends: Explore, aceptamos códigos de país ISO de 2 letras como <code>geo_location</code> valores de parámetro.</td><td>-</td></tr></tbody></table>

&#x20;   \- parámetro obligatorio

### Filtrado

Opciones avanzadas para adaptar y refinar el contexto de búsqueda.

<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><p><code>context</code>:</p><p><code>search_type</code></p></td><td>Le permite establecer el tipo de búsqueda (una de las opciones en la interfaz de Google Trends). Valores posibles: <code>web_search</code>, <code>image_search</code>, <code>google_shopping</code>, <code>youtube_search</code>.</td><td><code>web_search</code></td></tr><tr><td><p><code>context</code>:</p><p><code>date_from</code></p></td><td>La fecha inferior. Formato: <code>YYYY-MM-DD</code>. Fecha más antigua posible: <code>2004-01-01</code>.</td><td>-</td></tr><tr><td><p><code>context</code>:</p><p><code>date_to</code></p></td><td>La fecha superior. Formato: <code>YYYY-MM-DD</code>. Fecha más antigua posible: <code>2004-01-01</code>.</td><td>-</td></tr><tr><td><p><code>context</code>:</p><p><code>category_id</code></p></td><td>ID de categoría. Consulte <a href="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiwDdoZGfMbUe5cRL2417%2Fuploads%2Fp5oVF3fBlQV8OzBmJ3BO%2FTrends-Google-categories.json?alt=media&#x26;token=141cdee3-cb9f-43c8-99cc-befa8b6ca8ec"><strong>este archivo</strong></a> en la historia para una lista de valores válidos.</td><td>-</td></tr></tbody></table>

### Parámetros de contexto

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

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

{% hint style="info" %}
**NOTA**: Este servicio siempre entrega datos estructurados, por lo que no es necesario utilizar el parámetro `parse` con esta fuente.
{% endhint %}

## Ejemplo de salida

```json
{
    "results": [
        {
            "content":"{\"interest_over_time\": [{\"keyword\": \"adidas\", \"items\": [{\"time\": \"Jan 3\ \–\ 9, 2021\", \"value\": 75}, {\"time\": \"Jan 10\ \–\ 16, 2021\", \"value\": 79}...{\"query\": \"adidas zx\", \"value\": 10, \"formatted_value\": \"10\", \"link\": \"/trends/explore?q=adidas+zx&date=2021-01-01+2022-02-02\"}]}]}",
            "created_at": "2024-02-13 11:33:21",
            "updated_at": "2024-02-13 11:33:27",
            "page": 1,
            "url": "https://trends.google.com/trends/api/explore?hl=en-US&tz=0&req=%7B%22comparisonItem%22%3A+%5B%7B%22keyword%22%3A+%22adidas%22%2C+%22geo%22%3A+%22%22%2C+%22time%22%3A+%222021-01-01+2022-02-02%22%7D%5D%2C+%22category%22%3A+0%2C+%22property%22%3A+%22%22%7D",
            "job_id": "7163133042662350849",
            "status_code": 200
        }
    ]
}
```


---

# 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/trends-explore.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.
