Становясь падаваном Logs API Яндекс.Метрики
API Яндекс.Метрики предоставляет мощный функционал для построения гибкой отчетности и автоматизации. Достаточно посмотреть список группировок и метрик в документации, чтобы придумать множество вариантов использования. Кто-то делает очень крутые дэшборды, кто-то строит системы аналитики контекстной рекламы, оптимизаторы ставок и прочие занятные вещи, например, коррелятор промежуточных целей.
Но Метрика не остановилась в своем развитии на обычной API, которая позволяет вытащить данные только по заданному списку группировок, ограниченному 10 группировками в запросе. Разработчики Яндекса предоставили возможность получать «сырые» данные из хранилища данных Яндекс.Метрики — Logs API.
Агрегированные, или обобщённые данные, которые вы видите в интерфейсе Метрики или выгружаете через АПИ отчетов, рассчитываются для определённой группы визитов. Например, метрика «время на сайте» вычисляется для всех переходов из какого-либо источника трафика, всех визитов от посетителей мужского пола или всех визитов с планшетов.
А основой для этих расчётов служат сырые данные — записи об отдельных визитах или просмотрах. Таблица с этими записями и передаётся через Logs API, при этом каждая запись дополнена полезными сведениями из Метрики. Это подробные данные по Директу и по электронной коммерции, страна и город посетителя, а ещё — различная техническая информация о визите: например, браузер и модель мобильного телефона.
Если вы новичок в работе с АПИ Метрики, то я рекомендую сначала ознакомиться со статьей «Становясь гуру API Яндекс.Метрики». Она даст понимание того как работает API и как выгружать данные из Метрики с помощью API отчетов. Информация в ней нам ещё будет полезна, чтобы получить авторизационный токен.
В этой статье я хочу поделиться своим рецептом получения данных из Logs API Яндекс.Метрики, а также о нескольких приемах обработки этих данных.
Приступим!
Первое: Получить авторизационный токен
Процедура получения токена подробно описывается в пункте 4 предыдущей статьи.
Для доступа к Logs API понадобится тот же токен, что и для доступа к API отчетов. Без авторизационного токена у нас не получится сделать запросы, это своего рода ключ доступа к данным вашего счетчика.
Внимание: в дальнейшем в примерах я буду использовать недействительный токен, поэтому чтобы примеры работали вам нужно использовать собственноручно полученный токен или можно попробовать токен, указанный в качестве тестового в документации: 05dd3dd84ff948fdae2bc4fb91f13e22bb1f289ceef0037
Второе: Запрос на создание лога
После того как мы получили авторизационный токен, например, AQAAAAAHrQEBAADn-FX3DPJUn04fkptrzvFv8nE, мы должны сформировать запрос к Logs API, который создает лог. Лог формируется на стороне Яндекс.Метрики в течении определенного времени, которое зависит от того сколько параметров визита или просмотра вы хотите получить, а также от диапазона времени, за который нужен лог.
Метод «Создание лога запросов» создает запрос на подготовку отчета, в котором будут нужные нам данные.
Это POST-запрос, следующей структуры:
POST https://api-metrika.yandex.ru/management/v1/counter/{counterId}/logrequests ?
date1=<string>
& date2=<string>
& fields=<string>
& source=<log_request_source>Параметры запроса на создание лога
Рассмотрим все параметры, которые нужно передать в запросе:
{counterId}
date1 — дата начала отчетного периода в формате YYYY-MM-DD (например, 2015-08-31).
date2 — дата конца отчетного периода в формате YYYY-MM-DD (не может быть текущим днем)
fields — список полей, которые надо получить. Поля разделяются запятыми.
Давайте параметр fields подробнее.
Поля — это те параметры визитов или просмотров, которые Яндекс выгрузит из своей базы данных и предоставит нам в виде файла в формате CSV. Существует две категории полей, которые можно использовать в Logs API:
- Поля визитов
- Поля просмотров
Предположим, мы хотим получить детально каждый визит с указанием:
- даты визита;
- идентификатора пользователя, совершившего визит;
- количеством просмотров страниц за визит;
- страницы входа, с которой начался этот визит.

Смотрим таблицу полей для визитов и определяем, что нам нужны следующие поля:
- ym:s:visitID — идентификатор визита;
- ym:s:date — дата визита;
- ym:s:clientID — идентификатор пользователя на сайте;
- ym:s:pageViews — глубина просмотра;
- ym:s:ym:s:startURL — страница входа.
Аналогично с просмотрами, все параметры просмотров находятся в табличке и нужно просто понимать какие параметры взять для выполнения вашей задачи.
Следующий параметр source, который задает источник логов. Тут всё просто: если вы хотите получить данные по визитам, то нужно указать visits; если нужны данные по просмотрам — указываем hits.
Последний параметр oauth_token — это авторизационный токен, который мы получили в предыдущем пункте.
Сформируем тестовый запрос:
https://api-metrika.yandex.ru/management/v1/counter/30177909/logrequests?date1=2017-03-01&date2=2017-03-06&fields=ym:s:visitID,ym:s:date,ym:s:clientID,ym:s:pageViews,ym:s:startURL&source=visits&oauth_token=AQAAAAAHrQEBAADn-FX3DPJUn04fkptrzvFv8nE
Дальше нужно сделать POST-запрос.
Как сделать POST-запрос к API Яндекс.Метрики?
1 — Устанавливаем и запускаем расширение Postman:
2 — Выбираем тип HTTP-запроса «POST», а в поле ввода запроса вставляем сформированный выше запрос:
3 — Нажимаем синюю кнопку «Send»
4 — Получаем ответ от API:
5 — В ответе нас интересует идентификатор request_id. Это идентификатор, созданного запроса на получение данных из Logs API:
Этот идентификатор копируем, он понадобится нам на следующем шаге.
Третье: Получение информации о запросе логов
После того как мы отправили в АПИ заявку на формирование лога, нужно получить статус лога: узнать готов ли он для скачивания. Для этой цели существует метод «Информация о запросе логов».
Вызывается этот метод с помощью следующего GET-запроса:
GET https://api-metrika.yandex.ru/management/v1/counter/{counterId}/logrequest/{requestId}Вместо counterId подставляем идентификатор счетчика, для которого мы делали запрос на создание, а вместо requestId ставим идентификатор request_id, полученный в ответе на предыдущий запрос.
После этого через знак «?» указываем параметр oauth_token.
Таким образом, наша сформированная ссылка для получения информации о запросе лога выглядит так:
https://api-metrika.yandex.ru/management/v1/counter/30177909/logrequest/45264?oauth_token=AQAAAAAHrQEBAADn-FX3DPJUn04fkptrzvFv8nE
По сути, это обычный GET-запрос, поэтому выполнить его можно и в обычном браузере, но удобнее будет в Postman, потому что в него встроен pretty-вывод JSON и смотреть на результат будет приятнее.
Вставляем запрос в Postman, выбираем тип HTTP-запроса «GET» и нажимаем «Send»:
В ответе нас интересует параметр status. Этот параметр может принимать несколько значений, которые описаны тут. В нашем случае он принимает значение «processed», которое говорит о том, что запрос лога обработан и лог готов к скачиванию. Это то, что нужно!
Обратите внимание на параметр parts. Может так получится, что полученный лог окажется слишком большим и будет разбит на несколько частей, которые придется скачивать по отдельности.
Перейдем к скачиванию лога.
Четвертое: Загрузка лога
Чтобы скачать подготовленный лог нам понадобится метод «Загрузка части подготовленных логов обработанного запроса».
Этот метод, также как и предыдущий, вызывается с помощью GET-запроса:
GET https://api-metrika.yandex.ru/management/v1/counter/{counterId}/logrequest/{requestId}/part/{partNumber}/downloadАналогично тому как мы делали это в предыдущем запросе, вместо counterId подставляем идентификатор счетчика, вместо requestId указываем уже известный нам идентификатор request_id, а на место partNumber ставим порядковый номер той части лога, которую мы хотим скачать. В нашем примере всего одна часть, поэтому ставим 0. После этого через знак «?» указываем параметр oauth_token.
Сформированная ссылка для скачивания лога будет такой:
https://api-metrika.yandex.ru/management/v1/counter/30177909/logrequest/45264/part/0/download?oauth_token=AQAAAAAHrQEBAADn-FX3DPJUn04fkptrzvFv8nE
Этот GET-запрос можно выполнять как в браузере, так и через Postman, но в случае с Postman’ом вместо «Send» надо выбрать вариант «Send and Download»:
А затем сохранить полученный файл в формате CSV:
Всё! Мы получили лог и сохранили его себе на диск, поэтому можно избавить Яндекс от хранения лишней информации и очистить лог с помощью метода «Очистка подготовленных для загрузки логов обработанного запроса».
Делается это с помощью уже привычного нам POST-запроса. Расписывать не буду, надеюсь разберетесь сами 🙂
Заключительное: Обработка лога
Честно говоря, обработка логов с помощью Excel — это то ещё извращение, я бы рекомендовал использовать для таких задач что-то более подходящее, например, Pandas или R. Но Excel — базовый инструмент анализа данных, поэтому рассмотрю на его примере.
Открываем csv-файл в Excel. Для этого создаем новую книгу, открываем вкладку «Данные» и выбираем «Из текста»:
Выбираем файл и указываем в мастере текстов, что наш файл содержит разделители и записан в кодировке UTF-8:
На следующем шаге выбираем в качестве символа-разделителя знак табуляции, а затем устанавливаем форматы колонок, лучше всего для идентификаторов задать текстовый формат колонок.
Итак, мы загрузили наши данные в таблицу:
Дальше давайте решим две простые задачи:
- Определим пользователя с наибольшим числом визитов, т. е. того кто чаще всего посещал наш сайт;
- Определим пользователя с наибольшим суммарным числом просмотров страниц, т.
е. того кто больше всех лазил по нашему сайту.
Построим простейшую сводную таблицу:
Отсортировав сводную таблицу по второму столбцу мы увидим, что больше всего визитов у пользователя 1487091524934294616, а отсортировав по третьему столбцу обнаружим пользователя с наибольшим числом просмотров — это пользователь 1488553373564844012.
Теперь мы можем применить фильтр в таблице с данными, чтобы понять с каких страниц эти пользователи чаще всего попадали на сайт и как часто заходили.
Видно, что первый пользователь заходил на протяжении 3 дней с одной и той же страницы, скорее всего, он добавил её в закладки и это были прямые переходы, чтобы подтвердить эту гипотезу нужно бы сделать ещё одну выгрузку из Logs API с указанием параметра ym:s:referer (реферер) или ym:s:lastTrafficSource (источник трафика):
Второй пользователь вел себя по-другому.
Он совершил в ходе одного из визитов 16 просмотров, благодаря чему и стал рекордсменом по числу просмотров. Для этого пользователя было бы интересно посмотреть какие страницы он просматривал. Это можно сделать, добавив в параметры выгрузки параметр ym:s:watchIDs (идентификаторы просмотров, которые были в визите):
Естественно, применение Logs API не ограничено этими простенькими ситуациями, можно делать намного более сложные вещи, вроде когортного анализа, сложных моделей аттрибуции, анализа посещаемости страниц (например, определить на какую страницу чаще всего переходят после просмотра определенной страницы, или даже построить вероятностную модель переходов). Но все эти задачи в Excel не так просто решаются. Здесь на помощь приходят более мощные инструменты анализа данных: Python и Pandas, R, SQL. Об этом как-нибудь в другой раз 🙂
Да и получать данные из Logs API с помощью запросов в Postman’е — это не совсем удобный способ. Если вам захочется делать эти выгрузки постоянно, всё складировать у себя и периодически анализировать — лучший вариант складывать данные в БД ClickHouse.
Успехов!
Вступайте в группу на Facebook и подписывайтесь на мой канал в Telegram, там публикуются интересные статьи про анализ данных и не только.
Архив примеров API Яндекс.Карт версии 1.1
Внимание: версия API 1.1 является устаревшей.
Ознакомьтесь с актуальной информацией об API Яндекс.Карт.
Работа с картой
Простой вызов карты
Задание типа карты
Стандартное сообщение об ошибке при неудачной загрузке API
Пользовательская обработка неудачной загрузки API
Загрузка карты по требованию
Удаление карты с веб-страницы
Несколько карт на одной странице
Инициализация карты в скрытом диве
Инициализация карты в скрытом диве и ее скрытие
Плавное перемещение по карте
Пользовательские координатные системы.
Карта дна Черного моря
Пользовательские координатные системы. Карта Млечного пути
Пользовательские координатные системы. Просмотр фотографий
Пользовательские координатные системы. Просмотр чертежей
Нанесение на карту статичного слоя
Синхронизация двух карт
Работа с объектами-оверлеями
Добавление меток на карту
Перетаскиваемые метки
Содержимое значка метки
Использование различных значков для меток
Добавление на карту коллекций меток
Группировка меток
Построение меню списка групп
Работа с группой меток
Балун
Показ балуна для метки
Создание области показа для одного объекта
Создание области показа для группы объектов
Всплывающая подсказка
Всплывающая подсказка у метки
Режим редактирования
Круг
Многоугольник
Режим редактирования для многоугольника
Рисование ломаной
Кодирование координат точек ломаной
Режим редактирования ломаной
Завершение режима редактирования ломаной
Создание ломаной из закодированных вершин
Задание стиля для объектов
Создание собственного значка для метки
Простой макет для метки
Задание стиля для меток одной группы
Простой макет для балуна
Задание стиля для содержимого балуна
Стиль для содержимого всплывающей подсказки
Стиль для многоугольника
Задание стиля для ломаной
Ломаная линия со стрелочками
Наследование стилей
Создание пользовательского оверлея
Использование шаблонов
Пример использования шаблона
Простой шаблон для значка метки
Задание собственного значка метки с использованием шаблона
Маршрутизатор
Построение маршрута
Отображение начальной и конечной точек маршрута
Работа с отрезками пути
Редактирование маршрута
Выбор маршрута с помощью меню
Обработка ответа маршрутизатора
Построение маршрута между двумя точками, отмеченными на карте
Построение маршрута с использованием анимации
Элемены управления
Добавление элементов управления на карту
Создание пользовательского элемента управления
Позиционирование элементов управления
Удаление элемента управления
Управление объектом TypeControl
Создание собственных подсказок для элемента масштабирования
Добавление кнопки на панель инструментов
Добавление радиокнопки на панель инструментов
Добавление кнопки-флажка на панель инструментов
Элементы управления.
Автоперемещение карты у границ
События
Прослушивание событий
Передача аргументов в обработчик события
Задание контекста для обработчика события
Смена значка метки при наведении
Создание ссылки на фрагмент карты
Автоматическое сохранение состояния карты в URL
Удаление обработчиков событий
Геокодирование
Определение местоположения пользователя
Геокодирование
Множественное геокодирование
Обратное геокодирование
Определение адреса по щелчку на карте
Использование параметра prefLang при геокодировании
Инициализация карты результатами геокодирования
Активные области
Простой пример активной области-оверлея
Пример использования слоя активных областей
Работа с тайлами
Создание своего тайла
Определение тайловых координат
Использование диспетчера объектов
Модуль «Метро»
Использование модуля «Метро»
Модуль «PlainStyle»
Модуль «PlainStyle» для значка метки
Модуль «PlainStyle» для балуна
Регионы
Добавление на карту выбранных регионов
Задание стиля для коллекции регионов
Задание параметров регионам
Загрузка регионов
Пробки
Подключение слоя пробок
Подключение слоя дорожных событий
GPX
Визуализация GPX-трека
KML
Визуализация KML
YMapsML
Визуализация YMapsML
Другие примеры
Пример с главной страницы
YandexBot API
Подтверждение использования IP-адреса YandexBot
ПоискОбнаружены последние пользовательские агенты YandexBot
Мобильный пользовательский агент YandexBot
Mozilla/5.
0 (iPhone; ЦП iPhone OS 15_4_1, например Mac OS X) AppleWebKit/605.1.15 (KHTML, как Gecko) Версия/15.4 Mobile/15E148 Safari/604.1 (совместимо; YandexMobileBot/3.0 ; +http://yandex.com/bots)
Пользовательский агент YandexBot для настольных ПК
Mozilla/5.0 (совместим; ЯндексБот/3.0 ; +http://yandex.com/bots)
Документация по API ЯндексБота
API ЯндексБота позволяет легко проверить, официально ли используется IP-адрес ЯндексБотом для обхода сети, включая ваш сайт.
API YandexBot — это REST API, доступ к которому осуществляется через HTTPS с использованием метода GET по заранее определенному URL-адресу. Он возвращает либо JSON, либо простой текстовый ответ.
Преимущества использования YandexBot API:
- Запросы к YandexBot API бесплатны и анонимны.
- API ЯндексБота работает с приложениями и языками сценариев, т.е. см. ниже реализации Google Spreadsheets и Python.
- API YandexBot содержит исторические записи, а это означает, что IP-адреса, которые, возможно, когда-то использовались, но в настоящее время не разрешаются, все еще могут быть идентифицированы при анализе лог-файла по историческим логам.

- Когда YandexBot сканирует Интернет, база данных API YandexBot постоянно и автоматически обновляется последними IP-адресами и пользовательскими агентами.
- Вместо того, чтобы выполнять два отдельных поиска (прямой и обратный) с помощью команды «host» в командной строке локально, этот API предоставляет единый метод поиска, к которому можно получить доступ из любого места.
- API ЯндексБота содержит одну из самых больших бесплатных и общедоступных коллекций IP-адресов для ЯндексБота.
Этот API YandexBot написан и предоставлен бывшим инженером Google и техническим экспертом по поисковой оптимизации Фили.
Аутентификация
Этот YandexBot API является бесплатным и доступен без учетных данных. Если у вас есть какие-либо вопросы об использовании API YandexBot в более широком масштабе или вы хотите обсудить способы внутреннего использования этой базы данных, свяжитесь с Fili.
> Ограничение скорости
В настоящее время API YandexBot имеет ограничение скорости до 1000 запросов в час для каждого IP-адреса.
Если вам нужно больше, свяжитесь с Фили.
> СОВЕТ
Оптимизируйте свои запросы к API ЯндексБота и избегайте превышения лимита скорости, локально кэшируя 200 статусных ответов от API ЯндексБота не менее чем на 6 часов перед повторной отправкой дубликата запроса в API ЯндексБота.
Краткое руководство
Вы можете запросить конечную точку API с помощью запроса GET и заменить IPADDRESS IP-адресом, который вы хотите запросить.
https://yandexbot.seoapi.com/v1/validate/?ip=IP-АДРЕС
Определения конечной точки
По умолчанию API вернет ответ JSON с:
- телом, содержащим «valid»: «true», если запрошенный IP-адрес найден в базе данных,
- или телом, содержащим «valid» : «false», если запрошенный IP-адрес не найден в базе данных.
В качестве альтернативы также можно запросить только BOOLEAN в виде обычного текста (полезно в некоторых ситуациях, например, в таблицах Google — см. ниже).
Параметры URL, которые принимаются API Yandexbot:
| Параметр URL | Значение | ||
|---|---|---|---|
| IP | ( String ) IP -адрес, IPV4 или IPS ( String ) IP -адрес, IPV4 или IP -адрес 40084 ( String ), IPV4 или IP -адрес 1 | ( String ), IPV4 или IPV4 или IP -адрес | ( String ), IPV4 или IP. 70084 ( String ). целое число ) по умолчанию 0 и возвращает ответ JSON, 1 возвращает простой текстовый ответ |
Фрагменты кода
Вот несколько примеров того, как запрашивать API YandexBot:
Командная строка (curl) Пример 1
curl -i https://yandexbot.seoapi.com/v1/validate/?ip=2a02:6b8:c1d:6301:0:492c:1eda:0
Также можно использовать этот API в таблицах Google, добавив &compact=1 к URL-адресу API.
В следующем примере содержимое ячейки A1 содержит IP-адрес для проверки и заменяет в формуле =IMPORTDATA __IPADDRESS__. Обязательно замените идентификатор ячейки при использовании этого в таблицах Google.
Таблицы Google
=ИМПОРТДАННЫХ(ЗАМЕНИТЬ("https://yandexbot.seoapi.com/v1/validate/?ip=__IPADDRESS__&compact=1","__IPADDRESS__",A1))
Также можно использовать этот API в вашем коде с Python или подобными другими языками.
Python 3
запросы на импорт г = запросы.получить( 'https://yandexbot.seoapi.com/v1/validate/?ip=2a02:6b8:c1d:6301:0:492c:1eda:0' ).json() print(r.get('действительный', нет))
Пример ответов
Когда параметр URL compact отсутствует или имеет значение 0 (ноль) API возвращает ответ JSON с запрошенным IP-адресом, отметкой времени запроса и логическим значением, если IP-адрес подтверждается.
Пример 1: ответ JSON
{
"ip": "2a02:6b8:c1d:6301:0:492c:1eda:0",
"отметка времени": 1615471876.25665,
"действительный": правда
}
Пример 2: ответ JSON
{
"ip": "127.0.0.1",
"отметка времени": 1615471876.25665,
"действительно": ложь
}
Когда параметр URL compact присутствует и имеет значение 1 (один), API возвращает простой текстовый ответ с логическим значением, если IP-адрес подтверждается.
Пример 3: простой текстовый (компактный) ответ
Пример 4: обычный текстовый (компактный) ответ
Последние добавленные IP-адреса 213.
58Отказ от ответственности, данные в основном автоматически собираются из нескольких доменов на веб-сайтах
3 9000 под контролем экс-инженера Google Фили.
API-интерфейсы SEO на этом веб-сайте постоянно развиваются, и со временем будут добавляться улучшения.
Любые данные и/или запросы, отправленные на этот веб-сайт или его API, используются только для проверки того, связан ли IP-адрес с известным поисковым ботом. Если нет, IP-адрес (или любые другие представленные данные) полностью игнорируются и игнорируются. Только после отдельного подтверждения того, что IP-адрес является IP-адресом поискового бота, этот IP-адрес анонимно сохраняется для будущих запросов.
Возможны ошибки. Несмотря на все усилия по поддержанию кодовой базы и качества данных, никаких гарантий не может быть и не будет. Данные могут быть неполными и/или могут возникать ошибки. Это личный сайт и проект для развлечения. Используйте на свой риск.
Яндекс Переводчик — Классические документы
Классические документы
Поиск…
Этому компоненту требуется доступ в Интернет, так как он будет запрашивать переводы в сервисе Яндекс Переводчик.
См. http://api.yandex.com/translate/ для получения дополнительной информации
The Yandex Translate component is used in the sample app ThunkableChat: Chat with Instant Translation
Translate spoken text to Russian
Functionality
Description | |
Request Translation ( язык для перевода, текст для перевода) | Запрашивает перевод в сервис Яндекс Переводчик с указанием текста для перевода и языка для перевода текста. Язык должен быть указан в двухзначном коде, например. ‘en’ для английского, а список поддерживаемых языков приведен ниже. Яндекс Переводчик попытается определить исходный язык. Вы также можете указать язык для перевода, т. е. «es-ru» укажет испанский на русский |
Got Translation (responseCode, translation) | Событие, срабатывающее, когда сервис Яндекс Переводчик возвращает переведенный текст. |

70084 ( String ). целое число ) по умолчанию 0 и возвращает ответ JSON, 1 возвращает простой текстовый ответ
получить(
'https://yandexbot.seoapi.com/v1/validate/?ip=2a02:6b8:c1d:6301:0:492c:1eda:0'
).json()
print(r.get('действительный', нет))
