Выполнение текстовых поисковых запросов в синхронном режиме

Сервис Yandex Search API позволяет выполнять текстовый поиск в поисковой базе Яндекса и получать результат поиска в формате XML или HTML в синхронном режиме. Выполнять запросы можно с помощью Yandex AI Studio SDK, REST API и gRPC API. Поисковая выдача зависит от заданных в запросе параметров.

Перед началом работы

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Подготовьте облако к работе

Чтобы воспользоваться примерами:

  1. Создайте сервисный аккаунт и назначьте ему роль search-api.webSearch.user.
  2. Получите и сохраните API-ключ сервисного аккаунта, указав для него область действия yc.search-api.execute.

    В примерах используется аутентификация с помощью API-ключа. Yandex AI Studio SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex AI Studio SDK.

    Примечание

    Если вы используете ОС Windows, рекомендуем предварительно установить оболочку WSL и выполнять дальнейшие действия в этой оболочке.

  3. Установите Python версии 3.10 или выше.

  4. (Опционально) Установите библиотеку Python venv для создания изолированных виртуальных окружений в Python.

  5. (Опционально) Создайте и войдите в новое виртуальное окружение Python:

    python3 -m venv new-env
            source new-env/bin/activate
            
  6. С помощью менеджера пакетов pip установите библиотеку AI SDK:

    pip install yandex-ai-studio-sdk
            
  1. Создайте сервисный аккаунт, от имени которого будут выполняться запросы. Вы также можете использовать аккаунт на Яндексе или федеративный аккаунт, но для автоматизации предпочтительнее использовать сервисный аккаунт.

  2. Назначьте аккаунту, от имени которого будут выполняться запросы, роль search-api.webSearch.user.

  3. Получите IAM-токен, необходимый для аутентификации.

    В приведенных примерах используется аутентификация с помощью IAM-токена. Чтобы использовать для аутентификации API-ключ сервисного аккаунта, измените в примерах запросов заголовок Authorization. Подробнее см. в разделе Аутентификация в API.

Чтобы воспользоваться примерами, также установите утилиты cURL и jq.

  1. Создайте сервисный аккаунт, от имени которого будут выполняться запросы. Вы также можете использовать аккаунт на Яндексе или федеративный аккаунт, но для автоматизации предпочтительнее использовать сервисный аккаунт.

  2. Назначьте аккаунту, от имени которого будут выполняться запросы, роль search-api.webSearch.user.

  3. Получите IAM-токен, необходимый для аутентификации.

    В приведенных примерах используется аутентификация с помощью IAM-токена. Чтобы использовать для аутентификации API-ключ сервисного аккаунта, измените в примерах запросов заголовок Authorization. Подробнее см. в разделе Аутентификация в API.

Чтобы воспользоваться примерами, также установите утилиты gRPCurl и jq.

Выполните поисковый запрос

Чтобы выполнить поисковый запрос:

  1. Создайте файл web-search-sync.py и добавьте в него следующий код:

    #!/usr/bin/env python3
            
            from __future__ import annotations
            
            from typing import Literal, cast
            
            from yandex_ai_studio_sdk import AIStudio
            
            from yandex_ai_studio_sdk.search_api import (
                FamilyMode,
                FixTypoMode,
                GroupMode,
                Localization,
                SearchType,
                SortMode,
                SortOrder,
            )
            
            import pathlib
            
            USER_AGENT = "Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Mobile Safari/537.36"
            
            
            def main() -> None:
            
                sdk = AIStudio(
                    folder_id="<идентификатор_каталога>",
                    auth="<API-ключ>",
                )
                sdk.setup_default_logging()
            
                # you could pass any settings when creating the Search object
                search = sdk.search_api.web(
                    "RU",
                    family_mode=FamilyMode.MODERATE,
                    # By default object configuration property values are set to None,
                    # which corresponds to the "default" value which is
                    # defined at the service's backend.
                    # e.g. docs_in_group=None,
                )
            
                # but also you could reconfigure the Search object at any time:
                search = search.configure(
                    # These are enum-type settings,
                    # they could be passed as strings as shown below.
                    search_type="ru",
                    family_mode="strict",
                    fix_typo_mode="off",
                    group_mode="deep",
                    localization="ru",
                    sort_order="desc",
                    sort_mode="by_time",
                    docs_in_group=None,
                    groups_on_page=6,
                    max_passages=2,
                    region="225",
                    user_agent=USER_AGENT,
                )
            
                search_query = input("Enter the search query: ")
                if not search_query.strip():
                    search_query = "Yandex Cloud"
            
                format_ = input("Choose format ([xml]/html): ")
                format_ = format_.strip() or "xml"
                assert format_.lower() in ("xml", "html")
                format_ = cast(Literal["html", "xml"], format_)
            
                for page in range(0, 10):
                    search_result = search.run(search_query, format=format_, page=page)
                    output_filename = (
                        str(pathlib.Path(__file__).parent)
                        + "/"
                        + "page_"
                        + str(page + 1)
                        + "."
                        + format_
                    )
                    file = open(output_filename, "a")
                    file.write(search_result.decode("utf-8"))
                    print(f"Page {page} saved to file {output_filename}")
                    file.close()
            
            
            if __name__ == "__main__":
                main()
            

    Где:

    Параметры поиска для объекта класса sdk.search_api.web вы можете задать в свойствах этого объекта или в свойствах метода .configure:

    Описание свойств объекта
    • search_type — тип поиска. Возможные значения:

      • ru — для типа поиска Русский.
      • tr — для типа поиска Турецкий.
      • com — для типа поиска Международный.
      • kk — для типа поиска Казахский.
      • be – для типа поиска Белорусский.
      • uz — для типа поиска Узбекский.
    • family_mode — фильтрация результатов. Необязательный параметр. Возможные значения:

      • moderate — умеренный фильтр (значение по умолчанию). Из выдачи исключаются документы, относящиеся к категории «для взрослых», если запрос явно не направлен на поиск подобных ресурсов.
      • none — фильтрация отключена. В выдачу включаются любые документы, вне зависимости от содержимого.
      • strict — семейный фильтр. Вне зависимости от поискового запроса из выдачи исключаются документы, относящиеся к категории «для взрослых», а также содержащие ненормативную лексику.
    • fix_typo_mode — значение настройки режима исправления опечаток в поисковом запросе. Необязательный параметр. Возможные значения:

      • on — исправление опечаток включено (значение по умолчанию). Опечатки в тексте поискового запроса автоматически исправляются.
      • off — исправление опечаток отключено. Опечатки в тексте поискового запроса не исправляются, поиск выполняется в полном соответствии с переданным запросом.
    • group_mode — метод группировки результатов. Необязательный параметр. Возможные значения:

      • deep — группировка по доменам. Каждая группа содержит документы одного домена (значение по умолчанию).
      • flat — плоская группировка. Каждая группа содержит один документ.
    • localization — язык уведомлений поискового ответа. Влияет на текст, передаваемый в теге found-docs-human и в сообщениях об ошибках. Необязательный параметр. Возможные значения зависят от выбранного типа поиска:

      • Тип поиска Русский:
        • ru — русский язык (значение по умолчанию).
        • be — белорусский язык.
        • kk — казахский язык.
        • uk — украинский язык.
      • Тип поиска Турецкий:
        • tr — турецкий язык.
      • Тип поиска Международный:
        • en — английский язык.
    • sort_order — порядок сортировки результатов поиска. Необязательный параметр. Возможные значения:

      • desc — прямой порядок сортировки — от наиболее свежего к наиболее старому (значение по умолчанию).
      • asc — обратный порядок сортировки — от наиболее старого к наиболее свежему.
    • sort_mode — правило сортировки результатов поиска, которое определяет порядок выдачи результатов поиска. Необязательный параметр. Возможные значения:

      • by_relevance — сортировка по релевантности (значение по умолчанию).
      • by_time — сортировка по времени изменения документа.
    • docs_in_group — максимальное количество документов, которые могут быть возвращены в одной группе. Необязательный параметр. Допустимые значения — от 1 до 3. Значение по умолчанию — 1.

    • groups_on_page — максимальное количество групп, которые могут быть возвращены на одной странице результатов поиска. Необязательный параметр. Значение по умолчанию — 20.

      При получении результата в формате XML допустимые значения — от 1 до 100, при получении результата в формате HTML — от 5 до 50.

    • max_passages — максимальное количество пассажей, которое может быть использовано при формировании сниппета к документу. Необязательный параметр. Допустимые значения — от 1 до 5. По умолчанию для каждого документа возвращается не более четырех пассажей с текстом запроса.

    • region — идентификатор страны или региона поиска, который влияет на правила ранжирования документов. Поддерживается только для типов поиска Русский и Турецкий.

      Список идентификаторов часто используемых стран и регионов см. в разделе Регионы поиска.

    • user_agent — строка, содержащая заголовок User-Agent. Параметр позволяет получить поисковую выдачу, ориентированную на конкретные устройство и браузер, в том числе мобильную выдачу. Необязательный параметр. Если параметр не задан, сервис возвращает стандартную выдачу по умолчанию.

    Список поддерживаемых параметров:

    Примечание

    Список поддерживаемых в запросе параметров зависит от того, в каком формате требуется получить результат: XML или HTML.

    Параметр Поддерживается при XML-ответе Поддерживается при HTML-ответе
    search_type yes yes
    family_mode yes yes
    fix_typo_mode yes no
    group_mode yes no
    localization yes no
    sort_order yes no
    sort_mode yes no
    docs_in_group yes no
    groups_on_page yes yes
    max_passages yes no
    region yes yes
    user_agent yes yes
  2. Выполните созданный файл:

    python3 web-search-sync.py
            

    В процессе выполнения код запросит у вас текст поискового запроса и формат, в котором вы хотите получить ответ.

    В результате выполнения код сохранит в текущей директории первые десять страниц с результатами поиска по указанному запросу в заданном формате:

    Page 0 saved to file /Users/MyUser/Desktop/page_1.xml
            ...
            Page 9 saved to file /Users/MyUser/Desktop/page_10.xml
            
  1. Отправьте запрос и получите результат в кодировке Base64:

    1. Создайте файл с телом запроса (например, body.json):

      body.json

      {
                  "query": {
                    "searchType": "<тип_поиска>",
                    "queryText": "<текст_поискового_запроса>",
                    "familyMode": "<значение_настройки_фильтрации_результатов>",
                    "page": "<номер_страницы>",
                    "fixTypoMode": "<значение_настройки_режима_исправления_опечаток>"
                  },
                  "sortSpec": {
                    "sortMode": "<правило_сортировки_результатов>",
                    "sortOrder": "<порядок_сортировки_результатов>"
                  },
                  "groupSpec": {
                    "groupMode": "<метод_группировки_результатов>",
                    "groupsOnPage": "<количество_групп_на_странице>",
                    "docsInGroup": "<количество_документов_в_группе>"
                  },
                  "maxPassages": "<максимальное_количество_пассажей>",
                  "region": "<идентификатор_региона>",
                  "l10N": "<язык_уведомлений>",
                  "folderId": "<идентификатор_каталога>",
                  "responseFormat": "<формат_результата>",
                  "userAgent": "<заголовок_User-Agent>"
              }
              
      Описание полей
      • searchType — тип поиска. Возможные значения:

        • SEARCH_TYPE_RU — для типа поиска Русский.
        • SEARCH_TYPE_TR — для типа поиска Турецкий.
        • SEARCH_TYPE_COM — для типа поиска Международный.
        • SEARCH_TYPE_KK — для типа поиска Казахский.
        • SEARCH_TYPE_BE – для типа поиска Белорусский.
        • SEARCH_TYPE_UZ — для типа поиска Узбекский.
      • queryText — текст поискового запроса. Максимальная длина запроса — 400 символов.

      • familyMode — фильтрация результатов. Необязательный параметр. Возможные значения:

        • FAMILY_MODE_MODERATE — умеренный фильтр (значение по умолчанию). Из выдачи исключаются документы, относящиеся к категории «для взрослых», если запрос явно не направлен на поиск подобных ресурсов.
        • FAMILY_MODE_NONE — фильтрация отключена. В выдачу включаются любые документы вне зависимости от содержимого.
        • FAMILY_MODE_STRICT — семейный фильтр. Вне зависимости от поискового запроса из выдачи исключаются документы, относящиеся к категории «для взрослых», а также содержащие ненормативную лексику.
      • page — номер запрашиваемой страницы. Необязательный параметр. По умолчанию возвращается первая страница поисковой выдачи. Нумерация страниц начинается с нуля (первой странице соответствует значение 0).

      • fixTypoMode — значение настройки режима исправления опечаток в поисковом запросе. Необязательный параметр. Возможные значения:

        • FIX_TYPO_MODE_ON — исправление опечаток включено (значение по умолчанию). Опечатки в тексте поискового запроса автоматически исправляются.
        • FIX_TYPO_MODE_OFF — исправление опечаток отключено. Опечатки в тексте поискового запроса не исправляются, поиск выполняется в полном соответствии с переданным запросом.
      • sortMode — правило сортировки результатов поиска, которое определяет порядок выдачи результатов поиска. Необязательный параметр. Возможные значения:

        • SORT_MODE_BY_RELEVANCE — сортировка по релевантности (значение по умолчанию).
        • SORT_MODE_BY_TIME — сортировка по времени изменения документа.
      • sortOrder — порядок сортировки результатов поиска. Необязательный параметр. Возможные значения:

        • SORT_ORDER_DESC — прямой порядок сортировки — от наиболее свежего к наиболее старому (значение по умолчанию).
        • SORT_ORDER_ASC — обратный порядок сортировки — от наиболее старого к наиболее свежему.
      • groupMode — метод группировки результатов. Необязательный параметр. Возможные значения:

        • GROUP_MODE_DEEP — группировка по доменам. Каждая группа содержит документы одного домена (значение по умолчанию).
        • GROUP_MODE_FLAT — плоская группировка. Каждая группа содержит один документ.
      • groupsOnPage — максимальное количество групп, которые могут быть возвращены на одной странице результатов поиска. Необязательный параметр. Значение по умолчанию — 20.

        При получении результата в формате XML допустимые значения — от 1 до 100, при получении результата в формате HTML — от 5 до 50.

      • docsInGroup — максимальное количество документов, которые могут быть возвращены в одной группе. Необязательный параметр. Допустимые значения — от 1 до 3. Значение по умолчанию — 1.

      • maxPassages — максимальное количество пассажей, которое может быть использовано при формировании сниппета к документу. Необязательный параметр. Допустимые значения — от 1 до 5. По умолчанию для каждого документа возвращается не более четырех пассажей с текстом запроса.

      • region — идентификатор страны или региона поиска, который влияет на правила ранжирования документов. Поддерживается только для типов поиска Русский и Турецкий.

        Список идентификаторов часто используемых стран и регионов см. в разделе Регионы поиска.

      • l10N — язык уведомлений поискового ответа. Влияет на текст, передаваемый в теге found-docs-human и в сообщениях об ошибках. Необязательный параметр. Возможные значения зависят от выбранного типа поиска:

        • Тип поиска Русский:
          • LOCALIZATION_RU — русский язык (значение по умолчанию).
          • LOCALIZATION_BE — белорусский язык.
          • LOCALIZATION_KK — казахский язык.
          • LOCALIZATION_UK — украинский язык.
        • Тип поиска Турецкий:
          • LOCALIZATION_TR — турецкий язык.
        • Тип поиска Международный:
          • LOCALIZATION_EN — английский язык.
      • folderIdидентификатор каталога пользователя или сервисного аккаунта, от имени которого вы будете выполнять запросы.

      • responseFormat — формат получения поисковой выдачи. Необязательный параметр. Возможные значения:

        • FORMAT_XML — результат запроса будет передан в формате XML (значение по умолчанию).
        • FORMAT_HTML — результат запроса будет передан в формате HTML.
      • userAgent — строка, содержащая заголовок User-Agent. Параметр позволяет получить поисковую выдачу, ориентированную на конкретные устройство и браузер, в том числе мобильную выдачу. Необязательный параметр. Если параметр не задан, сервис возвращает стандартную выдачу по умолчанию.

      Список поддерживаемых параметров:

      Примечание

      Список поддерживаемых в запросе параметров зависит от того, в каком формате требуется получить результат: XML или HTML.

      Параметр Поддерживается при XML-ответе Поддерживается при HTML-ответе
      searchType yes yes
      queryText yes yes
      familyMode yes yes
      page yes yes
      fixTypoMode yes no
      sortMode yes no
      sortOrder yes no
      groupMode yes no
      groupsOnPage yes yes
      docsInGroup yes no
      maxPassages yes no
      region yes yes
      l10N yes no
      folderId yes yes
      responseFormat yes yes
      userAgent yes yes
    2. Выполните HTTP-запрос, указав полученный ранее IAM-токен:

      curl \
                --request POST \
                --header "Authorization: Bearer <IAM-токен>" \
                --data "@body.json" \
                "https://searchapi.api.cloud.yandex.net/v2/web/search" \
                > result.json
              

    В результате в файл result.json будет сохранен результат выполнения поискового запроса, содержащий в поле rawData XML или HTML ответ в кодировке Base64.

  2. В зависимости от запрошенного формата ответа декодируйте результат из формата Base64:

    echo "$(< result.json)" | \
              jq -r .rawData | \
              base64 --decode > result.xml
            

    В результате в файл result.xml будет сохранен XML-ответ по запросу.

    echo "$(< result.json)" | \
              jq -r .rawData | \
              base64 --decode > result.html
            

    В результате в файл result.html будет сохранен HTML-ответ по запросу.

  1. Отправьте запрос и получите результат в кодировке Base64:

    1. Создайте файл с телом запроса (например, body.json):

      body.json

      {
                  "query": {
                    "search_type": "<тип_поиска>",
                    "query_text": "<текст_поискового_запроса>",
                    "family_mode": "<значение_настройки_фильтрации_результатов>",
                    "page": "<номер_страницы>",
                    "fix_typo_mode": "<значение_настройки_режима_исправления_опечаток>"
                  },
                  "sort_spec": {
                    "sort_mode": "<правило_сортировки_результатов>",
                    "sort_order": "<порядок_сортировки_результатов>"
                  },
                  "group_spec": {
                    "group_mode": "<метод_группировки_результатов>",
                    "groups_on_page": "<количество_групп_на_странице>",
                    "docs_in_group": "<количество_документов_в_группе>"
                  },
                  "max_passages": "<максимальное_количество_пассажей>",
                  "region": "<идентификатор_региона>",
                  "l10n": "<язык_уведомлений>",
                  "folder_id": "<идентификатор_каталога>",
                  "response_format": "<формат_результата>",
                  "user_agent": "<заголовок_User-Agent>"
              }
              
      Описание полей
      • search_type — тип поиска. Возможные значения:

        • SEARCH_TYPE_RU — для типа поиска Русский.
        • SEARCH_TYPE_TR — для типа поиска Турецкий.
        • SEARCH_TYPE_COM — для типа поиска Международный.
        • SEARCH_TYPE_KK — для типа поиска Казахский.
        • SEARCH_TYPE_BE – для типа поиска Белорусский.
        • SEARCH_TYPE_UZ — для типа поиска Узбекский.
      • query_text — текст поискового запроса. Максимальная длина запроса — 400 символов.

      • family_mode — фильтрация результатов. Необязательный параметр. Возможные значения:

        • FAMILY_MODE_MODERATE — умеренный фильтр (значение по умолчанию). Из выдачи исключаются документы, относящиеся к категории «для взрослых», если запрос явно не направлен на поиск подобных ресурсов.
        • FAMILY_MODE_NONE — фильтрация отключена. В выдачу включаются любые документы вне зависимости от содержимого.
        • FAMILY_MODE_STRICT — семейный фильтр. Вне зависимости от поискового запроса из выдачи исключаются документы, относящиеся к категории «для взрослых», а также содержащие ненормативную лексику.
      • page — номер запрашиваемой страницы. Необязательный параметр. По умолчанию возвращается первая страница поисковой выдачи. Нумерация страниц начинается с нуля, первой странице соответствует значение 0.

      • fix_typo_mode — значение настройки режима исправления опечаток в поисковом запросе. Необязательный параметр. Возможные значения:

        • FIX_TYPO_MODE_ON — исправление опечаток включено (значение по умолчанию). Опечатки в тексте поискового запроса автоматически исправляются.
        • FIX_TYPO_MODE_OFF — исправление опечаток отключено. Опечатки в тексте поискового запроса не исправляются, поиск выполняется в полном соответствии с переданным запросом.
      • sort_mode — правило сортировки результатов поиска, которое определяет порядок выдачи результатов поиска. Необязательный параметр. Возможные значения:

        • SORT_MODE_BY_RELEVANCE — сортировка по релевантности (значение по умолчанию).
        • SORT_MODE_BY_TIME — сортировка по времени изменения документа.
      • sort_order — порядок сортировки результатов поиска. Необязательный параметр. Возможные значения:

        • SORT_ORDER_DESC — прямой порядок сортировки — от наиболее свежего к наиболее старому (значение по умолчанию).
        • SORT_ORDER_ASC — обратный порядок сортировки — от наиболее старого к наиболее свежему.
      • group_mode — метод группировки результатов. Необязательный параметр. Возможные значения:

        • GROUP_MODE_DEEP — группировка по доменам. Каждая группа содержит документы одного домена (значение по умолчанию).
        • GROUP_MODE_FLAT — плоская группировка. Каждая группа содержит один документ.
      • groups_on_page — максимальное количество групп, которые могут быть возвращены на одной странице результатов поиска. Необязательный параметр. Значение по умолчанию — 20.

        При получении результата в формате XML допустимые значения — от 1 до 100, при получении результата в формате HTML — от 5 до 50.

      • docs_in_group — максимальное количество документов, которые могут быть возвращены в одной группе. Необязательный параметр. Допустимые значения — от 1 до 3. Значение по умолчанию — 1.

      • max_passages — максимальное количество пассажей, которое может быть использовано при формировании сниппета к документу. Необязательный параметр. Допустимые значения — от 1 до 5. По умолчанию для каждого документа возвращается не более четырех пассажей с текстом запроса.

      • region — идентификатор страны или региона поиска, который влияет на правила ранжирования документов. Поддерживается только для типов поиска Русский и Турецкий.

        Список идентификаторов часто используемых стран и регионов см. в разделе Регионы поиска.

      • l10n — язык уведомлений поискового ответа. Влияет на текст, передаваемый в теге found-docs-human и в сообщениях об ошибках. Необязательный параметр. Возможные значения зависят от выбранного типа поиска:

        • Тип поиска Русский:
          • LOCALIZATION_RU — русский язык (значение по умолчанию).
          • LOCALIZATION_BE — белорусский язык.
          • LOCALIZATION_KK — казахский язык.
          • LOCALIZATION_UK — украинский язык.
        • Тип поиска Турецкий:
          • LOCALIZATION_TR — турецкий язык.
        • Тип поиска Международный:
          • LOCALIZATION_EN — английский язык.
      • folder_idидентификатор каталога пользователя или сервисного аккаунта, от имени которого вы будете выполнять запросы.

      • response_format — формат получения поисковой выдачи. Необязательный параметр. Возможные значения:

        • FORMAT_XML — результат запроса будет передан в формате XML (значение по умолчанию).
        • FORMAT_HTML — результат запроса будет передан в формате HTML.
      • user_agent — строка, содержащая заголовок User-Agent. Параметр позволяет получить поисковую выдачу, ориентированную на конкретные устройство и браузер, в том числе мобильную выдачу. Необязательный параметр. Если параметр не задан, сервис возвращает стандартную выдачу по умолчанию.

      Список поддерживаемых параметров:

      Примечание

      Список поддерживаемых в запросе параметров зависит от того, в каком формате требуется получить результат: XML или HTML.

      Параметр Поддерживается при XML-ответе Поддерживается при HTML-ответе
      search_type yes yes
      query_text yes yes
      family_mode yes yes
      page yes yes
      fix_typo_mode yes no
      sort_mode yes no
      sort_order yes no
      group_mode yes no
      groups_on_page yes yes
      docs_in_group yes no
      max_passages yes no
      region yes yes
      l10n yes no
      folder_id yes yes
      response_format yes yes
      user_agent yes yes
    2. Выполните gRPC-вызов, указав полученный ранее IAM-токен:

      grpcurl \
                -rpc-header "Authorization: Bearer <IAM-токен>" \
                -d @ < body.json \
                searchapi.api.cloud.yandex.net:443 yandex.cloud.searchapi.v2.WebSearchService/Search \
                > result.json
              

    В результате в файл result.json будет сохранен результат выполнения поискового запроса, содержащий в поле rawData XML или HTML ответ в кодировке Base64.

  2. В зависимости от запрошенного формата ответа декодируйте результат из формата Base64:

    echo "$(< result.json)" | \
              jq -r .rawData | \
              base64 --decode > result.xml
            

    В результате в файл result.xml будет сохранен XML-ответ по запросу.

    echo "$(< result.json)" | \
              jq -r .rawData | \
              base64 --decode > result.html
            

    В результате в файл result.html будет сохранен HTML-ответ по запросу.

См. также