Проверка позиций сайта по регионам без каши в данных

· позиции · регионы

Фраза «мы на третьем месте» ничего не значит, пока не названы город и поисковик. По запросу «доставка цветов» выдача в Москве, Казани и Новосибирске — это три разных списка сайтов, и пересекаются они меньше, чем хотелось бы. Если снимать позиции без фиксации региона, на выходе будет не динамика, а шум: сегодня замер прилетел с московского IP, завтра с новосибирского, и график прыгает на десять строк без единого изменения на сайте. Разберём, как фиксировать регион в Яндексе и Google, где брать коды городов и во что обходится съём позиций по десятку регионов сразу.

Откуда берётся разброс

Оба поисковика подмешивают в выдачу локальные результаты: по коммерческим запросам это почти вся первая страница. Регион поисковик определяет по IP, если его не указали явно. Значит, любой парсер без явного региона показывает выдачу того города, где стоит его сервер, а это редко тот город, который вам нужен. Проверить, как это выглядит с вашего адреса, можно через бесплатный /api/geoip; заодно он выручает, когда клиент присылает скриншот «а у меня всё по-другому»: как правило, у него просто другой регион, подробнее про определение региона по IP.

Регион в Яндексе: параметр lr

С Яндексом всё прозрачно. У каждого региона есть числовой код, он передаётся параметром lr (или region, кому как привычнее) в /api/yandex. Самые ходовые:

Город lr
Москва 213
Санкт-Петербург 2
Екатеринбург 54
Новосибирск 65
Казань 43

Всего в нашей базе 127 791 регионов Яндекса, вплоть до райцентров и посёлков. Искать коды удобно в каталоге регионов, а для скриптов есть бесплатный /api/yandex/regions, который работает даже без авторизации.

Глубину задаёт параметр pages: от 1 до 20 страниц по десять результатов, то есть максимум топ-200. Для мониторинга позиций обычно хватает трёх-пяти страниц.

Регион в Google: числовой ID и UULE

У Google своих кодов в духе lr нет, локация передаётся через параметр UULE, закодированную строку с каноническим названием места. Собирать её руками занятие сомнительное, поэтому у нас достаточно передать числовой ID региона: для Москвы region=1011969. Сервер сам построит UULE и подставит подходящий gl. Как устроен этот механизм изнутри, рассказано в статье про UULE.

База регионов Google у нас заметно толще яндексовской: 273 644 локаций, включая районы городов. ID ищите в каталоге или через бесплатный /api/google/regions.

Какие города брать в мониторинг

Все 127 тысяч регионов вам не нужны. Разумный набор — это города, из которых реально идут заказы, плюс миллионники, куда вы собираетесь заходить. Для интернет-магазина с доставкой по стране это обычно от 5 до 15 городов; для локального бизнеса хватает одного, но зато с проверкой и по Яндексу, и по Google: поведение у них в одном и том же городе может отличаться радикально. Частота замеров зависит от ниши: в спокойной тематике достаточно раза в неделю, после переезда сайта или фильтра имеет смысл смотреть ежедневно, пока картина не устаканится.

Как снимать по многим городам и не разориться

Съём позиций по регионам — это перемножение: 100 запросов × 10 городов × 2 поисковика = 2000 проверок. Звучит дорого, но на деле нет. Страница выдачи стоит 0.01 ₽, и есть два способа не платить лишнего.

Первый способ: break_domain. Передаёте домен, позицию которого ищете, и парсер останавливается, как только его встретит. Если сайт в топ-10, списывается одна страница, одна копейка. Если на четвёртой странице, то четыре копейки. Платите за фактически просмотренное, а не за заказанную глубину. Детали в разборе break_domain.

Второй способ: не брать глубину про запас. Если сайт стабильно в топ-30, запрашивать pages=20 незачем: трёх страниц хватит, а выпадение за тридцатую позицию и так видно по отсутствию домена в ответе.

Итого при разумных настройках те самые 2000 проверок обойдутся в сумму от 20 до 60 ₽. Стартовых 10 ₽, которые начисляются при регистрации, хватает на полный тестовый прогон средней семантики по паре городов.

Чек-лист перед запуском

  1. Зафиксируйте регионы явно: lr для Яндекса, числовой ID для Google. Никогда не полагайтесь на автоопределение по IP.
  2. Снимайте всегда в одних и тех же регионах и с одинаковой глубиной, иначе ряды несравнимы.
  3. Включите break_domain, если нужны именно позиции, а не вся выдача.
  4. Сверьте пару замеров руками в браузере с выставленным регионом, прежде чем доверять автоматике.

Инструменты под это есть на любой вкус: HTTP API с JSON-ответами для своих скриптов, XML-эндпоинты для Key Collector и похожих программ, тарифы на странице цен. А если запускать съём хочется вообще без скриптов, позиции можно спрашивать у ИИ-агента прямо в чате. Как это настроить, написано в статье про проверку позиций через Claude Code и Codex.


Читайте дальше