GET-запросы
Интерфейс API v1 сервиса Search API позволяет выполнять запросы к поисковой базе Яндекса с заданным набором параметров. Параметры поиска можно передавать в сервис в виде HTTP-запроса методом GET. Search API формирует ответ в виде документа в формате XML или в формате HTML.
Чтобы воспользоваться поиском, при регистрации в сервисе укажите список IP-адресов, с которых будут выполняться запросы к сервису, и выберите нужный тип поиска. В зависимости от выбранного типа поиска указывайте в запросе подходящее имя домена:
yandex.ru
— для типа поискаРусский
;yandex.com.tr
— для типа поискаТурецкий
;yandex.com
— для типа поискаМеждународный
.
Для выполнения запросов необходим сервисный аккаунт с ролью search-api.executor
и созданный для него API-ключ.
Формат запроса
Важно
Специальные символы, передаваемые в качестве значений параметров, необходимо заменять на соответствующие экранированные последовательности в соответствии с percent-encoding. Например, вместо знака равно =
используйте последовательность %3D
.
URL запроса к сервису Search API различается в зависимости от того, в каком формате требуется получить результат: XML или HTML.
https://yandex.<домен>/search/xml
? [folderid=<идентификатор_каталога>]
& [apikey=<API-ключ>]
& [query=<текст_поискового_запроса>]
& [lr=<идентификатор_региона_поиска>]
& [l10n=<язык_уведомлений>]
& [sortby=<тип_сортировки>]
& [filter=<тип_фильтрации>]
& [maxpassages=<количество_пассажей>]
& [groupby=<параметры_группировки_результатов>]
& [page=<номер_страницы>]
https://yandex.<домен>/search/xml/html
? [folderid=<идентификатор_каталога>]
& [apikey=<API-ключ>]
& [query=<текст_поискового_запроса>]
& [lr=<идентификатор_региона_поиска>]
& [l10n=<язык_уведомлений>]
& [sortby=<тип_сортировки>]
& [filter=<тип_фильтрации>]
& [maxpassages=<количество_пассажей>]
& [groupby=<параметры_группировки_результатов>]
& [page=<номер_страницы>]
Параметры запроса
Идентификатор каталога и API-ключ
Поле folderid
содержит идентификатор каталога сервисного аккаунта, от имени которого вы будете отправлять запросы. Вместе с параметром apikey
— значением API-ключа сервисного аккаунта — необходим для аутентификации пользователя.
Запрос
Текст поискового запроса передается в поле query
. При обработке учитываются особенности языка запросов Яндекса
Максимальная длина запроса — 40 слов и 400 символов.
Идентификатор региона поиска
Поддерживается только для типов поиска Русский и Турецкий.
Поле lr
содержит идентификатор страны или региона поиска, который влияет на правила ранжирования документов. Например, если передать в данном поле значение 11316
(Новосибирская область), то при формировании результатов поиска используется формула, определенная для Новосибирской области.
Список идентификаторов часто используемых стран и регионов см. в разделе Регионы поиска.
Язык уведомлений
Поле l10n
определяет язык уведомлений поискового ответа влияет на текст, передаваемый в теге found-docs-human
и в сообщениях об ошибках.
Возможные значения зависят от используемого типа поиска.
Тип поиска Русский (yandex.ru):
ru
— русский язык (значение по умолчанию);uk
— украинский язык;be
— белорусский язык;kk
— казахский язык.
Тип поиска Турецкий (yandex.com.tr) — поддерживается только значение tr
(турецкий язык).
Тип поиска Международный (yandex.com) — поддерживается только значение en
(английский язык).
Сортировка результатов
Поле sortby
содержит правило сортировки результатов поиска, которое определяет порядок выдачи результатов поиска. Возможные значения:
rlv
— по релевантности (значение по умолчанию);tm
— по времени изменения документа.
При сортировке по времени изменения параметр может содержать атрибут order
— порядок сортировки документов:
descending
— прямой — от наиболее свежего к наиболее старому (значение по умолчанию).ascending
— обратный — от наиболее старого к наиболее свежему.
Формат: sortby=<тип_сортировки>.order%3D<порядок_сортировки>
. Например, для обратной сортировки по дате необходимо использовать следующую конструкцию: sortby=tm.order%3Dascending
.
Фильтрация результатов
Поле filter
содержит правило фильтрации результатов поиска и определяет, исключать ли из результатов поиска какие-либо документы. Возможные значения:
none
— фильтрация отключена. В выдачу включаются любые документы вне зависимости от содержимого.moderate
— умеренный фильтр (значение по умолчанию). Из выдачи исключаются документы, относящиеся к категории "для взрослых", если запрос явно не направлен на поиск подобных ресурсов.strict
— семейный фильтр. Вне зависимости от поискового запроса из выдачи исключаются документы, относящиеся к категории "для взрослых", а также содержащие ненормативную лексику.
Максимальное количество пассажей
Пассаж — это фрагмент найденного документа, содержащий слова запроса. Пассажи используются для формирования сниппетов — текстовых аннотаций к найденному документу.
Поле maxpassages
определяет максимальное количество пассажей, которое может быть использовано при формировании сниппета к документу.
Допустимы значения от 1 до 5. Результат поиска может содержать меньшее количество пассажей, чем значение, указанное в данном параметре. По умолчанию для каждого документа возвращается не более четырех пассажей с текстом запроса.
Правила группировки результатов
Параметр groupby
объединяет правила группировки результатов. Группировка используются для объединения документов одного домена в контейнер. В рамках контейнера документы ранжируются по правилам сортировки, определенным в поле sortby
. Результаты, переданные в контейнере, могут быть использованы для включения в поисковую выдачу нескольких документов одного домена.
Параметры задаются через точку в формате:
attr%3D<служебный_атрибут>.mode%3D<тип_группировки>.groups-on-page%3D<количество_групп_на_одной_странице>.docs-in-group%3D<количество_документов_в_каждой_группе>
Где:
mode
— метод группировки. Возможные значения:flat
— плоская группировка. Каждая группа содержит один документ. Передается с пустым значением параметраattr
.deep
— группировка по доменам. Каждая группа содержит документы одного домена. Передается со значениемd
параметраattr
.
Если параметр не задан, используется группировка по доменам.
attr
— служебный атрибут. Зависит от значения атрибутаmode
.groups-on-page
— максимальное количество групп, которые могут быть возвращены на одной странице результатов поиска. Допустимые значения — от 1 до 100.docs-in-group
— максимальное количество документов, которые могут быть возвращены в одной группе. Допустимые значения — от 1 до 3.
Номер запрашиваемой страницы
Поле page
содержит номер запрашиваемой страницы поисковой выдачи. Номер определяет диапазон позиций документов, возвращаемых по запросу. Нумерация страниц начинается с нуля (первой странице соответствует значение 0
).
Например, если количество документов, возвращаемых на странице, равно n
, а в параметре передано значение p
, то в результаты поиска будут включены документы, находящиеся в диапазоне позиций выдачи от p*n+1
до p*n+n
включительно.
По умолчанию возвращается первая страница поисковой выдачи.
Пример GET-запроса
Следующий запрос возвращает пятую страницу результатов поиска по запросу <table>
. Тип поиска — Русский
(yandex.ru). Регион поиска — Новосибирская область. Язык уведомлений — русский. К результатам поиска применен семейный фильтр. Количество пассажей — три. Результаты группируются по домену и сортируются по релевантности. Каждая группа содержит три документа, а количество групп, возвращаемых на одной странице, равно пяти.
URL запроса к сервису Search API различается в зависимости от того, в каком формате требуется получить результат: XML или HTML.
https://yandex.ru/search/xml?folderid=b1gt6g8ht345********&apikey=your_service_account_API_key********&query=%3Ctable%3E&lr=11316&l10n=ru&sortby=rlv&filter=strict&groupby=attr%3Dd.mode%3Ddeep.groups-on-page%3D5.docs-in-group%3D3&maxpassages=3&page=4
https://yandex.ru/search/xml/html?folderid=b1gt6g8ht345********&apikey=your_service_account_API_key********&query=%3Ctable%3E&lr=11316&l10n=ru&sortby=rlv&filter=strict&groupby=attr%3Dd.mode%3Ddeep.groups-on-page%3D5.docs-in-group%3D3&maxpassages=3&page=4