购物搜索
该 google_shopping_search source 返回来自 Google Shopping 的搜索结果。每个渲染结果包含一个 产品令牌 ,该字段是使用 google_shopping_product source.
请求示例
在下面的代码示例中,我们搜索 “Nvidia RTX” 以获取产品 令牌 在响应中。
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
"source": "google_shopping_search",
"query": "nvidia rtx",
"render": "html",
"parse": true
}'import requests
from pprint import pprint
# 构建负载(payload)。
payload = {
"source": "google_shopping_search",
"query": "nvidia rtx",
"render": "html",
"parse": True
}
# 获取响应。
response = requests.request(
"POST",
"https://realtime.oxylabs.io/v1/queries",
auth=("USERNAME", "PASSWORD"),
json=payload,
)
# 将美化后的响应打印到标准输出。
pprint(response.json())const https = require("https");
const username = "USERNAME";
const password = "PASSWORD";
const body = {
source: "google_shopping_search",
query: "nvidia rtx",
render: "html",
parse: true
};
const options = {
hostname: "realtime.oxylabs.io",
path: "/v1/queries",
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization:
"Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
},
};
const request = https.request(options, (response) => {
let data = "";
response.on("data", (chunk) => {
data += chunk;
});
response.on("end", () => {
const responseData = JSON.parse(data);
console.log(JSON.stringify(responseData, null, 2));
});
});
request.on("error", (error) => {
console.error("Error:", error);
});
request.write(JSON.stringify(body));
request.end();https://realtime.oxylabs.io/v1/queries?source=google_shopping_search&query=nvidia+rtx&render=html&parse=true&access_token=12345abcde<?php
$params = array(
'source' => 'google_shopping_search',
'query' => 'nvidia rtx',
'render' => 'html',
'parse' => true
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");
$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo $result;
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
const Username = "USERNAME"
const Password = "PASSWORD"
payload := map[string]interface{}{
"source": "google_shopping_search",
"query": "nvidia rtx",
"render": "html",
"parse": true,
}
jsonValue, _ := json.Marshal(payload)
client := &http.Client{}
request, _ := http.NewRequest("POST",
"https://realtime.oxylabs.io/v1/queries",
bytes.NewBuffer(jsonValue),
)
request.SetBasicAuth(Username, Password)
response, _ := client.Do(request)
responseText, _ := ioutil.ReadAll(response.Body)
fmt.Println(string(responseText))
}
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_shopping_search",
query = "nvidia rtx",
render = "html",
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.JSONArray;
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_shopping_search");
jsonObject.put("query", "nvidia rtx");
jsonObject.put("render", "html");
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();
}
}{
"source": "google_shopping_search",
"query": "nvidia rtx",
"render": "html",
"parse": true
}注意: 只有已渲染的解析作业才会返回产品 token。
在我们的示例中,我们使用同步的 Realtime 集成方法。如果您想使用 Proxy Endpoint 或异步的 Push-Pull 集成,请参阅 集成方法 部分。
请求参数值
通用
- 必填参数
本地化
注意: 请确保您针对 google_shopping_product 和 google_shopping_search sources 的本地化参数相同(未定义则为无)。来源之间的区域不一致可能导致数据不完整或不准确。
分页
用于管理分页和检索搜索结果的控制项。
start_page
起始页码。
1
pages
要检索的页数。
1
上下文参数
用于定制搜索上下文或满足特殊需求的高级选项。上下文参数应如下面所示添加到 context 数组:
...
"context": [
{
"key": "filter",
"value": "0"
}
]
...context:
排序依据
按给定条件对产品列表进行排序。 r 应用 Google 默认排序, rv - 按评论评分排序, p - 按价格升序, pd - 按价格降序。
r
context:
min_price
要筛选的产品最低价格。
-
context:
max_price
要筛选的产品最高价格。
-
context:
nfpr
true 将关闭拼写自动更正。
-
结构化数据
下面您可以找到一个 结构化输出示例 用于 google_shopping_search.
输出数据字典
HTML 示例

JSON 结构
下表列出了我们解析的每个搜索页面元素的详细清单,包括其描述和数据类型。该表还包含一些元数据。
url
查询对应的 Google Shopping 搜索页面的 URL。
字符串
page
搜索结果的当前页码。
整数
results
包含详细搜索结果的对象。
对象
pla (可选)
包含各自详情的商品列表广告清单。
数组
filters (可选)
各种过滤器的列表。
数组
organic
包含各自详细信息的非付费列表清单。
数组
search_information
提交的搜索查询的详细信息清单。
对象
search_information.query
原始搜索词。
字符串
search_information.showing_results_for
显示搜索结果所用的搜索词。若 Google 自动更正了提供的搜索词,`query` 与 `showing_results_for` 可能不同。
字符串
last_visible_page
标识在搜索结果页面中可见的最大页码的值。(当通过滚动加载更多结果时为 -1)。
整数
created_at
抓取任务创建的时间戳。
时间戳
updated_at
抓取任务完成的时间戳。
时间戳
job_id
与抓取任务关联的作业 ID。
字符串
付费商品列表广告
包含商品列表广告(PLA)数组的对象,包含产品的 PLA。 (示例说明)
...
"pla": [
{
"items": [
{
"pos": 1,
"url": "/aclk?sa=l&ai=DChcSEwiY8fLUi9OGAxVtj1AGHYnVBj0YABABGgJkZw&gclid=EAIaIQobChMImPHy1IvThgMVbY9QBh2J1QY9EAQYASABEgKpS_D_BwE&sig=AOD64_2DguiyFTR4GRY6Ww9o__l9HgJC_A&ctype=5&q=&ved=0ahUKEwj-6ezUi9OGAxWiWUEAHdbxAgsQww8I2xA&adurl=",
"price": "$2,199.00",
"title": "Polycade Sente: Black",
"seller": "Polycade",
"thumbnail": "https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcS59ZNOrZH96cy_cOgzxL52VoJYq9iPl7q8g26f9odcuG8pY8ZRxe9YMhkZDPnFAZDyP04lu29gy57ObwsKpWHb_pzQBja34tkErnSAz3nw&usqp=CAE"
},
{
"pos": 2,
"url": "/aclk?sa=l&ai=DChcSEwiY8fLUi9OGAxVtj1AGHYnVBj0YABADGgJkZw&gclid=EAIaIQobChMImPHy1IvThgMVbY9QBh2J1QY9EAQYAiABEgJwHvD_BwE&sig=AOD64_0LFB8jrHwNdEkmOdjcjGOdhQ9ZVg&ctype=5&q=&ved=0ahUKEwj-6ezUi9OGAxWiWUEAHdbxAgsQww8I3hA&adurl=",
"price": "$2,199.00",
"title": "Polycade Sente: White",
"seller": "Polycade",
"thumbnail": "https://encrypted-tbn2.gstatic.com/shopping?q=tbn:ANd9GcQ2onFg_aXbg8LTX3qJT9f9XdiFrl_SNLXlpKhSjCQQ2c5EmQcrNXPwCMphjugJUhWctBpRVC0BiS4OUnq0FRAeQ4BXEWI6FuvZvGERsLc&usqp=CAE"
},
...
],
"pos_overall": 1
}
],
...items
页面中所有可用的 PLA。
数组
pos
表示给定项目在 PLA 结果中位置的指示器。
整数
url
商品的 URL。
字符串
价格
列表广告中产品的价格。
字符串
title
列表广告中产品的标题。
字符串
rating
产品的评分。
整数
卖家
列表广告中产品的卖家。
字符串
thumbnail
产品缩略图图片的 URL。
字符串
reviews_count
该产品的评论数量。
可选
pos_overall
结果在 SERP 中的位置指示。
整数
过滤器

...
"filters": [
{
"name": "Show only",
"values": [
{
"url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,sales:1&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQ7KEGCJ4WKAA",
"value": "On sale"
}
]
},
{
"name": "Price",
"values": [
{
"url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,price:1,ppr_max:40&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQvSsIohYoAA",
"value": "Up to $40"
},
...
{
"url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,price:1,ppr_min:90&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQvSsIpRYoAw",
"value": "Over $90"
}
]
},
{
"name": "Color",
"values": [
{
"url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,color:specific,color_val:black&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQtSsIrBYoAA",
"value": "Black"
},
...
{
"url": "/search?sca_esv=bbd3241cb3940ce2&sca_upv=1&gl=us&hl=en&tbm=shop&q=adidas&tbs=mr:1,color:specific,color_val:pink&sa=X&ved=0ahUKEwikoMX_iNOGAxVvFbkGHV6uDZcQtSsIshYoBg",
"value": "Pink"
}
]
},
...
]name
过滤器类别的名称
字符串
values
类别中可用的筛选选项。
数组
values.url
表示该筛选选项的已过滤搜索查询的 URL。
字符串
values.value
筛选选项的显示名称
字符串
values.merchant_id (可选)
与此筛选选项关联的商家 ID。
字符串
自然
包含自然搜索结果详情的对象数组。


...
"organic": [
{
"pos": 1,
"url": "https://www.google.com/shopping/product/16307418470740744792?q=nvidia+rtx&hl=en&udm=28&sei=j5fsaPC2FYWQur8P293m8A8&gl=us",
"type": "grid",
"price": 3090,
"title": "NVIDIA GeForce RTX 5090 32GB GDDR7 Graphics Card",
"token": "eyJjYXRhbG9naWQiOiAiMTYzMDc0MTg0NzA3NDA3NDQ3OTIiLCAiZ3BjaWQiOiAiMjM4NTIwNzk2NTI4MjUxMzUzOSIsICJpbWFnZURvY2lkIjogIjkyMjY0MjkwODMxMzQ4NDkwNDUiLCAibWlkIjogIiIsICJwdm8iOiAiMjMiLCAicHZ0IjogImhnIiwgInJkcyI6ICJQQ18yMzg1MjA3OTY1MjgyNTEzNTM5fFBST0RfUENfMjM4NTIwNzk2NTI4MjUxMzUzOSIsICJwcm9kdWN0aWQiOiAiIiwgInF1ZXJ5IjogIm52aWRpYSBydHgifQ==",
"rating": 4.6,
"currency": "USD",
"delivery": "Free delivery by Fri",
"merchant": {
"name": "eBay"
},
"price_str": "$3,090.00",
"thumbnail": "<THUMBNAIL_STR>",
"product_id": "1503163696221055935",
"pos_overall": 1,
"reviews_count": 311
},
]
...pos
产品在搜索结果中的位置。
整数
url
产品页面的 URL。
字符串
type
列表布局的类型。
字符串
价格
指定货币下产品的价格。
float
title
产品列表的标题。
字符串
令牌
产品令牌。
字符串
rating (可选)
产品的平均用户评分,通常以 5 分制表示。
整数
货币
产品价格的货币代码。
字符串
delivery
交付详情,包括预计交货日期和退货政策。
字符串
merchant (可选)
包含有关销售该产品的商家详情的对象。
对象
merchant.url
商家页面的 URL。
字符串
merchant.name
商家的名称。
字符串
price_str
以字符串形式表示的产品价格,包括货币符号。
字符串
thumbnail
产品缩略图的 URL。
字符串
product_id
产品的唯一标识符。
字符串
pos_overall
产品在搜索结果中的整体位置。
整数
reviews_count (可选)
产品的总评论数。
整数
最后更新于
这有帮助吗?

