SDK engine

Google Immersive Product

Карточка товара Google Shopping по page_token: превью, цена, магазины/stores, отзывы, инсайты, видео, форумы, варианты товара и токен следующей страницы магазинов.

engine: google_immersive_product TS: XylopSearchEngines.GoogleImmersiveProduct JS: XylopSearchEngines.GoogleImmersiveProduct C#: XylopSearchEngines.GoogleImmersiveProduct Python: XylopSearchEngines.GOOGLE_IMMERSIVE_PRODUCT PHP: XylopSearchEngines::GOOGLE_IMMERSIVE_PRODUCT Ruby: XylopApiClient::Engines::GOOGLE_IMMERSIVE_PRODUCT Java: XylopSearchEngines.GOOGLE_IMMERSIVE_PRODUCT Kotlin: XylopSearchEngines.GOOGLE_IMMERSIVE_PRODUCT Swift: XylopSearchEngines.googleImmersiveProduct Dart: XylopSearchEngines.googleImmersiveProduct C++: xylop::api::engines::google_immersive_product Go: xylop.EngineGoogleImmersiveProduct GET /search
TypeScript пример

Вызов через @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`.

JavaScript пример

Вызов через @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.

C# пример

Вызов через 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.

Python пример

Вызов через 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-зависимостей.

PHP пример

Вызов через 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-зависимостей.

Ruby пример

Вызов через 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 значения.

Java пример

Вызов через 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-зависимостей.

Kotlin пример

Вызов через 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-маппинг приложению.

Swift пример

Вызов через 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.

Dart пример

Вызов через 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-зависимостей.

C++ пример

Вызов через 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`.

Go пример

Вызов через 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.

Endpoint

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 пример ответа Связанные поисковые запросы, которые можно использовать для следующего поиска.
JSON

Пример ответа

{
  "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"
    }
  ]
}