Передача данных о погоде в Яндекс Метрику с использованием API Яндекс Погоды

03 февраля, 2026

Ваш бизнес зависит от погоды? Доставка еды, службы такси, пункты проката, фермерские продукты, продажа сезонной одежды, занятия на открытом воздухе, парк развлечений? Научитесь передавать данные о погодных условиях в Яндекс Метрику и узнайте, как температура и условия влияют на конверсию и вашу выручку.

Примечание: о том, как передавать данные о погоде в Google Analytics, читайте в этой публикации.

В этом руководстве мы научимся передавать погодные данные, используя сервис Яндекса - Яндекс Погода. И поможет нам в этом Яндекс Тег Менеджер!

Яндекс Погода

Сразу бы хотелось отметить то, что приведенный ниже способ является платным. Итоговая стоимость реализации будет зависеть от выбранного вами тарифа доступа к API Яндекс Погоды. Однако Яндекс предоставляет бесплатный пробный период на 7 дней. Так что вам хватит времени попробовать выполнить все настройки, описанные в данном руководстве.

Яндекс Погода - это сервис от Яндекса, предоставляющий точные прогнозы погоды, карту осадков и метеоданные на основе собственной технологии Meteum, использующей ИИ, спутники, радары и отзывы пользователей.

Яндекс Погода

Сервис работает через сайт, приложение и API, предлагая поминутные, почасовые, долгосрочные и тематические прогнозы для любой точки. Благодаря этому мы можем использовать Яндекс Погоду для передачи данных в Яндекс Метрику через Яндекс Тег Менеджер.

Яндекс Погода

Для этого нужно использовать API. С помощью API Яндекс Погоды вы можете получать данные о погоде и использовать их в ваших системах или продуктах. Для этого есть интерактивная среда GraphQL и готовые REST-запросы.

API с нужной вам регулярностью передает текущие данные и прогноз по 150+ погодным параметрам: от базовых (температура, осадки) до нишевых, которые важны для вашего бизнеса. Например, на тестовом тарифе, который я буду использовать в текущей демонстрации, доступны следующие погодные данные:

  1. текущее значение облачности
  2. общие погодные условия в данный момент
  3. процент массовой доли водяных паров в воздухе относительно максимально возможного значения при текущей температуре
  4. иконка общих погодных условий
  5. планетарный K-индекс
  6. текущее атмосферное давление на среднем уровне моря
  7. фаза луны
  8. текущее погодное явление. Отсутствует при нормальных погодных условиях
  9. общий объем атмосферных осадков за этот час
  10. текущая вероятность осадков
  11. текущее значение силы осадков
  12. текущий тип осадков
  13. текущее атмосферное давление
  14. время начала восхода солнца
  15. время восхода солнца
  16. время окончания захода солнца
  17. время захода солнца
  18. значение температуры в тени на высоте двух метров над земной поверхностью
  19. видимость
  20. температура поверхности воды
  21. угол направления ветра
  22. текущее направление ветра
  23. скорость порывов ветра
  24. скорость ветра на высоте 10 метров над земной поверхностью

На других тарифах вы получите гораздо больше погодных данных.

Один из самых распространенных сценариев использования погодных данных - получение информации о текущей погоде в точке. Представьте себе, что вы можете сегментировать своих пользователей в Яндекс Метрике в зависимости от погодных условий в их регионе (например, в Яндекс Директе показывать рекламу зонтов, если precType (тип осадков) - дождь, или кондиционеров, если temperature (температура) > 25).

Чтобы запросить такие данные, необходимо в запросе указать объект now и перечислить поля, которые вы желаете получить в ответе.

Доступны данные по:

  • температуре - temperature
  • влажности воздуха - humidity
  • давлению - pressure
  • типу и силе осадков - precType, precStrength
  • скорости и направлению ветра - windSpeedwindDirection
  • облачности - cloudiness
  • другим погодным параметрам.

Вы можете использовать специальные единицы измерения:

Более детальный список доступных полей и их аргументов можно посмотреть на странице Полная спецификация GraphQL.

Однако нас не просто интересуют погодные данные в конкретной точке, а погода в конкретном регионе у конкретного пользователя. Например, вы хотите на сайте отслеживать не просто факт оформления заказа, но еще и вместе с событием передавать данные о погодных условиях (какая температура в текущей локации посетителя, какая влажность воздуха, скорость ветра и т.д. и т.п.). Все это мы сделаем ниже.

Чтобы попробовать бесплатно API Яндекс Погоды в течение 7-ми дней (тестового периода), перейдите по ссылке и нажмите на кнопку Получить доступ:

Получить доступ к API Яндекс Погоды

На открывшейся странице примите условия использования сервиса и войдите с помощью Яндекс ID:

Погода для бизнеса - Войти с помощью Яндекс ID

Далее Попробовать бесплатно:

Попробовать бесплатно

Вам будет предоставлен тестовый период на 7 дней. Привязывать карту не нужно. Яндекс попросит вас рассказать о вашем проекте, для чего вы хотите получить доступ к API и как будете использовать погодные условия. Я указал как есть: Для демонстрации функционала API Яндекс Погоды и передачи данных о погодных условиях в Яндекс Метрику с помощью Яндекс Тег Менеджера. Мой проект - osipenkov.ru

Расскажите о своем проекте

После отправки информации Яндекс активирует вам пробный период на 7 дней, а на электронную почту придет соответствующее уведомление. Теперь вы можете пользоваться API Яндекс Погоды.

Теперь вы можете пользоваться API Яндекс Погоды

Теперь перейдем в интерфейс Яндекс Тег Менеджера и начнем настройку.

Активация функции “Пользовательский HTML”

Первым делом вам необходимо активировать опцию Пользовательский HTML в настройках счетчика Яндекс Метрики.

Для этого перейдите в раздел Настройки - Счетчик:

Настройки - Счетчик

И включите функцию Пользовательский HTML:

Активация пользовательского HTML

Пользовательский HTML в Yandex Tag Manager (YTM) - это тип тега, который позволяет добавлять на сайт произвольный HTML-код, JavaScript или другие скрипты, которые не поддерживаются стандартными тегами и которых нет в каталоге шаблонов. Код будет выполняться при срабатывании триггера, в нем также можно использовать переменные для динамической подстановки нужных значений.

Сохраните изменения.

Создание триггера

Перейдите на вкладку Триггеры и создайте триггер типа Просмотр страницы:

Триггер "Просмотр страницы"

Задайте ему название (например - All Pages (Все страницы)) и сохраните его.

Создание переменной

Теперь перейдите в раздел Переменные и создайте переменную типа Константа. В Значение переменной вставьте ключ, скопировав его из интерфейса API Яндекс Погоды:

Копирование ключа API

У вас должно получится так:

Переменная "Константа" с ключом API Яндекс Погоды

Задайте название переменной (например - API ключ) и сохраните ее.

Создание тега

Откройте раздел Теги и создайте тег типа Пользовательский HTML с таким кодом:

Важно: в переменную YANDEX_API_KEY вставьте свою переменную типа Константа, которую вы создали на предыдущем шаге. В ней сохранен ваш ключ API Яндекс Погоды.

Вставьте между одинарными кавычками переменную "Константа" с ключом API

Примечание: API Яндекс Погоды имеет три версии с разными подходами к протоколу и функционалу. v1 - устаревшая версия, не рекомендуется для использования. v2 использует REST API, а v3 перешла на GraphQL с расширенными данными.

Больше никаких изменений в коде не делайте. В качестве триггера активации задайте All Pages (Все страницы). Сохраните тег.

Пользовательский HTML со специальным кодом

Расшифровка кода

Этот скрипт предназначен для автоматического определения местоположения пользователя, получения данных о погоде через API Яндекс Погоды и передачи этих данных в Яндекс Тег Менеджер (через dataLayer).

1. Настройки и переменные

  • YANDEX_API_KEY - ключ доступа к API Яндекс Погоды;
  • GEO_TIMEOUT - лимит ожидания ответа от встроенной геолокации браузера (3000 - 3 секунды);
  • SESSION_COOKIE_NAME - название куки (в нашем примере - weather_session), которая используется для предотвращения повторных запросов к API;
  • log() - вспомогательная функция для вывода сообщений в консоль браузера (для отладки);
  • pushToDataLayer(data) - функция-обертка для отправки объектов в массив window.dataLayer.

2. Функции для работы с файлами cookie

  • getCookie(name) - ищет в браузере куки с указанным именем. Возвращает значение, если куки существует;
  • setSessionCookie() - создает куки на 30 минут. Это механизм оптимизации: скрипт не будет запрашивать погоду при каждом обновлении страницы, если данные уже были получены недавно (экономия лимитов API).

3. Функции определения местоположения (геолокация)

Скрипт использует двухэтапную проверку:

  • geoByBrowser() - пытается получить координаты через встроенное API браузера (запрашивает разрешение у пользователя). Если пользователь разрешил доступ, возвращает широту и долготу;
  • geoByIp() - если браузерная геолокация недоступна или пользователь отклонил запрос, скрипт обращается к стороннему сервису ipwho.is, который определяет примерные координаты по IP-адресу пользователя.

Другими словами, когда пользователь заходит на сайт - у него запрашивается доступ к данным о геолокации:

Запрос на разрешение доступа к данным о местоположении

Если человек предоставляет этот доступ - скрипт считывает GPS-координаты посетителя и для этих координат возвращает данные о погоде. Если пользователь запрещает доступ к данным о геолокации - координаты определяются по IP-адресу посетителя сайта с помощью ipwho.is. Если пользователи используют VPN - данные о погоде будут неточными.

Пример определенных данных (ipwho.is)

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

4. Функция получения погоды

  • принимает координаты и метку источника (browser или ip в зависимости от выбранного способа определения геолокации);
  • выполняет GET-запрос к API Яндекс Погоды;
  • при успешном ответе вызывает pushToDataLayer и устанавливает сессионную куку.

5. Логика работы (инициализация)

При загрузке страницы скрипт выполняет следующие действия:

  1. проверка файла cookie. Если кука weather_session есть - скрипт завершает работу, так как погода уже была получена;
  2. поиск координат. Сначала пробует geoByBrowser (определение геолокации через браузер). Если ошибка - пробует geoByIp (определение геолокации с помощью стороннего сервиса ipwho.is);
  3. запрос данных. С полученными координатами вызывает API Яндекса.
  4. результат. Данные уходят в аналитику.

6. Что попадает на уровень данных (dataLayer)?

Самое важное и интересное. После успешного получения погоды в dataLayer отправляется событие weatherDone, а вместе с ним ряд параметров:

  • event - название события для настройки триггера специального события;
  • weather_source - как узнали местоположение пользователя (по браузеру или по ip-адресу);
  • temperature - температура воздуха;
  • feels_like - температура по ощущениям;
  • condition - общие погодные условия;
  • cloudiness - облачность;
  • humidity - влажность воздуха;
  • precType - тип осадков;
  • precStrength - сила осадков;
  • pressure - атмосферное давление;
  • windSpeed - скорость ветра;
  • windDirection - направление ветра.

Эти и другие параметры подробно представлены в официальной документации API Яндекс Погоды. Вы можете менять их в коде в зависимости от ваших задач.

Создание триггера специального события

Сохранив тег, перейдите на вкладку Триггеры и создайте триггер типа Специальное событие. В поле Название события введите weatherDone:

Специальное событие - weatherDone

Назовите триггер (например - weatherDone) и сохраните его.

Создание переменных уровня данных

После этого перейдите на вкладку Переменные и создайте переменную типа Переменная уровня данных. В поле имя переменной уровня данных поочередно добавьте все значения, которые присутствуют в вашем пользовательском HTML-теге:

Для источника геоданных укажите Имя переменной уровня данных - weather_source:

Имя переменной уровня данных - weather_source

Для температуры - temperature:

Имя переменной уровня данных - temperature

Для температуры по ощущения - feels_like:

Имя переменной уровня данных - feels_like

И так далее. В результате, если вы будете отслеживать все параметры, которые перечислены в моем коде, вам нужно создать 11 переменных уровня данных:

Переменные уровня данных

API Яндекс Погоды отдает некоторые значения на английском языке. Например, параметр precType (тип осадков) на тестовом тарифе принимает следующие значения:

  • 0 - без осадков;
  • 1 - дождь;
  • 2 - дождь со снегом;
  • 3 - снег;
  • 4 - град.

При проверке работы в режиме отладки Яндекс Тег Менеджера это будет выглядеть так:

Вкладка DataLayer с погодными данными в режиме отладки ЯТМ

И чтобы не запоминать все коды при анализе параметров событий/визита в Яндекс Метрике, вы можете преобразовать значения в удобный вид. Для этого используйте переменную типа Таблица поиска.

В качестве входной переменной выберите переменную уровня данных precType:

Входная переменная - Переменная уровня данных

Задайте входные и выходные данные (результат):

Входные и выходные данные

Задайте переменной название (например - Таблица поиска - Тип осадков) и сохраните ее.

Проделайте точно такие же действия для других переменных, для которых требуется осуществить сопоставление или перевод погодных данных.

Коды расшифровки погодного описания для параметра condition:

  • clear - ясно;
  • partly-cloudy - малооблачно;
  • cloudy - облачно с прояснениями;
  • overcast - пасмурно;
  • light-rain - небольшой дождь;
  • rain - дождь;
  • heavy-rain - сильный дождь;
  • showers - ливень;
  • wet-snow - дождь со снегом;
  • light-snow - небольшой снег;
  • snow - снег;
  • snow-showers - снегопад;
  • hail - град;
  • thunderstorm - гроза;
  • thunderstorm-with-rain - дождь с грозой;
  • thunderstorm-with-hail - гроза с градом.

Параметр wind_dir (направление ветра):

  • nw - северо-западное;
  • n - северное;
  • ne - северо-восточное;
  • e - восточное;
  • se - юго-восточное;
  • s - южное;
  • sw - юго-западное;
  • w - западное;
  • c - штиль.

Параметр prec_strength (сила осадков):

  • 0 - без осадков;
  • 0.25 - слабый дождь/слабый снег;
  • 0.5 - дождь/снег;
  • 0.75 - сильный дождь/сильный снег;
  • 1 - сильный ливень/очень сильный снег.

Параметр cloudness (облачность) принимает следующие значения:

  • 0 - ясно;
  • 0.25 - малооблачно;
  • 0.5 - облачно с прояснениями;
  • 0.75 - облачно с прояснениями;
  • 1 - пасмурно.

Подробнее о параметрах погоды и объекте fact читайте в официальной справке.

Передача данных в Яндекс Метрику

Последним шагом в Яндекс Тег Менеджере является создание тега для Яндекс Метрики. Как отмечалось ранее, обогащение данных Метрики позволяет более точно сегментировать пользователей с учетом погодных условий в их регионе. В долгосрочной перспективе это повышает эффективность таргетирования и оптимизации рекламных кампаний в Яндекс Директе. В связи с этим рекомендуется передавать погодные данные на уровне визита (метод params), поскольку вряд ли они меняются от события к событию.

Вернитесь в Яндекс Тег Менеджер, перейдите на вкладку Теги и создайте тег типа Пользовательский HTML. Добавьте в него нижеприведенный код (если все сделали так, как я показал выше):

, где вместо XXXXXX укажите собственный идентификатор Яндекс Метрики.

Тег с параметрами визита (погодные данные)

Задайте тегу название и сохраните его.

Проверка настроек

Поскольку мы передаем данные в Яндекс Метрику на уровне визита, то для проверки всех параметров целесообразнее использовать комбинированный подход - активировать режим предварительного просмотра Яндекс Тег Менеджера и панель отладки самой Метрики с помощью параметра _ym_debug=2.

Как только вы зайдете на сайт, отобразится всплывающее окно с запросом на разрешение доступа к данным о местоположении и на шкале событий появится weatherDone. Если вы настроили все корректно, то HTML-тег Яндекс Метрики будет активным.

Событие weatherDone и сработанный тег Яндекс Метрики

Открыв вкладку DataLayer, вы увидите какие значения переменные приняли в текущий момент времени:

Вкладка "DataLayer" с параметрами погоды

Вы также можете перейти на вкладку Переменные и убедиться, что все переменные уровня данных, которые вы создали, вернули конкретные значения:

Вкладка "Переменные"

И напоследок откройте панель отладки Метрики, вкладку Parameters:

Панель отладки Метрики - вкладка "Parameters"

Эти данные будут отображаться и в консоли разработчика на вкладке Console, включая логи:

Консоль разработчика - вкладка "Console"

Я живу в Москве. Но по IP определился как Подольск. На момент написания этой статьи Яндекс определил мою погоду как облачно с прояснениями (cloudly) и температуру -21 ℃ (по ощущениям -26 ℃). Что вполне похоже на правду.

Подтверждение температуры

Теперь эти данные отображаются в моих отчетах Яндекс Метрики. В частности, в отчете Параметры визитов:

Отчет "Параметры визитов" с данными о погоде

И в самой карточке пользователя на уровне визита:

Отчет "Посетители" с данными о погоде на уровне визита (для конкретного пользователя)

И пример сегментации на уровне визита (отчет по географии с температурой в этом регионе):

Пример сегментации с температурой

В завершение не забудьте опубликовать контейнер Яндекс Тег Менеджера.

Пример всплывающего окна в браузере, когда пользователь заходит на сайт:

Разрешить браузеру использовать данные о геолокации

Ради интереса вернитесь в интерфейс API Яндекс Погоды и посмотрите, какое количество запросов вы израсходовали во время этих настроек и тестов:

На тестовом тарифе вам доступно до 10 000 запросов в месяц

На тестовом тарифе вам доступно до 10 000 запросов в месяц.

Заключение

В этом руководстве мы с вами разобрали нетривиальную настройку продвинутого уровня, которая позволяет обогатить данные вашего счетчика Яндекс Метрики дополнительной информации с использованием API Яндекс Погоды. Благодаря этому у вас появляется возможность более гибко работать со своей аудиторией - сегментировать их по дополнительным параметрам, создавать списки, использовать аудитории в Яндекс Директе, персонализировать рекламу, контент и многое другое.

Учтите, что поскольку в коде используются сторонние API и открытые ключи в клиентском коде (ваш API ключ Яндекс Погоды) - это всегда компромисс между удобством разработки и безопасностью. Поскольку переменная YANDEX_API_KEY передается в открытом виде в JavaScript-коде, она доступна для обнаружения через исходный код страницы или инструменты разработчика любым пользователем. Злоумышленник может скопировать ваш ключ и использовать его в своих проектах. Яндекс предоставляет определенное количество бесплатных запросов в сутки. Если ваш ключ «украдут», лимиты исчерпаются мгновенно, и сервис на вашем основном сайте перестанет работать.

Единственным недостатком Яндекс Погоды остается стоимость тарифов. Сервис довольно дорогой, и не каждый бизнес может позволить себе подписку - особенно в случаях, когда трафик на сайте невысокий. К счастью, существуют альтернативные погодные сервисы, которые позволяют решать те же задачи. Некоторые из них предлагают бесплатные лимиты на количество API-запросов (отлично подходит для небольших проектов), а некоторые ориентированы на некоммерческое использование, но при этом имеют ограничения на набор доступных параметров.

Так, например, в статье о передаче данных о погоде в Google Analytics использовался сервис OpenWeatherMap. Кроме того, на GitHub можно найти множество репозиториев, предлагающих получение погодных данных через API. К таким решениям относится, например, Open-Meteo Weather API.

Если эта статья наберет хотя бы 100 реакций под постом в моем Telegram, то я опубликую продолжение с использованием бесплатных или более дешевых решений!

💡 Онлайн-курс по Яндекс Тег Менеджеру. Старт 2 апреля. Живой поток!
ПОДРОБНЕЕ