Обратная связь
Введите ваши данные, и я свяжусь с вами!
Какой у вас вопрос?

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c обработкой персональных данных

Как получить данные из Logs API Яндекс Метрики

Материал обновлен 03:01:2022

Для получения данных из Logs API Яндекс Метрики необходимо выполнить последовательно несколько запросов:

  1. Создать приложение;
  2. Проверить возможность запроса с необходимым набором параметров;
  3. Запросить формирование выгрузки;
  4. Проверить статус выгрузки;
  5. Загрузить полученный набор данных.

В общей сложности на все описанные действия у вас может потребоваться до получаса, если вы ранее ничего подобного не выполняли, ну а если есть опыт создания приложений и формирования запросов, то гораздо быстрее. Что вы сможете сделать с выгрузкой? Во первых, это будут «сырые» данные о действиях посетителей на вашем сайте, которые помогут вам глубже погрузиться в анализ поведения пользователей. Во вторых, выгрузку можно импортировать в ClickHouse, где работать с ней выполняя необходимые запросы.

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

Создания приложения в Яндексе

Создания приложения в Яндексе

Для получения данных Logs API Яндекс Метрики описанным ниже методом нужно указать Веб-сервисы. Далее в нижней части страницы указываем права доступа для приложения:

Права доступа приложения

Права доступа приложения

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

Реквизиты созданного приложения

Реквизиты созданного приложения

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

Загрузка Postman

Загрузка Postman

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

Запуск Postman

Запуск Postman

Выберите вариант обозначенный на скриншоте, на следующем окне нажмите Cancel. Теперь можно отправлять запросы к Logs API Яндекс Метрики. Какие нам понадобятся (ранее я уже упоминал их):

  1. Проверка возможность создания запроса;
  2. Запрос лога на создание для выгрузки;
  3. Получение данные о доступных логах;
  4. Загрузка данных.

Но перед этим мы должны получить токен для использования в запросах, для этого используется ссылка вида:

https://oauth.yandex.ru/authorize?response_type=token&client_id=abc

в которой abc нужно заменить на id приложения, который был выдан нам ранее (при создании приложения). Подставляете его в этот URL адрес и выполняете переход по ссылке в браузере, на предложение отвечаете Разрешить:

Получение токена Яндекса для Logs API

Получение токена Яндекса для Logs API

на вновь открывшейся странице отобразится необходимое значение токена. Внимание! На скриншоте выше вместо prometriki.demo будет название вашего аккаунта на Яндексе, а также другое название приложения (которое вы указали при его создании).

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

Проверка возможность создания запроса

Проверка возможность создания запроса

Я использовал тип запроса No Auth, метод GET, в строке URL указал
https://api-metrika.yandex.ru/management/v1/counter/НОМЕР_СЧЕТЧИКА/logrequests/evaluate
а также добавил необходимые параметры:

  • oauth_token — авторизационный токен Яндекса;
  • source — источник данных: визиты или просмотры;
  • date1 — начало выборки;
  • date2 — окончание выборки;
  • fields — данные, которые мне необходимы, я указал все, что можно.

После необходимых настроек, нажимаем на Send и отображается результат:

Результат первого запроса

Результат первого запроса

Все отлично! Мы проверили допустимость нашего набора параметров для выгрузки из Logs API Яндекс Метрики. Теперь я отправляю запрос на создание выгрузки или «Запрос лога на создание для выгрузки»:

Создание запроса лога для выгрузки

Создание запроса лога для выгрузки

Нажмите на иконку с тремя точками справа от ранее отправленного запроса в Postman и выберите Duplicate… . Делаем мы это для того, чтобы не перенастраивать весь запрос, т.к. его необходимо лишь немного подправить, а именно из URL исключить фрагмент /evaluate , после чего URL должен быть вида:

https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequests?ПАРАМЕТРЫ

Отправляем второй запрос для того, чтобы Logs API Яндекс Метрики сформировал нам данные загрузки. Важный момент! Используем метод POST:

Отправка второго запроса

Отправка второго запроса

В ответ получаем информацию, что наш запрос создан:

Запрос к Logs API Яндекс Метрики создан

Запрос к Logs API Яндекс Метрики создан

Возможные значения параметра status есть в документации по Logs API Яндекс Метрики:

Возможные значения параметра status

Возможные значения параметра status

Опять дублируем ранее созданную вкладку (запрос №2), нажимаем на кнопку Params, отключаем все кроме oauth_token и изменяем метод на GET:

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

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

Этим запросом мы проверяем, что нам доступно для загрузки из Logs API Яндекс Метрики. Формирование данных занимает некоторое время, так, что не нужно нагружать сервер Яндекс Метрики своими запросами — наберитесь терпения. После того как будет создана выгрузка по результатам обработки запроса к Logs API Яндекс Метрики, вы получите сообщение после отправки запроса:

Logs API Яндекс Метрики - запрос обработан

Logs API Яндекс Метрики — запрос обработан

Теперь можно запросить данные и скачать их (например, для последующей загрузки в ClickHouse), сделать это можно с помощью запроса:

https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequest/request_id/part/0/download

В нем необходимо указать выделенные жирным шрифтом параметры. После part указывается часть (фрагмент) выгрузки, ее номер можно получить из блока parts, он выше на скриншоте. А значение для request_id берется из значения одноименного параметра в ответе сервера:

Идентификатор запроса

Идентификатор запроса

Полученные значения подставляем в запрос, указываем параметр oauth_token и отправляем запрос, только вместо Send выберите Send and Download, т.к. вы получите файл для загрузки:

Запрос на загрузку лога

Запрос на загрузку лога

Сейчас придется немного подождать, пока данные будут сформированы и загружены, в итоге вы получите файл с необходимыми данными. У меня при выполнении последнего запроса Postman сохранил полученные данные в файл с расширением json, но на самом деле данные будут получены в формате tsv.

Запросы №1, 2 и 4 можно выполнить просто сформировав необходимый URL адрес и перейдя по нему в браузере, но лучше для этого использовать или специальное ПО типа Postman, или другой инструмент, который может отправлять отправлять запросы методом POST и GET.

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

  1. Отправляем запрос для проверки возможности создания набора данных с необходимыми параметрами:
    https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequests/evaluate?ПАРАМЕТРЫ
  2. Отправляем запрос для формирования набора данных:
    https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequests?ПАРАМЕТРЫ
  3. Проверяем статус набора данных:
    https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequests?oauth_token=ВАШ_ТОКЕН
  4. Загружаем набор данных:
    https://api-metrika.yandex.ru/management/v1/counter/ВАШ_СЧЕТЧИК/logrequest/request_id/part/0/download?oauth_token=ВАШ_ТОКЕН

В качестве параметров передаются:

  • oauth_token — авторизационный токен Яндекса;
  • source — источник данных: визиты или просмотры;
  • date1 — начало выборки (дата);
  • date2 — окончание выборки (дата);
  • fields — данные, которые необходимо получить.

При загрузке набора данных из Logs API Яндекс Метрики:

  • request_id — идентификатор набора данных (можно узнать выполнив запрос №3);
  • номер части (0 в примере запроса №4) — идентификатор части набора данных (можно узнать выполнив запрос №3).
Рассылка бесплатных кейсов, инструкций, обзоров
Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности
Ежедневные новости из мира аналитики в Telegram канале
Настройки, интеграции, примеры реальных задач, пошаговые инструкции
материалы ПО ТЕМЕ:
ОБСУЖДЕНИЕ:
Анатолий
09.07.2018 at 12:04

Спасибо, очень хорошая статья.

В Postman сохрани коллекцию и расшарь для импорта, если есть возможность?
Сохраню себе тоже

    Иван
    11.07.2018 at 21:46

    Анатолий, спасибо! Я все почистил в нем, возможно немного позже сделаю

SergeyLossev
01.11.2018 at 14:18

Данные из Logs API в КХ ещё можно тянуть питоном.
Пример скрипта в документации к API — https://tech.yandex.ru/metrika/doc/api2/logs/fields/clickhouse-integration-docpage/

    Иван
    01.11.2018 at 21:15

    Сергей, спасибо за дополнение, но цель была получить данные без языков программирования. Если владеть Python, то возможности становятся очень большими

Михаил
16.04.2019 at 17:51

После получения токена и первого запроса в postman выдает ошибку:

«code»: 401,
«message»: «Неавторизованный пользователь»

В Яндексе что то изменилось и теперь токен как то по другому получать надо?

Александр
23.09.2019 at 12:54

Не совсем по теме, но все же. Скажите, а есть инструкции по установке Clickhouse на локальную машину?

    Иван
    21.10.2019 at 19:14

    Александр, я не решал такую задачу. Вероятно Вам лучше обратиться на какой-нибудь профильный ресурс по Clickhous-у

Оставить комментарий
Для добавления комментария — заполните форму!

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c обработкой персональных данных