GET-запрос → XML-ответ в формате Яндекс XML. Органическая выдача с позициями, доменами, заголовками и сниппетами. Мобильная и десктопная выдача, выбор региона.
Базовый эндпоинт принимает параметры в query-строке и возвращает XML. Авторизация — по паре user + key. Один вызов = один поисковый запрос; для пакетной обработки есть отдельный batch-эндпоинт.
GEThttps://xmlsearch.ru/search_yandex/xml
Пример:
https://xmlsearch.ru/search_yandex/xml?user=USER&key=KEY&query=пластиковые+окна&lr=213&device=desktop&groupby=10
| Параметр | Значения | Описание |
|---|---|---|
user обяз. | ID | Идентификатор пользователя. |
key обяз. | строка | API-ключ пользователя. |
query обяз. | текст | Поисковый запрос. Символ & кодировать как %26. |
lr | число по умолч. 213 | Регион (код Яндекса). 213 — Москва, 2 — СПб, 54 — Екатеринбург, 65 — Новосибирск, 43 — Казань и т.д. |
device | mobile | desktopпо умолч. mobile | Тип выдачи: мобильная или десктопная (ранжирование различается). |
groupby | 1–50 по умолч. 10 | Сколько результатов вернуть (топ N). |
page | 0, 1, 2… по умолч. 0 | Номер страницы выдачи (0 — первая). |
XML в формате Яндекс XML. Результаты идут группами <group> в порядке ранжирования; позиция — атрибут id у <doc>.
<?xml version="1.0" encoding="utf-8"?>
<yandexsearch version="1.0">
<request>
<query>пластиковые окна</query>
<page>0</page>
<groupings><groupby attr="d" mode="deep" groups-on-page="10" docs-in-group="1"/></groupings>
</request>
<response date="20260730T041500">
<found priority="all">10</found>
<results>
<grouping attr="d" mode="deep" groups-on-page="10" docs-in-group="1">
<page first="1" last="10">0</page>
<group>
<doccount>1</doccount>
<doc id="1">
<url>https://www.mosokna.ru/</url>
<domain>www.mosokna.ru</domain>
<title>Пластиковые окна от производителя в Москве</title>
<passages><passage>Устанавливаем пластиковые окна и балконные двери…</passage></passages>
</doc>
</group>
<!-- ещё group … -->
</grouping>
</results>
</response>
</yandexsearch>
| Тег | Описание |
|---|---|
found | Число возвращённых результатов. |
group → doc id | Результат; id = позиция в выдаче. |
url | Ссылка результата. |
domain | Домен результата. |
title | Заголовок сниппета. |
passages → passage | Текст сниппета. |
Один вызов на несколько запросов — обрабатываются параллельно на сервере, ответ приходит одним XML. Параметры lr, device, groupby, page применяются ко всем запросам пачки.
queryhttps://xmlsearch.ru/search_yandex/batch?user=USER&key=KEY&lr=213&device=desktop&query=пластиковые+окна&query=купить+велосипед&query=ремонт+холодильников
curl -X POST "https://xmlsearch.ru/search_yandex/batch?user=USER&key=KEY&lr=213&groupby=10" \
--data-binary $'пластиковые окна\nкупить велосипед\nремонт холодильников'
<?xml version="1.0" encoding="utf-8"?>
<batch>
<item query="пластиковые окна">
<yandexsearch version="1.0"> … </yandexsearch>
</item>
<item query="купить велосипед">
<yandexsearch version="1.0"> … </yandexsearch>
</item>
</batch>
Если отдельный запрос не удалось снять — у его <item> будет блок <error>, остальные вернутся нормально.
При ошибке возвращается XML с тегом <error>:
<yandexsearch version="1.0"><response><error code="100">wrong user or key</error></response></yandexsearch>
| Код | Значение |
|---|---|
100 | Неверный user или key. |
15 | Пустой запрос. |
500 | Не удалось снять выдачу (после нескольких попыток). |
GEThttps://xmlsearch.ru/health — проверка доступности (возвращает <ok/>).