serp-yandex-search-and-context Выдача Яндекса: органика, реклама и колдунщики
Собирает выдачу Яндекса по списку запросов и вместе с органикой отдаёт рекламные блоки — над выдачей, внутри неё и под ней — и признаки колдунщиков. Работает асинхронно, но не через report_id, как остальные инструменты: задача ставится методом searchAndContext/set, готовность проверяется serp/yandex/status, результат забирается serp/yandex/get по task_id.
- Режим
- асинхронный:
task_id→ status → get - Стоимость
- 2 лимита за запрос с рекламой, 1 — только органика
- Запросов в задаче
- до 15 000
- Методы
- GET и POST; ключ — в query
Постановка задачи: органика и реклама
/api/serp/yandex/searchAndContext/set
Ставит задачу и сразу списывает лимиты: 2 за каждый уникальный запрос, независимо от deep, is_mobile и ads_only. Параметры можно передать и в query.
Параметры query и тело формы
-
keywordsarray обязательныйЗапросы: строка, по запросу на строку, или массивkeywords[]. Пустые строки и дубли отбрасываются. До 15 000 запросов. -
regionint обязательный -
deepintСколько результатов органической выдачи собирать по запросу. На стоимость не влияет. -
is_mobileintМобильная выдача вместо десктопной. -
ads_onlyintСобрать только рекламу, без органической выдачи. Цена та же.
Ответ
-
task_idintID задачи дляstatusиget.
Постановка задачи: только органика
/api/serp/yandex/set
То же без сбора рекламы — за 1 лимит на запрос; рекламные блоки в результате пустые. Параметры, ответ, статус и получение результата — как у searchAndContext/set, кроме ads_only.
Параметры query и тело формы
-
keywordsarray обязательныйЗапросы: строка, по запросу на строку, или массивkeywords[]. Пустые строки и дубли отбрасываются. До 15 000 запросов. -
regionint обязательный -
deepintСколько результатов органической выдачи собирать по запросу. На стоимость не влияет. -
is_mobileintМобильная выдача вместо десктопной.
Готовность задачи
/api/serp/yandex/status
Опрашивайте раз в 5–10 секунд, пока progress не станет 100. Сразу после постановки может прийти {"error": "session is not ready"} — задача ещё не попала в очередь, повторите запрос.
Параметры query и тело формы
-
task_idint обязательныйID задачи из ответа на постановку.
Ответ
-
progressintГотовность, % от 0 до 100.
Результат
/api/serp/yandex/get
Вызывайте, когда progress дошёл до 100. Повторные вызовы бесплатны. Большую задачу читайте частями: увеличивайте offset на limit, пока не придёт пустая выборка.
Параметры query и тело формы
-
task_idint обязательныйID задачи из ответа на постановку. -
limitintСколько запросов отдать за вызов. -
offsetintСмещение для постраничного чтения.
Ответ
Список объектов — по одному на запрос задачи. Данные отдаются парсером как есть; кроме описанных полей могут приходить служебные (count_results, parsed_at и др.).
-
querystringЗапрос. -
query_idstringПорядковый номер запроса в задаче. -
regionintРегион. -
is_mobileint1— мобильная выдача. -
organic[]arrayОрганика:position,url,domain,title,snippet,visible_link. Пусто приads_only=1. -
ads_top[]arrayРеклама над выдачей:position,url,domain,title,snippet. -
ads_middle[]arrayРеклама внутри выдачи. -
ads_bottom[]arrayРеклама под выдачей. -
koldunshikiobjectКолдунщики,true/false:entity_card— карточка объекта,alice_answer— ответ Алисы,facts— факты,see_also— «смотрите также»,map— карта,companies— организации,currency_converter— конвертер валют.
Справочник регионов
/api/serp/regions/get
Регионы, которые принимает параметр region. Ключ не нужен — метод открыт.
Ответ
-
[].lrintКод региона Яндекса — значение дляregion. -
[].slugstringНазвание региона.
Ошибки
| Код | Сообщение | Когда |
|---|---|---|
-50 |
empty keywords |
После очистки не осталось запросов. Тот же код у too much keywords, current limit 15000 и wrong region — региона нет в справочнике. |
-55 |
empty task_id |
task_id не передан (у get — ещё и не число). |
-75 |
server error |
Задачу не удалось поставить в очередь; лимиты не списаны — повторите запрос. |
— |
session is not ready |
status: задача ещё не появилась в очереди. Не ошибка, повторите запрос. |
-68, -80…-83 |
Not enough … limits |
Не хватает лимитов на задачу; в ответе available и need. Задача не создаётся. |
-1, -2 |
Access denied |
Ключ не передан или не найден. В отличие от других методов, HTTP-код — 200. |
Сколько стоит
searchAndContext/set — 2 лимита за каждый уникальный запрос, serp/yandex/set — 1. Списание одно — при успешной постановке; status и get бесплатны. Задача на 500 запросов с рекламой спишет 1000 лимитов. Если реклама и колдунщики не нужны, берите serp/yandex/set.
Ограничения
- Не больше 15 000 запросов в задаче — больший список разбивайте.
- Реклама ротируется:
ads_top,ads_middleиads_bottom— это объявления на момент сбора, а не «средний» набор. - Все методы группы отвечают HTTP 200 и при ошибках — проверяйте поле
error.