Los insumos del mercado siguen siendo explícitos
Mantenga . mkt, cc, y lang visibles en lugar de tratar la localización como un único valor intercambiable.
Obtén resultados de Bing en JSON estructurado para investigación de mercado y seguimiento de posiciones. Controla mercado, idioma, ubicación, búsqueda segura y paginación.
Visiblidad de Bing, mantenida en contexto
Mantenga . mkt, cc, y lang visibles en lugar de tratar la localización como un único valor intercambiable.
Utilice un nombre location con controles de latitud y longitud apoyados cuando la observación necesita un origen de búsqueda preciso.
Consuma objetos de resultados documentados en lugar de construir un paresador de páginas de Bing en su aplicación.
Interpretar los anuncios, imágenes y otros módulos ausentes como dependientes de la consulta hasta que el contexto de resultados y respuesta HTTP diga lo contrario.
Una posición devuelta pertenece a esta combinaciónno a la consulta aislada.
Aplicación del producto
Este punto final está diseñado para observaciones específicas de Bing y resultados analizados. Valida mercados y consultas representativas con la documentación actual antes de dar forma a un consumidor de producción.
Un ajuste fuerte
Construir palabras clave, editor, marca, ubicación pagada y monitoreo transversal alrededor de los controles de Bing en lugar de asumir que se aplica el modelo de solicitud de otro motor.
Comparaciones de mercado y lenguaje
Observaciones basadas en la ubicación y las coordenadas
Investigación controlada de búsqueda segura
Ventanas de compensación y de recuento de resultados
Control de las solicitudes de Bing
Comience con la consulta, luego añada el mercado documentado, origen, filtración y entradas de ventana de resultados necesarias para la decisión que tomará su aplicación.
Proporcione la frase de búsqueda que su observación debería representar.
Describa el contexto del mercado y del idioma utilizando los valores distintos que apoya el punto final.
Indique una ubicación geotarget junto con valores de coordenadas compatibles cuando sea importante un origen preciso.
Establezca el valor de filtración documentado que pertenece a la observación.
Seleccione el resultado de compensación y el número de resultados solicitados, y luego almacene ambos con posiciones devueltas.
Modelo de respuesta analizado
Bing Search devuelve metadatos y colecciones de resultados en JSON ya analizados. Las colecciones principales y opcionales deben consumirse como partes de una misma observación contextual.
generalLos metadatos de nivel de respuesta ayudan a identificar e inspeccionar la observación de búsqueda devuelta por el punto final.
organic[]Utilice los títulos devueltos, los enlaces, las descripciones y las posiciones observadas de acuerdo con la forma de respuesta documentada.
related[]Las búsquedas relacionadas pueden proporcionar mejoras en la consulta cuando la respuesta de Bing devuelta expone esa colección.
module?Los anuncios, las imágenes y otras secciones son módulos opcionales y dependientes de la consulta; no asuma que cada respuesta exitosa los contiene.
Una solicitud contextual
Seleccione la consulta de Bing, mercado, país, idioma, origen, nivel de búsqueda segura y ventana de resultados que responden a una pregunta clara.
Llamé /v2 with api_key, engine=bing, q, y el contexto documentado que necesita su carga de trabajo.
Manejar errores de transporte, tiempos de salida y estados HTTP no exitosos antes de analizar el cuerpo JSON.
Conservar la huella digital de la solicitud, las colecciones devueltas, el tiempo de observación y su propia versión del esquema para un análisis comparable.
La integración
Mantenga la clave de API en una variable de entorno, codifique los valores de la consulta, establezca un tiempo límite explícito y maneje el resultado HTTP antes de consumir 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 permanece en el lado del servidor
api_key + engine=bing + q
mkt + cc + lang
120 segundos de tiempo de espera y manejo explícito del estado
Flujos de trabajo de compradores
Seguir las posiciones devueltas en combinaciones de mercado, idioma, origen y ventana de resultados controlados.
Observa los dominios aprobados en los grupos de consultas de Bing sin tratar una ausencia como un hallazgo universal.
Captura módulos de resultados pagados cuando estén presentes y mantenga la interpretación de la campaña dentro de su proceso de revisión.
Añadir fuentes de Bing y consultas relacionadas a la investigación que de otro modo representarían sólo un motor de búsqueda.
Comparación de motores
Los controles de ubicación, lenguaje, dispositivo, vertical y paginado para las observaciones de resultados de Google.
Compare GoogleMercado, país, idioma, origen, búsqueda segura y control de ventana de resultados con colecciones analizadas.
Región, lenguaje de interfaz, búsqueda segura y control de tiempo con la fuente SERP HTML en un envase JSON.
Compare DuckDuckGo Carga útil de la fuenteControles regionales, de idioma, de dispositivo, de página y de tiempo con el HTML SERP de origen en un envase JSON.
Compare YandexPrecios y evaluación
Consultas representativas Incluye los casos de cabeza, cola larga y módulos cero.
Contexto requerido Exercita los mercados, idiomas, orígenes y niveles de filtración que almacenará.
Estados de consumo Verifique las respuestas exitosas, las colecciones opcionales, los tiempos de espera y los errores documentados.
Preguntas frecuentes sobre la API de búsqueda de Bing
Bing Search API devuelve la solicitud de metadatos y las colecciones de resultados JSON analizadas. Las colecciones documentadas incluyen resultados orgánicos y relacionados; los anuncios, imágenes y otros módulos son opcionales y aparecen solo cuando la página de Bing devuelta los expone.
Utilice mkt para un mercado, cc para el contexto del país, lang para el idioma y ubicación con lat y lon para un origen de búsqueda preciso. Describen diferentes partes de la solicitud, así que preserva los valores que envías con cada observación almacenada.
El primer parámetro establece el resultado de compensación y cuenta solicitudes del tamaño de la ventana de resultados. Almacenar ambos valores con posiciones devueltas para que las páginas separadas no se comparan como si fueran la misma observación.
Una respuesta exitosa puede omitir una colección opcional cuando esa página de Bing no expone el módulo de resultado correspondiente para la consulta y el contexto proporcionados.
Sí. Utilice el parámetro de búsqueda segura documentado para el nivel de filtración requerido por la solicitud. Mantenga ese valor con la observación porque cambiarlo puede cambiar los resultados y módulos que se devuelven.
Bing Search API acepta el contexto de búsqueda específico de Bing y devuelve metadatos documentados plus recopilaciones de resultados analizados. API de scraping recupera una página web pública elegible, dejando la extracción y el modelo de datos en aguas abajo con su aplicación.
Su primera observación de Bing
Comparte el buscador, consultas, mercados y frecuencia. Confirmaremos el formato de respuesta y el precio para tu carga de trabajo.