Google Maps Reviews
Отзывы Google Maps по data_id или place_id с информацией о месте, темами, фильтрами, сортировкой и пагинацией.
Вызов через @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.GoogleMapsReviews,
{
data_id: "0x89c259af336b3341:0xa4969e07ce3108de",
place_id: "ChIJ...",
hl: "en",
sort_by: "newestFirst",
topic_id: "topic id",
});
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.GoogleMapsReviews,
{
data_id: "0x89c259af336b3341:0xa4969e07ce3108de",
place_id: "ChIJ...",
hl: "en",
sort_by: "newestFirst",
topic_id: "topic id",
});
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.GoogleMapsReviews,
new Dictionary<string, string?>
{
["data_id"] = "0x89c259af336b3341:0xa4969e07ce3108de",
["place_id"] = "ChIJ...",
["hl"] = "en",
["sort_by"] = "newestFirst",
["topic_id"] = "topic id",
});
Для типизированного режима используйте `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_MAPS_REVIEWS,
{
"data_id": "0x89c259af336b3341:0xa4969e07ce3108de",
"place_id": "ChIJ...",
"hl": "en",
"sort_by": "newestFirst",
"topic_id": "topic id",
},
)
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_MAPS_REVIEWS,
[
'data_id' => '0x89c259af336b3341:0xa4969e07ce3108de',
'place_id' => 'ChIJ...',
'hl' => 'en',
'sort_by' => 'newestFirst',
'topic_id' => 'topic id',
]
);
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_MAPS_REVIEWS,
{
"data_id" => "0x89c259af336b3341:0xa4969e07ce3108de",
"place_id" => "ChIJ...",
"hl" => "en",
"sort_by" => "newestFirst",
"topic_id" => "topic id",
}
)
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_MAPS_REVIEWS,
Map.of(
"data_id", "0x89c259af336b3341:0xa4969e07ce3108de",
"place_id", "ChIJ...",
"hl", "en",
"sort_by", "newestFirst",
"topic_id", "topic id"
));
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_MAPS_REVIEWS,
mapOf(
"data_id" to "0x89c259af336b3341:0xa4969e07ce3108de",
"place_id" to "ChIJ...",
"hl" to "en",
"sort_by" to "newestFirst",
"topic_id" to "topic id",
),
)
Kotlin SDK использует JVM `HttpClient`, возвращает JSON-строку и оставляет JSON-маппинг приложению.
Вызов через XylopApiClient
import XylopApiClient
let client = XylopSearchClient(apiKey: "YOUR_API_KEY")
let response = try await client.searchJSON(
engine: XylopSearchEngines.googleMapsReviews,
parameters: [
"data_id": "0x89c259af336b3341:0xa4969e07ce3108de",
"place_id": "ChIJ...",
"hl": "en",
"sort_by": "newestFirst",
"topic_id": "topic id",
]
)
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.googleMapsReviews,
<String, Object?>{
'data_id': '0x89c259af336b3341:0xa4969e07ce3108de',
'place_id': 'ChIJ...',
'hl': 'en',
'sort_by': 'newestFirst',
'topic_id': 'topic id',
},
);
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_maps_reviews,
{
{"data_id", "0x89c259af336b3341:0xa4969e07ce3108de"},
{"place_id", "ChIJ..."},
{"hl", "en"},
{"sort_by", "newestFirst"},
{"topic_id", "topic id"},
});
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.EngineGoogleMapsReviews,
xylop.Params(map[string]string{
"data_id": "0x89c259af336b3341:0xa4969e07ce3108de",
"place_id": "ChIJ...",
"hl": "en",
"sort_by": "newestFirst",
"topic_id": "topic id",
}),
&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_maps_reviews- API key
- Передается SDK автоматически из настроек клиента.
Параметры запроса
| Параметр | Тип | Обязателен | Значение | Описание |
|---|---|---|---|---|
api_key
SDK
|
string | Да | — | Ключ Xylop API. В SDK задается один раз в настройках или конструкторе клиента. |
engine
SDK
|
string | Да |
google_maps_reviews
|
Движок Google Maps Reviews. |
data_id
|
string | Нет | 0x89c259af336b3341:0xa4969e07ce3108de | Google Maps data_id из Google Maps API. Нужен data_id или place_id. |
place_id
|
string | Нет | ChIJ... | Google Maps place_id. Нужен place_id или data_id. |
hl
|
string | Нет |
en
|
Язык отзывов и интерфейса. |
sort_by
|
string | Нет |
qualityScore
|
qualityScore, newestFirst, ratingHigh или ratingLow. |
topic_id
|
string | Нет | topic id | Фильтр по теме из блока topics. Нельзя использовать вместе с query. |
query
|
string | Нет | matcha | Текстовый фильтр по отзывам. Нельзя использовать вместе с topic_id. |
num
|
number | Нет |
10
|
Количество отзывов от 1 до 20. |
next_page_token
|
string | Нет | pagination.next_page_token | Токен следующей страницы отзывов. |
Поля ответа
| Поле | Тип | Источник | Описание |
|---|---|---|---|
search_metadata |
object | пример ответа | Метаданные запроса: статус, идентификатор, время выполнения и служебная информация провайдера. |
search_parameters |
object | пример ответа | Нормализованные параметры, с которыми upstream-поиск выполнил запрос. |
place_info |
object | пример ответа | Типизированное поле ответа для этого engine; структура зависит от upstream-провайдера и параметров запроса. |
topics |
array | пример ответа | Типизированное поле ответа для этого engine; структура зависит от upstream-провайдера и параметров запроса. |
reviews |
array | пример ответа | Отзывы, оценки, авторы, даты и текстовые фрагменты. |
pagination |
object | пример ответа | Данные пагинации или токены для перехода к следующей странице. |
Пример ответа
{
"search_metadata": {
"status": "Success",
"google_maps_reviews_url": "https://www.google.com/maps/preview/review/listentitiesreviews?..."
},
"search_parameters": {
"engine": "google_maps_reviews",
"data_id": "0x89c259af336b3341:0xa4969e07ce3108de",
"hl": "en",
"sort_by": "newestFirst"
},
"place_info": {
"title": "Example Coffee",
"address": "123 Main St, New York, NY",
"rating": 4.5,
"reviews": 1820,
"type": "Coffee shop"
},
"topics": [
{
"keyword": "service",
"mentions": 38,
"id": "service"
}
],
"reviews": [
{
"position": 1,
"link": "https://www.google.com/maps/reviews/data=...",
"user": {
"name": "Alex Example",
"link": "https://www.google.com/maps/contrib/123",
"contributor_id": "123",
"local_guide": true,
"reviews": 42,
"photos": 8
},
"source": "Google",
"review_id": "ChZ...",
"likes": 3,
"rating": 5,
"date": "2 weeks ago",
"iso_date": "2026-04-22T12:00:00Z",
"snippet": "Great coffee and fast service.",
"extracted_snippet": {
"original": "Great coffee and fast service."
},
"details": {
"service": 5,
"atmosphere": 5
},
"images": [
"https://example.com/review.jpg"
]
}
],
"pagination": {
"next_page_token": "..."
}
}