Google Immersive Product
Карточка товара Google Shopping по page_token: превью, цена, магазины/stores, отзывы, инсайты, видео, форумы, варианты товара и токен следующей страницы магазинов.
Вызов через @xylop/api-client-typescript
import { XylopSearchClient, XylopSearchEngines } from "@xylop/api-client-typescript";
interface SearchResponse {
[key: string]: unknown;
}
const client = new XylopSearchClient({
apiKey: "YOUR_API_KEY"
});
const response = await client.search<SearchResponse>(
XylopSearchEngines.GoogleImmersiveProduct,
{
page_token: "immersive product page_token",
more_stores: "true",
next_page_token: "product_results.stores_next_page_token",
no_cache: "false",
});
TypeScript SDK написан на TypeScript, генерирует `.d.ts`, поддерживает generic response type и работает через `fetch`.
Вызов через @xylop/api-client
import { XylopSearchClient, XylopSearchEngines } from "@xylop/api-client";
const client = new XylopSearchClient({
apiKey: "YOUR_API_KEY"
});
const response = await client.search(
XylopSearchEngines.GoogleImmersiveProduct,
{
page_token: "immersive product page_token",
more_stores: "true",
next_page_token: "product_results.stores_next_page_token",
no_cache: "false",
});
JavaScript SDK работает в Node.js 18+ и современных браузерах через `fetch`; TypeScript declarations входят в npm package.
Вызов через XylopSearchClient
using Xylop.Api.Client;
var client = new XylopSearchClient(new HttpClient(), "YOUR_API_KEY");
using var response = await client.SearchJsonAsync(
XylopSearchEngines.GoogleImmersiveProduct,
new Dictionary<string, string?>
{
["page_token"] = "immersive product page_token",
["more_stores"] = "true",
["next_page_token"] = "product_results.stores_next_page_token",
["no_cache"] = "false",
});
Для типизированного режима используйте `SearchAsync<TResponse>` и response-модель из `Xylop.Logic.SerpApiResponses.*`, которая входит в пакет C# SDK.
Вызов через xylop-api-client
from xylop_api_client import XylopSearchClient, XylopSearchEngines
client = XylopSearchClient("YOUR_API_KEY")
response = client.search(
XylopSearchEngines.GOOGLE_IMMERSIVE_PRODUCT,
{
"page_token": "immersive product page_token",
"more_stores": "true",
"next_page_token": "product_results.stores_next_page_token",
"no_cache": "false",
},
)
Python SDK возвращает JSON как обычные `dict`/`list` и не требует runtime-зависимостей.
Вызов через xylop/api-client
<?php
use Xylop\Api\Client\XylopSearchClient;
use Xylop\Api\Client\XylopSearchEngines;
$client = new XylopSearchClient('YOUR_API_KEY');
$response = $client->search(
XylopSearchEngines::GOOGLE_IMMERSIVE_PRODUCT,
[
'page_token' => 'immersive product page_token',
'more_stores' => 'true',
'next_page_token' => 'product_results.stores_next_page_token',
'no_cache' => 'false',
]
);
PHP SDK использует стандартные stream wrappers, возвращает decoded JSON array и не требует runtime-зависимостей.
Вызов через xylop-api-client
require "xylop_api_client"
client = XylopApiClient::Client.new(api_key: "YOUR_API_KEY")
response = client.search(
XylopApiClient::Engines::GOOGLE_IMMERSIVE_PRODUCT,
{
"page_token" => "immersive product page_token",
"more_stores" => "true",
"next_page_token" => "product_results.stores_next_page_token",
"no_cache" => "false",
}
)
Ruby SDK использует стандартные `net/http`, `json` и возвращает JSON как обычные Hash/Array значения.
Вызов через xylop-api-client
import java.util.Map;
import ru.xylop.api.client.XylopSearchClient;
import ru.xylop.api.client.XylopSearchEngines;
var client = new XylopSearchClient("YOUR_API_KEY");
String responseJson = client.searchJson(
XylopSearchEngines.GOOGLE_IMMERSIVE_PRODUCT,
Map.of(
"page_token", "immersive product page_token",
"more_stores", "true",
"next_page_token", "product_results.stores_next_page_token",
"no_cache", "false"
));
Java SDK использует `java.net.http.HttpClient`, возвращает JSON-строку и не требует runtime-зависимостей.
Вызов через xylop-api-kotlin-client
import ru.xylop.api.kotlin.XylopSearchClient
import ru.xylop.api.kotlin.XylopSearchEngines
val client = XylopSearchClient("YOUR_API_KEY")
val responseJson = client.searchJson(
XylopSearchEngines.GOOGLE_IMMERSIVE_PRODUCT,
mapOf(
"page_token" to "immersive product page_token",
"more_stores" to "true",
"next_page_token" to "product_results.stores_next_page_token",
"no_cache" to "false",
),
)
Kotlin SDK использует JVM `HttpClient`, возвращает JSON-строку и оставляет JSON-маппинг приложению.
Вызов через XylopApiClient
import XylopApiClient
let client = XylopSearchClient(apiKey: "YOUR_API_KEY")
let response = try await client.searchJSON(
engine: XylopSearchEngines.googleImmersiveProduct,
parameters: [
"page_token": "immersive product page_token",
"more_stores": "true",
"next_page_token": "product_results.stores_next_page_token",
"no_cache": "false",
]
)
Swift SDK использует Foundation `URLSession`, поддерживает async/await и возвращает Data, JSONSerialization values или caller-owned Decodable models.
Вызов через xylop_api_client
import 'package:xylop_api_client/xylop_api_client.dart';
Future<void> main() async {
final client = XylopSearchClient('YOUR_API_KEY');
final response = await client.search(
XylopSearchEngines.googleImmersiveProduct,
<String, Object?>{
'page_token': 'immersive product page_token',
'more_stores': 'true',
'next_page_token': 'product_results.stores_next_page_token',
'no_cache': 'false',
},
);
print(response);
}
Dart SDK использует `dart:io`, возвращает decoded JSON или raw response text и не требует runtime-зависимостей.
Вызов через Xylop.Api.Cpp
#include <xylop/api/client.hpp>
#include <xylop/api/curl_transport.hpp>
int main()
{
xylop::api::search_client client(
"YOUR_API_KEY",
xylop::api::curl_transport);
auto response_json = client.search_text(
xylop::api::engines::google_immersive_product,
{
{"page_token", "immersive product page_token"},
{"more_stores", "true"},
{"next_page_token", "product_results.stores_next_page_token"},
{"no_cache", "false"},
});
return 0;
}
C++ SDK имеет header-only C++17 core, принимает transport callback и может использовать optional libcurl adapter `xylop::api::curl_transport`.
Вызов через Xylop.Api.Go
package main
import (
"context"
"log"
xylop "github.com/Leonid-Vizel/Xylop.AdminPanel/src/Xylop.Api.Go"
)
func main() {
client, err := xylop.NewClient("YOUR_API_KEY")
if err != nil {
log.Fatal(err)
}
var response map[string]any
err = client.SearchJSON(
context.Background(),
xylop.EngineGoogleImmersiveProduct,
xylop.Params(map[string]string{
"page_token": "immersive product page_token",
"more_stores": "true",
"next_page_token": "product_results.stores_next_page_token",
"no_cache": "false",
}),
&response)
if err != nil {
log.Fatal(err)
}
}
Go SDK возвращает raw JSON bytes или декодирует ответ в пользовательскую структуру, `map[string]any` либо другой target.
HTTP контракт
- URL
https://api.xylop.ru/search- Engine
google_immersive_product- API key
- Передается SDK автоматически из настроек клиента.
Параметры запроса
| Параметр | Тип | Обязателен | Значение | Описание |
|---|---|---|---|---|
api_key
SDK
|
string | Да | — | Ключ Xylop API. В SDK задается один раз в настройках или конструкторе клиента. |
engine
SDK
|
string | Да |
google_immersive_product
|
Движок Google Immersive Product. |
page_token
|
string | Да | immersive product page_token | Токен immersive product из Google Shopping / AI Mode shopping result. |
more_stores
|
string | Нет |
false
|
Вернуть расширенный список магазинов в одном запросе. |
next_page_token
|
string | Нет | product_results.stores_next_page_token | Токен следующей страницы магазинов из product_results.stores_next_page_token. |
no_cache
|
string | Нет |
false
|
Принудительно запросить свежий ответ. |
Поля ответа
| Поле | Тип | Источник | Описание |
|---|---|---|---|
search_metadata |
object | пример ответа | Метаданные запроса: статус, идентификатор, время выполнения и служебная информация провайдера. |
search_parameters |
object | пример ответа | Нормализованные параметры, с которыми upstream-поиск выполнил запрос. |
product_results |
object | пример ответа | Товары, цены, продавцы, рейтинги и ссылки на карточки. |
related_searches |
array | пример ответа | Связанные поисковые запросы, которые можно использовать для следующего поиска. |
Пример ответа
{
"search_metadata": {
"status": "Success",
"google_immersive_product_url": "https://www.google.com/async/oapv?..."
},
"search_parameters": {
"engine": "google_immersive_product",
"page_token": "eyJ..."
},
"product_results": {
"title": "LG Class G4 Series OLED evo 4K Smart TV",
"brand": "LG",
"rating": 4.8,
"reviews": 3551,
"price_range": "$1,797-$2,200",
"stores": [
{
"name": "Best Buy",
"link": "https://www.bestbuy.com/site/...",
"title": "LG - 55\" Class G4 Series OLED evo 4K UHD Smart webOS TV (2024)",
"rating": 4.6,
"reviews": 623,
"payment_methods": "PayPal, Zip accepted",
"details_and_offers": [
"In stock online",
"$50 delivery"
],
"price": "$2,199.99",
"extracted_price": 2199.99,
"shipping": "+ $50.00",
"total": "$2,420.49",
"extracted_total": 2420.49
}
],
"stores_next_page_token": "f69uOnica15...",
"about_the_product": {
"title": "65 inch LG OLED evo AI G4 4K Smart TV 2024",
"description": "Bring the movie theatre experience into your home..."
},
"ratings": [
{
"stars": 5,
"amount": 3166
}
]
},
"related_searches": [
{
"query": "lg smart tvs",
"link": "https://www.google.com/search?cs=1&q=lg+smart+tvs"
}
]
}