Haz scraping de resultados de Google Search optimizados para la máxima visibilidad de anuncios de pago, con datos analizados de anuncios de pago, resultados orgánicos, paneles de Knowledge Graph, carruseles de imágenes y más.
El google_ads source está optimizado para recuperar resultados de Google Search (SERPs) y Google AI Overviews con anuncios de pago en un máxima tasa de anuncios. La source devolverá solo diez resultados por página, lo que garantiza las mayores posibilidades de que aparezcan resultados de pago. Fuera de eso, admite los mismos parámetros que regular WebBúsqueda.
Ejemplos de solicitud
En este ejemplo, hacemos una solicitud para recuperar resultados de búsqueda de la palabra clave adidas.
import requestsfrom pprint import pprint# Estructura la carga útil.payload ={'source':'google_ads','query':'adidas','parse':True}# Obtén la respuesta.response = requests.request('POST','https://realtime.oxylabs.io/v1/queries',auth=('USERNAME','PASSWORD'),json=payload,)# Imprime la respuesta con formato en stdout.pprint(response.json())
Tipo de dispositivo y navegador. La lista completa se puede encontrar aquí.
desktop
- parámetro obligatorio
Localización
Adapta los resultados de búsqueda a ubicaciones geográficas e idiomas específicos.
Parámetro
Descripción
Valor predeterminado
geo_location
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 geo_location estructuras de parámetros aquí.
-
locale
Accept-Language valor del encabezado que cambia el idioma de la interfaz web de tu página de búsqueda de Google. Más información.
-
Paginación
Controles para gestionar la paginación y la recuperación de resultados de búsqueda.
Parámetro
Descripción
Valor predeterminado
start_page
Número de página inicial.
1
pages
Número de páginas a recuperar.
1
Filtrado
Opciones para filtrar y refinar los resultados de búsqueda según varios criterios.
Parámetro
Descripción
Valor predeterminado
context:
udm
udm 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 aquí.
-
context:
tbm
To-be-matched o tbm parámetro. Los valores aceptados son: app, blg, bks, dsc, isch, nws, pts, plcs, rcp, lcl
-
context:
tbs
tbs parámetro. Este parámetro funciona como un contenedor para parámetros de Google más obscuros, como limitar/ordenar resultados por fecha, así como otros filtros, algunos de los cuales dependen de tbm (p. ej. tbs=app_os:1 solo está disponible con el tbm valor app). Más información aquí.
-
Otros
Configuraciones y controles avanzados adicionales para requisitos especializados.
Parámetro
Descripción
Valor predeterminado
context:
nfpr
true desactivará la autocorrección ortográfica
false
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.:
Ejemplo de salida
google_ads salida estructurada
Diccionario de salida
google_ads la salida incluye campos como URL, página, resultados y más. La siguiente tabla presenta una lista detallada de cada elemento de Google Ads Max que analizamos, incluida la descripción, el tipo de dato y metadatos relevantes.
El número de elementos y campos para un tipo de resultado específico puede variar según la consulta de búsqueda.
Nombre de clave
Descripción
Tipo
url
La URL de la página de resultados de búsqueda de Google.
string
page
Número de página.
integer
resultados
Un object que contiene todos los tipos de resultados de búsqueda.
object
results.paid
Lista de resultados de anuncios de pago con detalles como título, descripción, URL y sitelinks.
array
results.organic
Lista de resultados de búsqueda orgánicos (no de pago) con título, descripción, URL y sitelinks.
array
results.images
Resultados de carrusel de imágenes mostrados en la página de búsqueda.
object
results.instant_answers
Funciones especiales o cuadros de respuesta instantánea mostrados en la página.
array
results.knowledge
Datos del panel de Knowledge Graph que incluyen título, descripción, imágenes, hechos y búsquedas relacionadas.
object
results.navigation
Pestañas de navegación para cambiar entre tipos de búsqueda (Imágenes, Videos, Noticias, etc.).
array
results.related_searches
Sugerencias de búsqueda relacionadas con sus consultas y posición.
object
results.search_information
Metadatos sobre la búsqueda, incluida la consulta y el recuento total de resultados.
object
results.total_results_count
Número total estimado de resultados para la consulta.
integer
results.video_boxes
Información del cuadro de video (más detalles aquí)
array
parse_status_code
Código de estado de la operación de análisis.
integer
created_at
Marca de tiempo en que se creó el trabajo de scraping.
timestamp
updated_at
Marca de tiempo en que se terminó el trabajo de scraping.
timestamp
job_id
ID del trabajo asociado con el trabajo de scraping.
string
status_code
Código de estado del trabajo de scraping. Puedes ver los códigos de estado del scraper descritos aquí.
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_ads",
query = "adidas",
parse = true
};
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);
}
}
}
package org.example;
import okhttp3.*;
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_ads");
jsonObject.put("query", "adidas");
jsonObject.put("parse", true);
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();
}
}