La forme de réponse indiquée à l'avance
Sachez si le moteur renvoie des collections de résultats analysés ou une charge utile de la SERP source avant de concevoir le consommateur.
API SERP
Recevez les résultats Google et Bing en JSON structuré. Capturez le HTML des SERP DuckDuckGo et Yandex dans une enveloppe JSON, avec paramètres de requête et de localisation.
Les données de recherche sans le scraper
Sachez si le moteur renvoie des collections de résultats analysés ou une charge utile de la SERP source avant de concevoir le consommateur.
Gardez les entrées du moteur, de la requête, de la localisation, de la langue, du dispositif, de la verticale et de la pagination à côté de chaque observation.
WebScrapingAPI exécute le chemin de récupération de recherche pris en charge et maintient une gestion documentée des réponses.
Pour les points d'extrémité analysés, les collections de résultats facultatives ne s'affichent que lorsque le SERP retourné les expose; l'absence n'est pas automatiquement une défaillance de collecte.
Conserver l'empreinte digitale de la demande avec les résultats stockés afin que les comparaisons restent similaires.
Couverture documentée
Chaque moteur a ses propres paramètres et sa forme de réponse. Choisissez d'abord le point de fin, puis validez les types de résultats requis avec des requêtes représentatives.
Google Search prend en charge les contrôles documentés du Web, des images, des vidéos, des nouvelles, des achats et des emplois.
googlegoogle_asyncgoogle_mapsgoogle_flightsgoogle_maps_reviewsgoogle_reverse_imagegoogle_trendsgoogle_hotelsRecevoir des collections de résultats JSON documentées avec des contrôles de marché, de localisation, de langue, de recherche sécurisée, de compensation et de comptage des résultats.
Recevez les métadonnées de la demande et la charge utile de l'HTML SERP source à l'intérieur d'une enveloppe JSON, avec des contrôles de région, de langage d'interface, de recherche sécurisée, de rang de temps et de périphérique documentés.
Recevez les métadonnées de la demande et la charge utile de l'HTML SERP source à l'intérieur d'une enveloppe JSON, avec des contrôles de localisation, de langue, d'appareil, de page et de rang de temps documentés.
Limite de couverture: Un nom de moteur n'implique pas de contrôles ou de partage identiques. Google et Bing document parcourus collections de résultats JSON; DuckDuckGo et Yandex document une enveloppe JSON contenant la charge utile HTML SERP source. La documentation de point d'extrémité actuelle reste la source de production de vérité.
Réponse du moteur
Les collections analysées et les charges de source nécessitent différents consommateurs. Sélectionnez d'abord le moteur, validez sa forme de réponse actuelle et préservez le contexte de la demande à côté de la sortie.
Les méta-données de moteur, de requête et de réponse exposées par le point final sélectionné.
search_parameters · generalTitres, liens, descriptions, positions observées et modules facultatifs où documentés et retournés.
organic[] · related[] · module?La charge utile HTML source est renvoyée à l'intérieur de l'enveloppe JSON; votre application possède toute extraction de celle-ci.
search_results: "<html>…</html>"Ajoutez des identifiants d'exécution, des timestamps demandés, des identifiants de requête-groupe et des versions de schéma lorsque les résultats entrent dans vos systèmes.
run_id · observed_at · schemaLes commandes de recherche Google
Commencez par la requête requise. Ajoutez seulement le contexte documenté nécessaire pour rendre l'observation utile et comparable.
Utilisez la requête, une verticale prise en charge ou le contrôle de recherche d'emploi documenté.
qtbmibpDéfinir les valeurs de domaine pris en charge, de localisation codée, de langue, de pays et d'appareil.
domainuulehlgldeviceUtilisez le décalage documenté et le nombre de résultats demandés pour la fenêtre de page dont vous avez besoin.
startnumengine=googleUtilisez le chemin documenté standard lorsque l'application doit attendre la réponse actuelle.
Review synchronous parametersengine=google_asyncUtilisez le flux de travail documenté dédié lorsque la recherche Google en file d'attente correspond à la charge de travail.
Review asynchronous workflowUne seule demande
Définir l'observation
Choisissez le moteur, la requête et les paramètres de localisation, de langue, de périphérique, de type de recherche et de pagination pris en charge.
Envoyez la demande
Appeler le serveur côté SERP terminal avec votre clé API. WebScrapingAPI exploite la prise en charge de la récupération et de la gestion de la réponse.
Validation et utilisation
Inspectez l'état HTTP et la forme de réponse spécifique au moteur, puis conservez le contexte requis par le classement, l'extraction, l'alerte ou les flux de travail de recherche.
L'intégration
Gardez la clé API à l'extérieur du code côté client, des valeurs de recherche de code URL, définissez un délai et inspectez les échecs HTTP avant de parser la réponse.
Rapport de demande
Utilisez le même moteur, le même marché, le même langage, le même appareil et le même type de recherche sur lesquels votre produit sera basé dans la production.
WSA_API_KEY reste côté serveurapi_key + engine + qgl + hl + devicecurl --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=running shoes" \
--data-urlencode "gl=us" \
--data-urlencode "hl=en" \
--data-urlencode "device=mobile"import os
import requests
response = requests.get(
"https://serpapi.webscrapingapi.com/v2",
params={
"api_key": os.environ["WSA_API_KEY"],
"engine": "google",
"q": "running shoes",
"gl": "us",
"hl": "en",
"device": "mobile",
},
timeout=120,
)
response.raise_for_status()
print(response.json())const parameters = new URLSearchParams({
api_key: process.env.WSA_API_KEY,
engine: "google",
q: "running 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("API status " + response.status);
console.log(await response.json());<?php
$parameters = http_build_query([
"api_key" => getenv("WSA_API_KEY"),
"engine" => "google",
"q" => "running shoes",
"gl" => "us",
"hl" => "en",
"device" => "mobile",
]);
$client = curl_init("https://serpapi.webscrapingapi.com/v2?" . $parameters);
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() {
parameters := url.Values{}
parameters.Add("api_key", os.Getenv("WSA_API_KEY"))
parameters.Add("engine", "google")
parameters.Add("q", "running shoes")
parameters.Add("gl", "us")
parameters.Add("hl", "en")
parameters.Add("device", "mobile")
client := &http.Client{Timeout: 120 * time.Second}
response, err := client.Get(
"https://serpapi.webscrapingapi.com/v2?" + parameters.Encode(),
)
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 SerpApiExample {
public static void main(String[] args) throws Exception {
String queryString = "api_key=" + URLEncoder.encode(
System.getenv("WSA_API_KEY"), StandardCharsets.UTF_8
) + "&engine=google&q=running%20shoes"
+ "&gl=us&hl=en&device=mobile";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://serpapi.webscrapingapi.com/v2?" + queryString))
.timeout(Duration.ofSeconds(120))
.GET().build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
throw new RuntimeException("API status " + response.statusCode());
}
System.out.println(response.body());
}
}
using System;
using System.Net;
var apiKey = WebUtility.UrlEncode(
Environment.GetEnvironmentVariable("WSA_API_KEY")
);
var requestUrl =
"https://serpapi.webscrapingapi.com/v2?api_key=" + apiKey +
"&engine=google&q=running%20shoes" +
"&gl=us&hl=en&device=mobile";
using var client = new HttpClient();
client.Timeout = TimeSpan.FromSeconds(120);
var response = await client.GetAsync(requestUrl);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());require "net/http"
require "uri"
uri = URI("https://serpapi.webscrapingapi.com/v2")
uri.query = URI.encode_www_form(
api_key: ENV.fetch("WSA_API_KEY"),
engine: "google",
q: "running shoes",
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)
raise "API status #{response.code}" unless response.is_a?(Net::HTTPSuccess)
puts response.bodyPropriété opérationnelle
WebScrapingAPI exploite
Votre équipe possède
Limite de décision: SERP API does not define a universal rank, decide whether an absence is commercially meaningful, or operate your downstream analytics. Use eligible public results in line with the Accord de service and applicable requirements.
Cas d'utilisation
Choix de produit
Votre équipe possède le client de recherche, la logique d'accès, l'analyse, la maintenance et le modèle de résultats.
WebScrapingAPI récupère une page publique admissible alors que votre demande possède l'extraction.
Envoyez une requête de recherche prise en charge et recevez des collections parsemées où elles sont documentées, ou une charge utile SERP source à l'intérieur d'une enveloppe JSON.
Utilisez une demande REST soutenue par le navigateur avec des attentes documentées et des étapes d'interaction lorsque les paramètres SERP spécifiques au moteur ne conviennent pas.
WebScrapingAPI exploite un ensemble de requêtes convenu, la cadence, le schéma, le processus de qualité et la livraison.
Évaluation de la production
La formule est un modèle de planification, pas une promesse de facturation.
FAQ
API SERP est un point final du côté du serveur pour envoyer une requête de recherche avec un contexte documenté et recevoir la forme de réponse prise en charge par ce moteur. Google et Bing document parcouru les collections de résultats JSON; DuckDuckGo et Yandex document une enveloppe JSON contenant des métadonnées de requête et la charge utile HTML SERP source.
La réponse dépend du moteur sélectionné. Google et Bing document JSON métadonnées plus collections de résultats analysés. DuckDuckGo et Yandex document JSON métadonnées plus la charge utile de source SERP HTML, que votre application peut stocker ou extraire selon son propre modèle de données.
Pour les moteurs avec des collections parsemées documentées, les modules retournés dépendent du moteur, de la requête, de l'emplacement, de l'appareil et du type de recherche. Les résultats organiques et les modules spécifiques aux points d'extrémité tels que les annonces, les éléments locaux, les achats, les médias ou les recherches connexes ne s'affichent que lorsque la page de recherche retournée les expose.
Utilisez les paramètres documentés pour le moteur sélectionné. Google recherche documents domaine, emplacement codé, langue d'interface, pays, et les contrôles de bureau, mobile ou tablette; d'autres moteurs utilisent leurs propres paramètres de marché et de localisation.
La documentation comprend un moteur de recherche Google asynchrone dédié pour la récupération en file d'attente. Traitez le comportement asynchrone comme spécifique au point d'extrémité et utilisez la documentation du flux de travail actuel lors de la mise en œuvre de la soumission et de la récupération des résultats.
WebScrapingAPI maintient la gestion de réponse prise en charge et les collections analysées où la documentation des points d'extrémité les fournit. DuckDuckGo et Yandex renvoient actuellement la charge utile du SERP HTML source dans une enveloppe JSON, de sorte que votre équipe possède toute extraction de cette charge utile ainsi que son modèle de données interne et ses décisions en aval.
Inspectez l'état HTTP et le corps d'erreur documenté, utilisez des tentatives limitées le cas échéant et distinguer une demande ratée d'une réponse de recherche réussie dans laquelle une collection de résultats facultatives est absente ou vide.
Votre première observation
Utilisez l’essai Google de 100 requêtes pour vérifier mots-clés, lieux et sortie avant de choisir un forfait mensuel.