Аналог XMLRiver и XMLStock для парсинга выдачи
· Яндекс XML · миграция
Если вы снимаете выдачу через XMLRiver, XMLStock, XMLProxy или XMLSeo, переезд к нам занимает примерно столько времени, сколько нужно, чтобы поменять адрес в настройках программы. Формат ответа тот же самый, параметры почти совпадают, а страница выдачи стоит 0.01 ₽. Ниже разберём, что именно менять в запросах и где сервисы всё-таки расходятся.
Почему вообще XML, а не JSON
Исторически всё выросло из Яндекс XML: официального сервиса, который отдавал выдачу в XML и раздавал лимиты
по расписанию. Под этот формат написаны Key Collector, TopSite, SiteAnalyzer, KeyAssort и половина
самописных парсеров рунета. Никто не станет переписывать рабочий софт ради красивого JSON, поэтому все
сервисы-посредники отдают ровно ту же XML-структуру: yandexsearch → response → results → grouping →
group → doc.
Мы отдаём и то, и другое. Есть /api/yandex с обычным JSON, если вы пишете свой скрипт, и /api/yandex/xml в формате Яндекс XML, если у вас уже настроен Key Collector. Ссылку с ключом для второго случая можно скопировать прямо в личном кабинете.
Что менять в запросе
Берёте свой рабочий URL и меняете адрес сервиса на наш. Дальше сверяетесь с таблицей: большинство параметров называются одинаково, потому что все они родом из того же Яндекс XML.
| Что нужно | XMLRiver / XMLStock | JSON SEO |
|---|---|---|
| Авторизация | user + key |
только key (или заголовок Authorization: Bearer) |
| Запрос | query |
query, text или q |
| Регион Яндекса | lr |
lr или region |
| Регион Google | lr (XMLStock), loc (XMLRiver) |
region, а также loc и числовой lr |
| Сколько позиций | groupby |
groupby, кратно 10, до 200 |
| Страница | page (с нуля) |
page (с нуля) |
| Доменная зона | domain |
domain или zone (ru, com, kz, by, uz, tr) |
Выглядит это так:
https://jsonseo.ru/api/yandex/xml?key=ВАШ_КЛЮЧ&query=купить+ноутбук&lr=213&groupby=50
Где мы расходимся с ними
Три момента, на которых можно споткнуться.
Параметр lr в Google. Тут единого стандарта нет вообще: у XMLStock это ID
региона, а у XMLRiver код языка результатов. Мы принимаем lr как регион, только если он
числовой, а язык интерфейса задаётся отдельным hl. Так работают оба сценария и ничего не
ломается молча.
Глубина. У нас потолок 200 позиций за запрос: groupby=200 при
page=0. Дальше двухсотой строки не уйти, но честно говоря, дальше сотой уже мало кому нужно.
Оплата пагинации. Поиск живой, воркер всегда начинает с первой страницы. Значит при
page=1 он проходит и первую сотню тоже, и она тарифицируется. Вывод простой: увеличивайте
groupby и держите page=0, тогда заплатите ровно за то, что забрали.
Про деньги
У нас 10 ₽ за 1000 страниц выдачи, то есть 0.01 ₽ за страницу, одна цена на Яндекс, Google, Bing и Вордстат. Пополнили баланс и тратите, пока не кончится. При регистрации на счёт падают 10 ₽, так что первую тысячу запросов можно сделать, вообще ничего не платя, и спокойно сравнить нашу выдачу со своей текущей.
Отдельно стоит знать про break_domain. Если вы снимаете не всю выдачу, а позицию конкретного сайта, передайте его домен, и парсер остановится, как только его встретит. Сайт нашёлся на второй странице? Заплатите за две, а не за десять.
Что делать прямо сейчас
- Зарегистрируйтесь и заберите ключ в кабинете. Там же лежит готовая XML-ссылка, её можно сразу вставить в Key Collector.
- Прогоните десяток своих обычных запросов и сравните выдачу с текущим сервисом. Тратятся копейки, а картина станет понятной сразу.
- Если что-то не сходится, посмотрите документацию: там расписаны все параметры и примеры ответов.