# Búsqueda de noticias

El `google_search` source está diseñado para recuperar resultados de búsqueda de Google (SERP). Esta subpágina presenta específicamente datos relacionados con la Búsqueda de Noticias 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 imágenes**](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 rastrear la búsqueda de Google News, incluya el `context:udm` parámetro con el valor establecido en `12` o `context:tbm` parámetro con el valor establecido en `isch`.
{% endhint %}

{% hint style="info" %}
Explorar salida [**diccionario de datos**](#data-dictionary) para cada característica de SERP de Noticias, 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 del lado derecho o desplazándose hacia abajo en la página.
{% endhint %}

## Muestras de solicitud

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

### para activarla.

{% 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": "12"
            }
        ]
    }'
```

{% 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': '12'},
    ],
}

# 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: "12" },
    ],
};

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

{% endtab %}

{% tab title="PHP" %}

```php
<?php

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

$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": "12"},
		},
	}

	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 = "12" },
                }
            };

            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", "12"))
        );

        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": "12"
        }
    ]
}
```

{% endtab %}
{% endtabs %}

### 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. Encuentre los valores aceptados

{% 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": "nws"
            }
        ]
    }'
```

{% 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': 'nws'},
    ],
}

# 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: "nws" },
    ],
};

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

{% endtab %}

{% tab title="PHP" %}

```php
<?php

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

$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": "nws"},
		},
	}

	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 = "nws" },
                }
            };

            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", "nws"))
        );

        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": "nws"
        }
    ]
}
```

{% endtab %}
{% endtabs %}

Usamos [**Realtime**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/realtime) método de integración en nuestros ejemplos. Si desea usar [**Proxy Endpoint**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/proxy-endpoint) o asincrónico [**Push-Pull**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods/push-pull) integración, consulte el [**métodos de integración**](https://developers.oxylabs.io/documentation/es/soluciones-de-scraping/web-scraper-api/integration-methods) sección.

## Valores de parámetros de la solicitud

### Genérico

Configuración básica y opciones de personalización para rastrear resultados de búsqueda de Google News.

<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_search</code></td></tr><tr><td><mark style="background-color:green;"><strong>query</strong></mark></td><td>La palabra clave o frase para buscar.</td><td>-</td></tr><tr><td><mark style="background-color:orange;"><strong>context:</strong></mark><br><mark style="background-color:orange;"><strong>para activarla.</strong></mark></td><td>Para obtener resultados de búsqueda de Noticias, establezca el valor en <mark style="background-color:orange;"><strong>12</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>context:</strong></mark><br><mark style="background-color:orange;"><strong>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. Encuentre los valores aceptados</strong></mark></td><td>Para obtener resultados de búsqueda de Noticias, establezca el valor en <mark style="background-color:orange;"><strong>isch</strong></mark>. Otros valores aceptados son: <code>. Los valores aceptados son:</code>, <code>app</code>, <code>blg</code>, <code>bks</code>, <code>dsc</code>, <code>nws</code>, <code>pts</code>, <code>plcs</code>, <code>rcp</code></td><td>-</td></tr><tr><td><code>render</code></td><td>Activa el renderizado de JavaScript cuando se establece en <code>html</code>. <a href="../../../features/js-rendering-and-browser-control/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>. Explorar el <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="../../../../integration-methods/push-pull#callback"><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="../../../features/http-context-and-job-management/user-agent-type"><strong>aquí</strong></a>.</td><td><code>desktop</code></td></tr></tbody></table>

&#x20;   \- parámetro obligatorio

\- `para activarla.` y `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. Encuentre los valores aceptados` los parámetros context no pueden usarse juntos en una sola solicitud de rastreo; **por favor seleccione uno de ellos**. Usar ambos simultáneamente puede provocar conflictos o comportamientos inesperados.

#### Operadores de búsqueda avanzada de Google

Al raspar, puede resultar útil combinar operadores avanzados de búsqueda de Google con su consulta. Le permite personalizar el alcance de la búsqueda, asegurando que los resultados sean más relevantes y centrados. 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 cual se deben adaptar los resultados. Usar este parámetro correctamente es extremadamente importante para obtener los datos correctos. Para más información, lea sobre nuestras sugeridas <code>geo_location</code> estructuras de parámetros <a href="../../../../features/localization/serp-localization#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 la página de búsqueda de Google. <a href="../../../../features/localization/domain-locale-results-language#locale-1"><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><p><code>context</code>:</p><p><code>Número de resultados a recuperar en cada página.</code></p></td><td>Si desea rastrear múltiples páginas con la misma dirección IP, incluya un arreglo JSON y especifique los números de página usando la <code>Raspe múltiples páginas usando la misma dirección IP y sesión (conjunto de cookies). Al especificar los números de página en un array JSON con la</code> clave. También debe indicar el número de resultados orgánicos en cada página agregando una <code>limit</code> clave. <a href="#limit-per-page"><strong>clave, puede minimizar la posibilidad de ver resultados orgánicos superpuestos entre páginas (p. ej., el último resultado orgánico de la primera página siendo el mismo que el primer resultado orgánico de la segunda página).</strong></a><strong>.</strong></td><td>-</td></tr></tbody></table>

#### La Web Scraper API admite completamente el desplazamiento continuo de Google Search. Detecta automáticamente los diseños de desplazamiento continuo, cargando eficientemente los resultados orgánicos solicitados sin parámetros adicionales requeridos.

Debido a cambios recientes en los límites de Google, hemos ajustado el comportamiento de la Web Scraper API. El máximo de resultados por página coincidirá con la salida orgánica de Google, que suele ser de 10 resultados.

<table><thead><tr><th width="142">Parámetro</th><th width="446.3333333333333">Descripción</th><th>Para usar esta función, incluya un array JSON con objetos JSON que contengan los siguientes datos:</th></tr></thead><tbody><tr><td><code>Raspe múltiples páginas usando la misma dirección IP y sesión (conjunto de cookies). Al especificar los números de página en un array JSON con la</code></td><td>Ejemplo <code>0</code> El número de la página que desea raspar. Cualquier valor entero mayor que</td><td><code>1</code></td></tr><tr><td><code>limit</code></td><td>funcionará <code>1</code> y <code>100</code> El número de resultados en la página en cuestión. Cualquier valor entero entre</td><td><code>90</code></td></tr></tbody></table>

#### (inclusive) funcionará.

```json
{
    "source": "google_search",
    "query": "adidas",
    "parse": true,
    "context": [
        {
            Ejemplo de solicitud
            "key": "limit_per_page",
                "value": [
                {"page": 1, "limit": 10},
                    ]
        }]
}
```

### {"page": 2, "limit": 90}

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>le permite ver resultados que de otro modo serían excluidos debido a su similitud con otros resultados.</code></td><td>safe_search <code>true</code> Búsqueda segura. Establecer en</td><td><code>false</code></td></tr><tr><td><code>context</code>:<br><code>lcl</code></td><td><code>lcl</code> parámetro. Este parámetro es como un contenedor para parámetros de Google más oscuros, como limitar/ordenar resultados por fecha así como otros filtros, algunos de los cuales dependen de <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. Encuentre los valores aceptados</code> Este parámetro es como un contenedor para parámetros de Google más oscuros, como limitar/ordenar resultados por fecha, así como otros filtros, algunos de los cuales dependen del <code>parámetro (p. ej.</code> tbs=app_os:1 <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. Encuentre los valores aceptados</code> value <code>. Los valores aceptados son:</code>value <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

Ajustes avanzados adicionales y controles 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>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 `context` array como objetos con `key` y `value` pares, p. ej.:

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

## "key": "filter",

La SERP Scraper API es capaz de extraer ya sea 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 noticias</summary>

```json
{
    "results": [
        {
            salida estructurada
                "url": "https://www.google.com/search?q=adidas&tbm=nws&uule=w+CAIQICINdW5pdGVkIHN0YXRlcw&gl=us&hl=en",
                "content": {
                "url": "https://www.google.com/search?q=adidas&uule=w+CAIQICINdW5pdGVkIHN0YXRlcw&gl=us&hl=en",
                    "main": [
                        {
                            "url": "https://www.cnn.com/2022/05/06/business/under-armour-stock-adidas-nike/index.html",
                            "desc": "Cadenas de suministro trastornadas y un repunte de coronavirus en China están causando \ndolor de cabeza para las principales marcas deportivas.",
                            "title": "Wall Street está harto de Under Armour, Nike y Adidas",
                            "source": "CNN",
                            "pos_overall": 1,
                            "relative_publish_date": "hace 2 días"
                        },
                        ...
                        {
                            "url": "https://www.cnbc.com/2022/05/06/dsw-tests-layout-to-spotlight-brands-like-adidas-crocs-birkenstock.html",
                            "desc": "DSW está probando un nuevo aspecto y diseño de tienda en una ubicación que se abrirá este \nfin de semana en Houston, en un intento por centrar la atención de los clientes en...",
                            "title": "DSW está probando un diseño de tienda que pone el foco en marcas como \nAdidas, Crocs y Birkenstock",
                            "source": "CNBC",
                            "pos_overall": 10,
                            "relative_publish_date": "hace 2 días"
                        }
                    ],
                    "total_results_count": 57300000
                },
                "parse_status_code": 12000
            },
            "created_at": "2022-05-09 07:25:03",
            "updated_at": "2022-05-09 07:25:07",
            "content": {
            "url": "https://www.google.com/search?q=adidas&tbm=nws&uule=w+CAIQICINdW5pdGVkIHN0YXRlcw&gl=us&hl=en",
            "job_id": "6929330379711060993",
            "status_code": 200,
            "parser_type": "v2"
        }
    ]
}
```

</details>

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

## Diccionario de datos de salida

#### Ejemplo HTML

<figure><img src="https://338917265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FSxmNbXjudpsJ4VcregnQ%2Fgoogle_news_search.png?alt=media&#x26;token=0453c806-368e-459e-ae54-78b434cbc250" alt=""><figcaption></figcaption></figure>

#### Estructura JSON

La salida estructurada de Google News Search incluye campos como `URL`, `Raspe múltiples páginas usando la misma dirección IP y sesión (conjunto de cookies). Al especificar los números de página en un array JSON con la`, `resultados`, 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 datos. 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 dependiendo de la consulta de búsqueda.
{% endhint %}

<table><thead><tr><th width="265">Clave</th><th width="368.3333333333333">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>string</td></tr><tr><td><code>resultados</code></td><td>Un diccionario que contiene los resultados de la búsqueda.</td><td>array</td></tr><tr><td><code>results.main</code></td><td>Una lista de resultados de noticias no pagados con sus respectivos detalles.</td><td>array</td></tr><tr><td><code>results.additional</code></td><td>Una lista de artículos en tendencia con sus respectivos detalles.</td><td>object</td></tr><tr><td><code>results.total_results_count</code></td><td>El número total de resultados encontrados para la consulta de búsqueda.</td><td>array</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 parser 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>integer</td></tr><tr><td><code>created_at</code></td><td>La marca de tiempo cuando se creó el trabajo de scraping.</td><td>timestamp</td></tr><tr><td><code>updated_at</code></td><td>La marca de tiempo cuando se finalizó el trabajo de scraping.</td><td>timestamp</td></tr><tr><td><code>Raspe múltiples páginas usando la misma dirección IP y sesión (conjunto de cookies). Al especificar los números de página en un array JSON con la</code></td><td>Número de página relativo a la paginación del SERP de Google.</td><td>integer</td></tr><tr><td><code>job_id</code></td><td>El ID del trabajo asociado con el trabajo de scraping.</td><td>string</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>integer</td></tr></tbody></table>

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

### Principal

Muestra una lista de resultados de noticias no pagados, proporcionando detalles relevantes para cada artículo.

<figure><img src="https://338917265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FPubsRUBP8Jq7MTMBax9g%2Fgoogle_news_search_3.png?alt=media&#x26;token=a36bcefb-fc14-4024-899d-517350b61fdf" alt=""><figcaption></figcaption></figure>

```json
...
"main": [
    {
        "url": "https://www.yahoo.com/lifestyle/tiger-woods-nikes-epic-partnership-015311819.html",
        "desc": "Que alguna vez pudiera existir un mundo en el que Tiger Woods no fuera patrocinado por \nNike parecía...",
        "title": "Cómo se desmoronó la épica asociación entre Tiger Woods y Nike",
        "source": "Yahoo",
        "pos_overall": 1,
        "relative_publish_date": "hace 1 día"
    },
                       ...
},

...
```

<table><thead><tr><th width="260.3333333333333">Clave (results.main)</th><th width="317">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>url</code></td><td>La URL al artículo completo.</td><td>string</td></tr><tr><td><code>desc</code></td><td>Un breve extracto del artículo completo.</td><td>string</td></tr><tr><td><code>title</code></td><td>El título del artículo.</td><td>string</td></tr><tr><td><code>source</code></td><td>El nombre del sitio web donde se publica el artículo.</td><td>string</td></tr><tr><td><code>pos_overall</code></td><td>Indica la posición general del resultado dentro de los resultados principales del SERP de Noticias.</td><td>integer</td></tr><tr><td><code>relative_publish_date</code></td><td>Describe cuánto tiempo hace que se publicó el artículo.</td><td>string</td></tr></tbody></table>

### Adicional

Presenta una lista de artículos en tendencia, acompañada de detalles relevantes.

<figure><img src="https://338917265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FijqjTbDfWASz2pRsCwdr%2Fgoogle_news_search_2.png?alt=media&#x26;token=33ec1e0d-54dd-4d1d-bd08-e337fd3b2f2e" alt=""><figcaption></figcaption></figure>

```json
...
"additional": [
    {
        "results": {
            {
                "pla": {
                "url": "https://www.complex.com/sneakers/a/brendan-dunne/nike-book-1-colorways-haven-hike-rattlesnake",
                "title": "Nike Book 1 Colorways Haven Hike Rattlesnake",
                "source": "Complex",
                "relative_publish_date": "hace 1 día"
            },
         ...
        ],
        "pos_overall": 2,
        "section_title": "Devin Booker confirma problemas con el lanzamiento de Nike Book 1"
    }
...
```

<table><thead><tr><th width="265.3333333333333">Clave (results.additional)</th><th width="366">Descripción</th><th>Tipo</th></tr></thead><tbody><tr><td><code>elementos</code></td><td>Una lista de artículos con sus respectivos detalles.</td><td>array</td></tr><tr><td><code>items.pos</code></td><td>Un indicador único que denota la posición del artículo en la lista.</td><td>integer</td></tr><tr><td><code>items.url</code></td><td>La URL al artículo completo.</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.source</code></td><td>El nombre del sitio web donde se publica el artículo.</td><td>string</td></tr><tr><td><code>items.relative_publish_date</code></td><td>Describe cuánto tiempo hace que se publicó el artículo.</td><td>string</td></tr><tr><td><code>pos_overall</code></td><td>Indica la posición general del resultado dentro de los resultados adicionales del SERP de Noticias.</td><td>integer</td></tr><tr><td><code>section_title</code></td><td>El nombre de la sección adicional.</td><td>string</td></tr></tbody></table>
