Les entrées de marché restent explicites
Je le garde . mkt, cc, et lang visible au lieu de traiter la localisation comme une valeur unique interchangeable.
Obtenez les résultats Bing en JSON structuré pour les études de marché et le suivi des positions. Réglez le marché, la langue, le lieu, le filtrage et la pagination.
Visibles dans le Bing, conservé dans le contexte
Je le garde . mkt, cc, et lang visible au lieu de traiter la localisation comme une valeur unique interchangeable.
Utilisez un nom location avec des contrôles de latitude et de longitude pris en charge lorsque l'observation a besoin d'une recherche précise.
Consommez des objets de résultats documentés plutôt que d'intégrer un analyseur de page Bing dans votre application.
Interpréter les annonces, les images et autres modules absents en fonction de la requête jusqu'à ce que le contexte des résultats HTTP et de la réponse dise le contraire.
Une position retournée appartient à cette combinaisonet non à la requête isolée.
Conformité du produit
Ce point final est conçu pour des observations spécifiques à Bing et des résultats analysés. Valider les marchés représentatifs et les requêtes par rapport à la documentation actuelle avant de façonner un consommateur de production.
Une bonne taille
Construisez des mots clés, des éditeurs, des marques, des emplacements payants et des contrôles croisés autour des commandes Bing plutôt que de supposer que le modèle de demande d'un autre moteur s'applique.
Comparaison du marché et des langues
Observations basées sur l'emplacement et les coordonnées
Recherche en toute sécurité
Les fenêtres de comptage des déductions et de comptage des résultats
Contrôles de demande Bing
Commencez par la requête, puis ajoutez les données de marché, d'origine, de filtrage et de fenêtre de résultats nécessaires à la décision que votre application prendra.
Fournir la phrase de recherche que votre observation devrait représenter.
Décrire le contexte du marché et de la langue en utilisant les valeurs distinctes soutenues par le point final.
Indiquer une position géotarget ainsi que des valeurs de coordonnées prises en charge lorsqu'une origine précise est importante.
Définir la valeur de filtrage documentée qui appartient à l'observation.
Choisissez le résultat de compensation et le nombre de résultats demandés, puis stockez les deux avec les positions retournées.
Modèle de réponse analysé
Bing Search renvoie les métadonnées et analyse les collections de résultats JSON. Les collections de base et optionnelles doivent être consommées dans le cadre d'une seule observation contextuelle.
generalLes métadonnées au niveau de la réponse permettent d'identifier et d'inspecter l'observation de recherche retournée par le point final.
organic[]Utilisez les titres retournés, les liens, les descriptions et les positions observées selon la forme de réponse documentée.
related[]Les recherches associées peuvent fournir des affinements de requête lorsque la réponse Bing retournée expose cette collection.
module?Les annonces, les images et les autres sections sont des modules facultatifs et dépendants de la requête; ne supposez pas que chaque réponse réussie les contient.
Une demande contextuelle
Choisissez la requête Bing, le marché, le pays, la langue, l'origine, le niveau de recherche sécurisée et la fenêtre de résultats qui répondent à une question claire.
Appel /v2 with api_key, engine=bing, q, et le contexte documenté dont vous avez besoin.
Gérer les erreurs de transport, les délais et les statuts HTTP non réussis avant de parser le corps JSON.
Conservez l'empreinte digitale de la demande, les collections retournées, le temps d'observation et votre propre version du schéma pour une analyse comparable.
L'intégration
Gardez la clé API dans une variable d'environnement, cochez les valeurs de requête, définissez un délai explicite et gérez le résultat HTTP avant de consommer JSON.
: "${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=bing" \
--data-urlencode "q=coffee roasters" \
--data-urlencode "mkt=en-US" \
--data-urlencode "cc=us" \
--data-urlencode "lang=en"const apiKey = process.env.WSA_API_KEY;
if (!apiKey) throw new Error("WSA_API_KEY is required");
const url = new URL(
"https://serpapi.webscrapingapi.com/v2?engine=bing&q=coffee%20roasters"
);
url.searchParams.set("api_key", apiKey);
url.searchParams.set("mkt", "en-US");
url.searchParams.set("cc", "us");
url.searchParams.set("lang", "en");
const response = await fetch(url, {
signal: AbortSignal.timeout(120_000),
});
if (!response.ok) {
throw new Error("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": "bing",
"q": "coffee roasters",
"mkt": "en-US",
"cc": "us",
"lang": "en",
},
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");
}
$parameters = http_build_query([
"api_key" => $apiKey,
"q" => "coffee roasters",
"mkt" => "en-US",
"cc" => "us",
"lang" => "en",
]);
$client = curl_init(
"https://serpapi.webscrapingapi.com/v2?engine=bing&" . $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 < 200 || $status >= 300) {
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") }
requestURL := "https://serpapi.webscrapingapi.com/v2?" +
"api_key=" + url.QueryEscape(apiKey) +
"&engine=bing&q=" + url.QueryEscape("coffee roasters") +
"&mkt=en-US&cc=us&lang=en"
client := &http.Client{Timeout: 120 * time.Second}
response, err := client.Get(requestURL)
if err != nil { panic(err) }
defer response.Body.Close()
if response.StatusCode < 200 || response.StatusCode >= 300 {
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.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
public final class BingSearchExample {
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 key = URLEncoder.encode(apiKey, StandardCharsets.UTF_8);
String url = "https://serpapi.webscrapingapi.com/v2?api_key=" + key
+ "&engine=bing&q=coffee%20roasters"
+ "&mkt=en-US&cc=us&lang=en";
var request = HttpRequest.newBuilder()
.uri(URI.create(url))
.timeout(Duration.ofSeconds(120))
.GET().build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() < 200 || response.statusCode() >= 300) {
throw new IllegalStateException("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 requestUrl =
"https://serpapi.webscrapingapi.com/v2?api_key=" + apiKey +
"&engine=bing&q=coffee%20roasters" +
"&mkt=en-US&cc=us&lang=en";
using var client = new HttpClient {
Timeout = TimeSpan.FromSeconds(120)
};
var response = await client.GetAsync(requestUrl);
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?
uri = URI(
"https://serpapi.webscrapingapi.com/v2?engine=bing&q=coffee%20roasters"
)
parameters = URI.decode_www_form(uri.query) + [
["api_key", api_key],
["mkt", "en-US"],
["cc", "us"],
["lang", "en"]
]
uri.query = URI.encode_www_form(parameters)
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
WSA_API_KEY reste côté serveur
api_key + engine=bing + q
mkt + cc + lang
Temps de 120 secondes et traitement explicite de l'état
Flux de travail des acheteurs
Suivre les positions retournées sur les combinaisons de marché, de langue, d'origine et de fenêtre de résultats contrôlés.
Observer les domaines approuvés dans les groupes de requêtes Bing sans considérer une absence comme une découverte universelle.
Capturez les modules de résultats payants lorsqu'ils sont présents et gardez l'interprétation de la campagne dans votre processus d'examen.
Ajouter des sources Bing et des requêtes connexes à la recherche qui ne représenteraient qu'un seul moteur de recherche.
Comparaison du moteur
Contrôles de localisation, de langue, de périphérique, verticale et de pagination pour les observations de résultats de Google.
Compare GoogleContrôles de marché, pays, langue, origine, recherche sécurisée et fenêtre de résultats avec collections analysées.
Région, langage d'interface, recherche sécurisée et contrôle de temps avec le HTML SERP source dans une enveloppe JSON.
Compare DuckDuckGo Charge utile de la sourceContrôles régionales, linguistiques, de périphériques, de pages et de temps avec le HTML SERP source dans une enveloppe JSON.
Compare YandexPrix et évaluation
Questions représentatives Incluez les cas de tête, de queue longue et de module zéro.
Contexts requis Exercez les marchés, les langues, les origines et les niveaux de filtrage que vous allez stocker.
États de consommation Vérifiez les réponses réussies, les collections facultatives, les délais et les erreurs documentées.
Questions fréquentes sur l’API de recherche Bing
Bing Search API renvoie la demande de métadonnées et les collections de résultats JSON analysées. Les collections documentées comprennent des résultats organiques et connexes; les annonces, les images et autres modules sont facultatifs et ne s'affichent que lorsque la page Bing retournée les expose.
Utilisez mkt pour un marché, cc pour le contexte du pays, lang pour la langue et localisation avec lat et lon pour une origine de recherche précise.
Le premier paramètre définit le résultat de l'offset et le compte demande la taille de la fenêtre de résultat.
Pas par elle-même. Inspectons d'abord l'état HTTP et le corps d'erreur documenté. Une réponse réussie peut omettre une collection optionnelle lorsque cette page Bing n'a pas exposé le module de résultat correspondant pour la requête et le contexte fournis.
Oui. Utilisez le paramètre de recherche sécurisée documenté pour le niveau de filtrage requis par la demande. Gardez cette valeur avec l'observation car en la modifiant, les résultats et modules retournés peuvent changer.
L'API de recherche Bing accepte le contexte de recherche spécifique à Bing et renvoie les métadonnées documentées plus collections de résultats analysés. API de scraping récupère une page Web publique admissible, laissant l'extraction et le modèle de données en aval avec votre application.
Votre première observation Bing
Partagez moteur, requêtes, marchés et fréquence. Nous confirmons le format de réponse et le prix pour votre charge de travail.