Construir una huella digital precisa de la solicitud
Describa la consulta, el dominio de Google, la ubicación codificada, el idioma de la interfaz, el país, el dispositivo, la superficie y la ventana de resultados requeridos por el flujo de trabajo.
Recopila resultados de Google como JSON estructurado para seguimiento de posiciones, investigación competitiva y herramientas de búsqueda. Define ubicación, idioma, dispositivo y tipo de búsqueda.
From query to usable objects
Describa la consulta, el dominio de Google, la ubicación codificada, el idioma de la interfaz, el país, el dispositivo, la superficie y la ventana de resultados requeridos por el flujo de trabajo.
Lea metadatos documentados y matrices de resultados en lugar de vincular su aplicación a la marca de presentación de una página de búsqueda.
Tratar los módulos de búsqueda como condicionales. Su presencia varía con el contexto de la solicitud y la superficie de Google devuelta para esa observación.
Almacenar el contexto de la solicitud junto a los resultados antes de calcular posiciones, cambios, cobertura de editores o señales específicas de productos.
Guarde esta huella digital con la respuesta analizada antes de comparar posiciones, módulos o editores a lo largo del tiempo.
Superficies de Google documentadas
Los resultados web regulares utilizan el motor de Google sin un selector vertical. Los controles documentados amplían el mismo modelo de solicitud a las superficies de medios, comercio y puestos de trabajo.
Envía engine=google y lo requerido q - ¡ Deje de aquí ! tbm no se ha configurado para los resultados de búsqueda regulares de Google.
Configure el selector vertical documentado en TBC = IHS.
Configure el selector vertical documentado en tbm=vid.
Configure el selector vertical documentado en Tbm=nws.
Configure el selector vertical documentado en TBM = tienda.
Utilice el valor de los puestos de trabajo documentados ibp=htl;jobs.
Parámetros de solicitud
Comience con el parámetro de consulta requerido. Agregue controles opcionales documentados solo cuando el flujo de trabajo necesita una superficie, presentación, localización o ventana de resultados en particular.
qLas palabras clave para buscar en Google.
cadena · requeridatbm ibptbm selecciona imágenes documentadas, videos, noticias o verticales de compras. ibp El valor de búsqueda de empleo documentado.
deviceSeleccione una presentación de búsqueda de escritorio, móvil o tableta compatible.
cuerdas · opcionalesdomainSeleccione el dominio de Google utilizado para la búsqueda.
cuerdas · opcionalesuulePasar una ubicación codificada de Google para el contexto de búsqueda.
cuerdas · opcionaleshl glhl establece el lenguaje de interfaz; gl proporciona el código de país utilizado para localizar la búsqueda.
start numstart es el resultado compensado para saltarse; num solicita el número de resultados en cada página.
Respuesta de Google analizada
La respuesta documentada contiene metadatos de búsqueda y colecciones de resultados JSON analizados. Los bloques presentes en una respuesta específica dependen de la consulta, el lugar, el dispositivo y la vertical de búsqueda.
01 · contexto
generalMotor de búsqueda, recuento de resultados, idioma, ubicación, presentación, tipo de búsqueda, título de página y campos de timestamp mostrados por el ejemplo de respuesta documentada.
02 · solicitud de seguimiento
inputSolicitar información como la URL original y los campos de agente de usuario mostrados en el ejemplo de respuesta documentada.
03 · caminos de descubrimiento
navigationLas entradas de navegación devueltas pueden identificar otras superficies de búsqueda de Google para la consulta.
04 · resultados analizados
organic[]Los objetos orgánicos documentados incluyen campos como enlace, enlace de visualización, título, descripción, rango y rango global cuando se devuelven.
Una solicitud contextual
Seleccione la consulta, la superficie de búsqueda, el dominio de Google, la ubicación codificada, el idioma, el país, el dispositivo y la ventana de página requerida por la decisión.
Envía una solicitud de GET a https://serpapi.webscrapingapi.com/v2 with api_key, engine=google, y q.
Inspeccione el resultado HTTP, analice JSON, lea las colecciones que necesita su flujo de trabajo y preserve el contexto de la solicitud con los resultados almacenados.
Solicitud sincrónica
engine=googleUtilice el camino estándar cuando la aplicación deba esperar la respuesta de Google analizada en curso.
Recuperación en fila
engine=google_asyncEnvía una búsqueda en Google y recupera la carga útil terminada de SERP más tarde a través de la API Snapshot.
La integración
Mantenga la clave de API en la configuración del lado del servidor, codifique los valores de la consulta, establezca un tiempo de espera explícito y permita que los resultados HTTP no tengan éxito antes de analizar la respuesta.
: "${WSA_API_KEY:?WSA_API_KEY is required}"
curl --get --fail-with-body --max-time 120 \
"https://serpapi.webscrapingapi.com/v2" \
--data-urlencode "api_key=$WSA_API_KEY" \
--data-urlencode "engine=google" \
--data-urlencode "q=best trail shoes" \
--data-urlencode "gl=us" \
--data-urlencode "hl=en" \
--data-urlencode "device=mobile"const apiKey = process.env.WSA_API_KEY;
if (!apiKey) throw new Error("WSA_API_KEY is required");
const parameters = new URLSearchParams({
"api_key": apiKey,
"engine": "google",
"q": "best trail shoes",
"gl": "us",
"hl": "en",
"device": "mobile",
});
const response = await fetch(
"https://serpapi.webscrapingapi.com/v2?" + parameters,
{ signal: AbortSignal.timeout(120_000) }
);
if (!response.ok) {
throw new Error("Google Search API status " + response.status);
}
console.log(await response.json());import os
import requests
api_key = os.environ.get("WSA_API_KEY")
if not api_key:
raise RuntimeError("WSA_API_KEY is required")
response = requests.get(
"https://serpapi.webscrapingapi.com/v2",
params={
"api_key": api_key,
"engine": "google",
"q": "best trail shoes",
"gl": "us",
"hl": "en",
"device": "mobile",
},
timeout=120,
)
response.raise_for_status()
print(response.json())<?php
$apiKey = getenv("WSA_API_KEY");
if ($apiKey === false || $apiKey === "") {
throw new RuntimeException("WSA_API_KEY is required");
}
$endpoint = "https://serpapi.webscrapingapi.com/v2"
. "?engine=google"
. "&api_key=" . rawurlencode($apiKey)
. "&q=" . rawurlencode("best trail shoes")
. "&gl=us&hl=en&device=mobile";
$client = curl_init($endpoint);
curl_setopt_array($client, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($client);
$status = curl_getinfo($client, CURLINFO_RESPONSE_CODE);
$error = curl_error($client);
curl_close($client);
if ($body === false) throw new RuntimeException($error);
if ($status >= 400) throw new RuntimeException("API status " . $status);
echo $body;package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
apiKey := os.Getenv("WSA_API_KEY")
if apiKey == "" { panic("WSA_API_KEY is required") }
endpoint := "https://serpapi.webscrapingapi.com/v2?engine=google" +
"&api_key=" + url.QueryEscape(apiKey) +
"&q=" + url.QueryEscape("best trail shoes") +
"&gl=us&hl=en&device=mobile"
client := &http.Client{Timeout: 120 * time.Second}
response, err := client.Get(endpoint)
if err != nil { panic(err) }
defer response.Body.Close()
if response.StatusCode >= 400 {
panic(fmt.Sprintf("API status %d", response.StatusCode))
}
body, err := io.ReadAll(response.Body)
if err != nil { panic(err) }
fmt.Println(string(body))
}import java.net.URI;
import java.net.URLEncoder;
import java.net.http.*;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
public final class GoogleSearchApiExample {
public static void main(String[] args) throws Exception {
String apiKey = System.getenv("WSA_API_KEY");
if (apiKey == null || apiKey.isBlank()) {
throw new IllegalStateException("WSA_API_KEY is required");
}
String endpoint = "https://serpapi.webscrapingapi.com/v2"
+ "?engine=google"
+ "&api_key=" + URLEncoder.encode(
apiKey, StandardCharsets.UTF_8)
+ "&q=" + URLEncoder.encode(
"best trail shoes", StandardCharsets.UTF_8)
+ "&gl=us&hl=en&device=mobile";
var request = HttpRequest.newBuilder(URI.create(endpoint))
.timeout(Duration.ofSeconds(120))
.GET().build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() < 200 || response.statusCode() >= 300) {
throw new RuntimeException("API status " + response.statusCode());
}
System.out.println(response.body());
}
}
using System;
using System.Net;
using System.Net.Http;
var rawApiKey = Environment.GetEnvironmentVariable("WSA_API_KEY");
if (string.IsNullOrWhiteSpace(rawApiKey)) {
throw new InvalidOperationException("WSA_API_KEY is required");
}
var apiKey = WebUtility.UrlEncode(rawApiKey);
var query = WebUtility.UrlEncode("best trail shoes");
var endpoint = "https://serpapi.webscrapingapi.com/v2"
+ "?engine=google&api_key=" + apiKey
+ "&q=" + query
+ "&gl=us&hl=en&device=mobile";
using var client = new HttpClient();
client.Timeout = TimeSpan.FromSeconds(120);
var response = await client.GetAsync(endpoint);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());require "net/http"
require "uri"
api_key = ENV["WSA_API_KEY"]
raise "WSA_API_KEY is required" if api_key.nil? || api_key.empty?
api_key = URI.encode_www_form_component(api_key)
query = URI.encode_www_form_component("best trail shoes")
uri = URI("https://serpapi.webscrapingapi.com/v2" +
"?engine=google&api_key=#{api_key}&q=#{query}" +
"&gl=us&hl=en&device=mobile")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.open_timeout = 10
http.read_timeout = 120
response = http.get(uri.request_uri)
unless response.is_a?(Net::HTTPSuccess)
raise "API status #{response.code}"
end
puts response.bodyhttps://serpapi.webscrapingapi.com/v2
api_key + engine=google + q
gl=us + hl=en + device=mobile
120 segundos de tiempo de espera del cliente y manejo explícito de errores HTTP
Flujos de trabajo de compradores
Compara las posiciones orgánicas devueltas y los módulos opcionales en consultas controladas, locales, dispositivos y ventanas de resultados.
Observe los dominios devueltos para los grupos de consultas aprobados manteniendo las reglas de ausencia y importancia dentro de su aplicación.
Map devolvió editores, títulos y descripciones en contextos de búsqueda y períodos de revisión comparables.
Definir el esquema, la marca de tiempo de observación, la huella digital de la solicitud, los estados de validación y el modelo de retención necesarios más allá del tiempo de solicitud JSON.
Selección de producto
Tu equipo posee el cliente de búsqueda, la lógica de recuperación, el análisis, el modelo de respuesta y el mantenimiento.
Infraestructura Recuperación de páginasSolicite una página pública elegible mientras su aplicación posea la extracción y su esquema descendente.
API de acceso a la webEnvía una consulta contextual de Google y consuma metadatos documentados plus colecciones de resultados analizados.
Utilice una solicitud REST respaldada por el navegador con pasos de espera documentados y interacción cuando los parámetros de búsqueda de Google no sean adecuados.
API de acceso a la web Entrega operativaConcordar el conjunto de consultas, la cadencia, el esquema, el proceso de calidad y la entrega con WebScrapingAPI.
Programa de datosEvaluamiento de la producción
Este es un modelo de planificación. los precios actuales y los términos del plan siguen siendo la fuente comercial de la verdad.
FAQ
Google Search API devuelve el contexto de la solicitud y las colecciones de resultados JSON analizadas. Los resultados orgánicos se documentan, mientras que la navegación y otros módulos de respuesta dependen de la consulta, el lugar, el dispositivo y la superficie de búsqueda solicitada.
Utilice q para la consulta requerida. Los controles opcionales documentados incluyen tbm, ibp, dispositivo, dominio, uule, hl, gl, inicio y num para la superficie de búsqueda, presentación, localización y paginado.
Deja TBm sin ajustar para la búsqueda web regular, o usa valores de TBm documentados para imágenes, videos, noticias y compras. Jobs utiliza el control de ibp documentado. Valida la forma devuelta para las superficies que necesita tu aplicación.
No. Los módulos de resultados de Google varían según la consulta, el lugar, el dispositivo y la vertical de búsqueda. Trate los bloques de respuesta como opcionales, distingue una colección ausente de una solicitud HTTP fallida y sólo lea los módulos que necesita su aplicación.
Utilice el motor google_async documentado por separado cuando su flujo de trabajo debe enviar una búsqueda de Google y recuperar la carga útil SERP terminada a través de la API Snapshot. El motor google estándar es el camino de solicitud sincrónica que se muestra en esta página.
Mantenga api_key en una variable del entorno del lado del servidor, valores de consulta de código de URL, establezca un tiempo límite explícito e inspeccione el estado HTTP antes de analizar JSON. Preserva el contexto de la solicitud junto a las observaciones almacenadas.
Su primera observación en Google
Usa la prueba de 100 solicitudes de Google para comprobar palabras clave, ubicaciones y salida antes de elegir un plan mensual.