SDK engine

Google Scholar

Google Scholar results by query, cited-by id, or cluster id with publication info, authors, resources and inline links.

engine: google_scholar TS: XylopSearchEngines.GoogleScholar JS: XylopSearchEngines.GoogleScholar C#: XylopSearchEngines.GoogleScholar Python: XylopSearchEngines.GOOGLE_SCHOLAR PHP: XylopSearchEngines::GOOGLE_SCHOLAR Ruby: XylopApiClient::Engines::GOOGLE_SCHOLAR Java: XylopSearchEngines.GOOGLE_SCHOLAR Kotlin: XylopSearchEngines.GOOGLE_SCHOLAR Swift: XylopSearchEngines.googleScholar Dart: XylopSearchEngines.googleScholar C++: xylop::api::engines::google_scholar Go: xylop.EngineGoogleScholar 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.GoogleScholar,
  {
    q: "machine learning",
    cites: "cites id",
    cluster: "cluster id",
    as_ylo: "2020",
    as_yhi: "2026",
  });

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.GoogleScholar,
  {
    q: "machine learning",
    cites: "cites id",
    cluster: "cluster id",
    as_ylo: "2020",
    as_yhi: "2026",
  });

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.GoogleScholar,
    new Dictionary<string, string?>
    {
        ["q"] = "machine learning",
        ["cites"] = "cites id",
        ["cluster"] = "cluster id",
        ["as_ylo"] = "2020",
        ["as_yhi"] = "2026",
    });

Для типизированного режима используйте `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_SCHOLAR,
    {
        "q": "machine learning",
        "cites": "cites id",
        "cluster": "cluster id",
        "as_ylo": "2020",
        "as_yhi": "2026",
    },
)

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_SCHOLAR,
    [
        'q' => 'machine learning',
        'cites' => 'cites id',
        'cluster' => 'cluster id',
        'as_ylo' => '2020',
        'as_yhi' => '2026',
    ]
);

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_SCHOLAR,
  {
    "q" => "machine learning",
    "cites" => "cites id",
    "cluster" => "cluster id",
    "as_ylo" => "2020",
    "as_yhi" => "2026",
  }
)

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_SCHOLAR,
    Map.of(
        "q", "machine learning",
        "cites", "cites id",
        "cluster", "cluster id",
        "as_ylo", "2020",
        "as_yhi", "2026"
    ));

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_SCHOLAR,
    mapOf(
        "q" to "machine learning",
        "cites" to "cites id",
        "cluster" to "cluster id",
        "as_ylo" to "2020",
        "as_yhi" to "2026",
    ),
)

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.googleScholar,
    parameters: [
        "q": "machine learning",
        "cites": "cites id",
        "cluster": "cluster id",
        "as_ylo": "2020",
        "as_yhi": "2026",
    ]
)

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.googleScholar,
    <String, Object?>{
      'q': 'machine learning',
      'cites': 'cites id',
      'cluster': 'cluster id',
      'as_ylo': '2020',
      'as_yhi': '2026',
    },
  );

  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_scholar,
        {
            {"q", "machine learning"},
            {"cites", "cites id"},
            {"cluster", "cluster id"},
            {"as_ylo", "2020"},
            {"as_yhi", "2026"},
        });

    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.EngineGoogleScholar,
        xylop.Params(map[string]string{
            "q": "machine learning",
            "cites": "cites id",
            "cluster": "cluster id",
            "as_ylo": "2020",
            "as_yhi": "2026",
        }),
        &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_scholar
API key
Передается SDK автоматически из настроек клиента.
Входные параметры

Параметры запроса

Параметр Тип Обязателен Значение Описание
api_key SDK string Да Ключ Xylop API. В SDK задается один раз в настройках или конструкторе клиента.
engine SDK string Да google_scholar Google Scholar engine.
q string Нет machine learning Scholar search query. Required unless cites or cluster is provided.
cites string Нет cites id Cited-by identifier.
cluster string Нет cluster id Versions cluster identifier.
as_ylo number Нет 2020 Lower publication year.
as_yhi number Нет 2026 Upper publication year.
hl string Нет en Interface language.
start number Нет 0 Pagination offset.
num number Нет 10 Result count.
Выходные параметры

Поля ответа

Поле Тип Источник Описание
search_metadata object пример ответа Метаданные запроса: статус, идентификатор, время выполнения и служебная информация провайдера.
search_parameters object пример ответа Нормализованные параметры, с которыми upstream-поиск выполнил запрос.
organic_results array пример ответа Основные органические результаты выдачи: позиции, заголовки, ссылки и сниппеты.
JSON

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

{
  "search_metadata": {
    "status": "Success",
    "google_scholar_url": "https://scholar.google.com/scholar?q=machine+learning"
  },
  "search_parameters": {
    "engine": "google_scholar",
    "q": "machine learning"
  },
  "organic_results": [
    {
      "position": 1,
      "title": "A survey of machine learning",
      "link": "https://example.com/paper",
      "publication_info": {
        "summary": "A Researcher - Journal, 2024",
        "authors": [
          {
            "name": "A Researcher",
            "author_id": "abc123"
          }
        ]
      },
      "inline_links": {
        "cited_by": {
          "total": 128,
          "cites_id": "1234567890"
        }
      }
    }
  ]
}