Яндекс Метрика API: Счётчик Просмотров
В данном руководстве рассмотрим работу с API Метрики от Яндекса. Создадим счётчик просмотров страниц (статей).
Далее порядок действий следующий:
1. Получаем OAuth-токен
Чтобы получить OAuth-токен перейдите на страницу создания приложения
Далее в секции Платформы выбираете чекбокс Веб-сервисы и нажмите на ссылку Подставить URL для разработки
Затем в секции Доступы* нажимаем на Яндекс.Метрика и выбираем чекбокс Получение статистики, чтение параметров своих и доверенных счётчиков
Нажимаем Создать приложение
На странице увидите следующие данные:
Теперь необходимо в адресной строке ввести следующий URL и вставить ваш ID
После отправки данного запроса, нужно разрешить доступ приложению к вашим данным
На странице появится ваш OAuth-токен
2. Формирование запроса и сохранение полученных данных
Нам необходимо сформировать запрос для получения данных от Яндекс.Метрики и сохранить пришедшие данные (JSON) на сервере.
Создадим файл metric-api.php
Обратите внимание на слова, выделенные красным:
Получение данных с помощью cURL php
Отлично! Мы создали php-файл, который будет получать и сохранять данные API Метрики на нашем сервере.
3. Настройка планировщика
Теперь нам необходимо настроить CRON (планировщик), чтобы наш файл metric-api.php отрабатывал (выполнялся) спустя определённое время, например, каждый час. Т.е. каждый час будет выполняться запрос на получение данных Яндекс.Метрики и обновлять файл, вносить свежие данные в metrics.json
В панели управления хостингом необходимо перейти во вкладку Планировщик
Ввести первую или вторую команду и выбрать периодичность исполнения файла
4. Создание счётчика просмотров страницы
Создадим счётчик просмотров страницы с помощью JavaScript. Как вы помните, мы получаем данные по:
Используя регулярные выражения, будем соотносить адрес текущей страницы и данные Яндекс метрики. При совпадении url текущей страницы и url метрики будем выводить количество просмотров этой страницы.
Данный код выполняется с задержкой setTimeout в одну секунду, чтобы не замедлять скорость загрузки страницы. Можете изменить данное значение.
Используя Fetch API
Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.
Datalytics
To-do: Надо что-то сделать с пафосным названием статьи
Если вас интересует использование Logs API Яндекс.Метрики, то рекомендую сначала ознакомиться с текущей статьей, а затем прочитать статью «Становясь падаваном Logs API Яндекс.Метрики».
1. Лирическое отступление
Давно вынашивал идею написать что-то основательное про API Метрики. Взяться за дело меня вдохновила эта статья на хабре, посвященная выгрузке данных с помощью API Яндекс.Метрики. Но в ней, на мой взгляд, все сложновато, зачем создавать инстансы в Amazon, чтобы писать Python-скрипты? Достаточно поставить IPython и будет интерактивное счастье прямо в браузере, с блэкджеком и скаттер-плотами (для тех кто понимает о чем я). Но о том как использовать API Метрики с помощью IPython я напишу когда-нибудь потом, а в этой статье я хотел бы рассказать о том как научиться работать с API и получать данные Метрики в формате CSV с помощью одного запроса через браузер. Один раз скопировать запрос и никакой интерфейс Метрики больше не нужен.
Но для начала надо научиться эту ссылку формировать.
С функционалом API Яндекс.Метрики я знаком достаточно давно — с момента выхода второй версии API, которая состоялась одновременно с выходом Метрики 2.0. До этого времени работал только с Google Analytics, так как Яндекс.Метрика в принципе не устраивала своим скудным на тот момент функционалом: я осознавал систему как счетчик веб-статистики, но проделать серьезную аналитическую работу в ней было сложно, разве что с помощью «Конструктора отчетов». Что я подразумеваю под «серьезной» аналитикой? Прежде всего, в моем понимании это построение отчетов с множеством параметров и показателей, а также возможность сегментировать данные по различным критериям. Гигантская проблема заключалась в том, что методы «Констуктора отчетов» не были доступны в первой версии API Метрики, а значит чтобы автоматизировать сбор нужных данных приходилось парсить веб-страницы Метрики, что, мягко говоря, не удобно. Выход нового API стал для компании, в которой я работаю, мощным толчком перейти с использования Google Analytics на Яндекс.Метрику в качестве основной системы веб-аналитики. Причин тут много:
Миграция с API GA на API Метрики оказалась весьма безболезненной, во многом благодаря тому, что разработчики обеспечили совместимость запросов к Google Analytics Core Reporting API, сделав отдельное совеместимое API. С Core Reporting я был «на ты», поэтому начать пользоваться совместимым API было проще простого.
Если кому интересно про работу с Google Analytics Core Reporting API, то можете ознакомиться с презентацией моего доклада на iMetrics. Чтобы окончательно добить эту тему, по мотивам доклада написал две статьи: первая и вторая. С тех пор интерфейс GA Query Explorer несколько изменился, но изменения больше косметические. Вообще, благодаря Query Explorer работать с API Google Analytics легко. Такого инструмента мне не хватает в Яндекс.Метрике.
Позже оказалось, что совместимое API не содержит всех доступных в Метрике параметров, к тому же в нем периодически попадались неприятные баги, поэтому было решено переходить на использование нативного API Яндекс.Метрики 2.0.
2. Группировки и метрики
Яндекс.Метрика (и её API) оперирует двумя основными сущностями: Dimensions (группировки) и Metrics (метрики). Эта терминология пришла из технологии обработки данных OLAP, она также встречается и в Google Analytics. Благодаря этому, API GA и API Метрики 2.0 очень похожи, и это существенный плюс, потому что начать работать с нативным API Метрики было очень легко, имея опыт работы с API GA.
Группировки/Dimensions (мне их привычнее называть «измерениями», но буду придерживаться терминологии Метрики) — это какой-либо атрибут визита или хита. Как ясно из названия, группировки позволяют группировать данные по определенным признакам.
Примеры группировок: Источник трафик, Город, Браузер, Страница входа.
Группировки — это все те параметры, которые можно найти в одноименном разделе при построении отчета в интерфейсе Метрики:
Метрики/Metrics — это числовые величины, которые связаны с визитом или хитом.
Примеры метрик: количество визитов, показатель отказов, среднее время на сайте.
В интерфейсе метрики представлены в правой части табличных отчетов и их также список также можно настраивать:
3. Пример
Метрики и группировки взаимосвязаны. Чтобы понять эту взаимосвязь можно рассмотреть пример посетителя, совершающего посещение сайта.
Пускай, это единственное посещение за всю историю сайта. Атрибуты посетителя, например, его город, браузер, источник трафик, пол, возвраст, все что удалось определить Яндекс.Метрике — это группировки. Яндекс.Метрика определила, что пользователь: пришел из Москвы, из поисковой системы Яндекс.
В ходе посещения посетитель просматривает 5 страниц в течение 4 минут 40 секунд, тогда:
Общая статистика — это отчет, в котором отсутствуют группировки. Создав отчет с группировкой «Город» и метриками «Визиты» и «Просмотры» мы получим вот такой отчет:
Добавим группировку «Источник трафика» и отчет станет выглядеть вот так:
А теперь предположим, что пришел второй посетитель, тоже через ПС Яндекс, но из Петербурга. Он просмотрел за свой визит 1 страницу и был на сайте меньше 15 секунд. Такой визит будет считаться отказным, значит:
Общая статистика посещений станет такой:
Если мы построим отчет с единственной группировкой «Источник трафика», то отчет будет иметь такие же значения метрик, как и в целом по сайту, т. к. у нас два посетителя, у которых одинаковое значение группировки «Источник трафика» — они оба пришли из поисковых систем, данные по ним сгруппировались:
Теперь изменим группировку отчета на «Город»:
Отчет принимает совершенно другой вид: у нас в нем появились две строки, несущие в себе два диаметрально противополжных факта. Отсюда вывод: правильные группировки помогают увидеть правильную информацию в правильном разрезе. Я считаю это основопологающим принципом веб-аналитики и аналитики данных вообще.
Надеюсь, этот пример дал понимание что такое группировки и метрики.
4. Получение доступа к API
Метрика использует протокол OAuth. Этот протокол позволяет работать с данными Яндекса от лица пользователя Яндекса через приложение, зарегистрированное на Яндексе. Приложение получает доступ к данным пользователя с помощью специального ключа, называемого токеном. Итак, прежде чем начать использовать API Яндекс.Метрики нам нужно создать приложение и получить от имени пользователя OAuth-токен, с помощью которого мы будем делать свои запросы к API.
Метрика API
API Яндекс метрики позволяет получить информацию о посещаемости сайта и формировать отчеты, но с ограничением в 30 запросов в секунду и 5000 в сутки.
Для использования API необходима авторизация с помощью OAuth-токена.
Получение OAuth-токена
В форме заполняются поля: «Название», в разделе «Платформы» отметить «Веб-сервисы» и указать «Callback URI #1».
Далее в разделе «Доступы», «Метрика» отметить пункт – «Получение статистики, чтение параметров своих и доверенных счётчиков».
После отправки формы получим индификатор приложения, его подставляем в URL:
Переходим по URL, даем разрешение и получаем токен, сроком действия на один год.
Общие показатели сайта
Такие показатели, как визиты, просмотры, посетители, отказы и т.д. за определенный интервал времени можно получить одним запросом по номеру вашего счетчика, который установлен на сайте.
Показатели по отдельной странице
Сделаем фильтр по определенному URL и получим данные только по одной странице.
Получение поисковых фраз
Яндекс не выдает поисковые запросы отдельных визитов и посетителей, поэтому в результатах будут фразы по которым переходило из поиска не менее 10-ти человек.
По малым интервалам времени результатов скорее всего не будет, поэтому получаем данные за последний год.
Делаем простенький web-сервис с помощью API Яндекс.Метрики
Не так давно Яндекс открыл для использования API Яндекс.Метрики. В этой статье я расскажу для чего оно нужно, как им пользоваться и кратко опишу отличия от API Google Analytics.
Кроме того, я покажу, как с помощью этого API сделать web-сервис, в котором можно сравнить текущие показатели сайта с прошлым и посмотреть, как со временем менялась популярность страниц:
Кратко об API Метрики
Главное отличие API Метрики от API Google Analytics заключается в том, что оно фокусируется на отчетах, а не показателях. Программист, пользующийся GA, должен сказать сервису «я хочу видеть визиты с рекламных источников разбитые по цели 1, количеству визитов, показателю отказов», пользователь Метрики скажет «я хочу видеть отчет по содержанию».
Выбор ориентации на отчеты, а не показатели, соответствует концепции Метрики как инструмента для обычных пользователей, а не профессионалов. Пользоваться API Метрики действительно в разы проще.
Тем не менее, у текущего подхода есть и недостатки. Во-первых, можно запрашивать у сервиса только заранее определенные программистами Яндекса отчеты. Во-вторых, поскольку структуру отчетов менять нельзя, каждый раз вы будете получать избыточный объём информации, что может отразиться на времени отклика сервиса.
Метрика развивается очень быстро (за время написания статьи даже успел немножко поменяться API), поэтому я уверен, что уже скоро можно будет так же, как и в GA, формировать отчеты только для нужных показателей, и описанные выше проблемы пропадут.
Зачем оно нужно?
Например, вот как это сделано на Хабре (http://habrahabr.ru/info/stats/):
Пункт 2 (интеграция статистики в CRM), понятен без всяких объяснений. Добавить к внутренней информации о заказе его источник, регион покупателя и иногда даже конкретный рекламный креатив — это голубая мечта любого рекламщика/аналитика. После того, как это будет сделано, сразу станет видно, какая реклама эффективна, а какая нет и заодно избавить колл-центр хотя бы от нескольких лишних вопросов к пользователю.
Автоматизация работы сотрудников (пункт 3) важен для тех, кто размещает много рекламы, тратит много денег на SEO и постоянно отслеживает эффективность всего этого дела. Допустим, что каждую неделю ваши сотрудники обрабатывают 40 отчетов из Яндекс.Метрики. На каждый отчет они тратят по 10 минут. Это 6 часов 40 минут. А если выдавать им уже обработанные документы, то эти 7 часов можно будет потратить на что-то реально полезное.
Главное преимущество для программиста
После работы с API GA и его громоздким мне хотелось бы отдельно подчеркнуть ещё один важный момент: Метрика позволяет получать данные в JSON! На мой взгляд, это одно из важнейших конкурентных преимуществ перед GA. Все современные языки умеют работать с JSON из коробки, и таким образом отпадает нужда в каких-либо дополнительных библиотеках. В отличие от Google с Метрикой можно сразу сесть и ехать.
В этом очень легко убедиться, откройте новую вкладку браузера и перейдите по следующему URL (вы должны быть залогинены в Яндексе): http://api-metrika.yandex.ru/counters.json?pretty=1.
Поздравляю, вы только что воспользовались API метрики. И вам даже не нужны никакие дополнительные программы, чтобы разобрать ответ сервера.
Делаем собственный сервис на основе API Метрики
Итак, чтобы поглубже разобраться в API, попробуем сделать интернет-сервис, расширяющий стандартные возможности Метрики. По умолчанию в ней отсутствует одна очень важная штука — сравнение с прошлым периодом. Это очень удобная возможность, благодаря которой аналитика сайта становится существенно проще. В GA сравнение по периоду выглядит так:
Попробуем сделать что-то подобное для Метрики.
Перед тем, как приступать к созданию непосредственно отчетов, надо дать пользователю возможность выбрать счетчик, статистику которого он хочет увидеть. Для этого мы должны воспользоваться той ссылкой, которую уже видели выше (http://api-metrika.yandex.ru/counters.json). Из информации, которую присылает сервер, нам надо вытащить два параметра: id и site. ID — это номер счетчика, без которого невозможно получить никакой статистики, а site — это название сайта, указанное при регистрации.
Следует отметить, что при создании API требуется авторизоваться. Это можно сделать несколькими разными способами, которые я не буду описывать в этой статье. Для своего сервиса я выбрал oAuth, т. к. уже использовал его при работе с сервисами Google. Как оказалось, реализацию oAuth от Яндекса использовать существенно проще, чем версию его заокеанского соперника.
Итак, создадим для пользователя интерфейс выбора счетчика и периода, с которым мы будем сравнивать наши данные. На питоне код для запроса счётчиков будет выглядеть так:
Поскольку данный сервис не предназначен для продакшна, сохраним для пользовательского токена список счетчиков в memcache, чтобы не дергать сервер лишний раз. В реальности этого делать на платформе Google AppEngine, вероятно, не стоит — размер memcache относительно небольшой.
Для пользователя интерфейс будет выглядеть так:
В качестве id выступает ID выбранного пользователем счетчика, date1 и date2 — даты в указанном формате. Любой запрос к API метрики можно проверить прямо в браузере, поэтому вы можете просто взять id своего счетчика и подставить его в эту ссылку. Если вы залогинены в сервисах Яндекса, oAuth токен можно опустить.
В ответ метрика вернет отчет, в котором содержится много разной лишней информации, нам требуется только дата («date») и число посещений («visits»):
Далее, сравним выбранный пользователем период с аналогичным по числу дней предыдущим периодом (например, будет сравниваться с Для этого сначала вычислим длину рассматриваемого периода во времени:
А затем вычтем длину из конечных точек нашего периода:
В результате для каждой даты из пользовательского периода у нас будет число визитов в этот день и N дней назад и на основе этих данных уже можно строить график. Я для построения графиков использовал Google Charts, потому что с ними просто работать, а результат выглядит довольно красиво. График сравнения выглядит так:
Теперь, когда у нас есть данные по дням и визитам, почему бы нам не рассчитать отклонение от среднего в каждый из дней. Если представить эту информацию в виде гистограммы, её будет проще воспринимать, чем, если вглядываться в построенный график.
Для этого посчитаем среднее значение, разделив сумму визитов на число дней, а затем сравним полученное значение со значением каждого отдельного дня. В результате получим следующую диаграмму:
Итак, теперь у нас есть диаграммы для сравнения трафика с прошлым, но чтобы сделать наш сервис по-настоящему полезным, надо туда добавить что-то ещё.
Очень часто при оценке сайта приходится сравнивать, как изменилась популярность страниц. Например, то, что в этом месяце хорошо идут телескопы на подставке Добсона не значит, что они также хорошо продавались в прошлом. Попробуем добавить отчёт, в котором можно будет просто и быстро увидеть изменения в посещаемости страниц.
Для этого мы воспользуемся типом отчетов «содержание», а в нём отчетом «Популярное». В этом отчете содержится информация о числе входов, выходов и просмотров. Получить данные отчета можно перейдя по ссылке http://api-metrika.yandex.ru/stat/content/popular.json?id=XXXXXX&date1=YYYYMMDD&date2=YYYYMMDD&oauth_token=XXXXXX&per_page=20.
Обратите внимание, что на этот раз в ссылке появился новый параметр «per_page». Это необязательный параметр, который указывает API Метрики, сколько записей должно быть в ответе сервера. По умолчанию сервер всегда отдаёт 100 записей, но в данном случае для нас это избыточное значение.
В остальном механизмы получения данных предельно похожи
В итоге наш сервис будет выглядеть следующим образом:
Благодаря тому, что в правом столбце показывается, как изменилась позиция в сравнении с прошлым периодом, очень легко понять динамику популярности страниц.
Api яндекс метрика php примеры
Yandex Metrika API
Библиотека для удобного взаимодействия с Yandex Metrika API
Установка через composer
Данные по посещаемости
Будут получены данные: визитов, просмотров, уникальных посетителей по дням.
За последние N дней
За указанный период
| Название | Тип | Описание |
|---|---|---|
| $startDate | DateTime | Начальная дата |
| $endDate | DateTime | Конечная дата |
Самые просматриваемые страницы
За последние N дней
| Название | Тип | Описание |
|---|---|---|
| $days | integer | Кол-во дней. По умолчанию 30 |
| $limit | integer | Лимит записей. По умолчанию 10 |
За указанный период
| Название | Тип | Описание |
|---|---|---|
| $startDate | DateTime | Начальная дата |
| $endDate | DateTime | Конечная дата |
| $limit | integer | Лимит записей. По умолчанию 10 |
За последние N дней
| Название | Тип | Описание |
|---|---|---|
| $days | integer | Кол-во дней. По умолчанию 30 |
| $limit | integer | Лимит записей. По умолчанию 10 |
За указанный период
| Название | Тип | Описание |
|---|---|---|
| $startDate | DateTime | Начальная дата |
| $endDate | DateTime | Конечная дата |
| $limit | integer | Лимит записей. По умолчанию 10 |
Пользователи из поисковых систем
За последние N дней
| Название | Тип | Описание |
|---|---|---|
| $days | integer | Кол-во дней. По умолчанию 30 |
| $limit | integer | Лимит записей. По умолчанию 10 |
За указанный период
| Название | Тип | Описание |
|---|---|---|
| $startDate | DateTime | Начальная дата |
| $endDate | DateTime | Конечная дата |
| $limit | integer | Лимит записей. По умолчанию 10 |
Пользователи по странам и регионам
За последние N дней
| Название | Тип | Описание |
|---|---|---|
| $days | integer | Кол-во дней. По умолчанию 7 |
| $limit | integer | Лимит записей. По умолчанию 20 |
За указанный период
| Название | Тип | Описание |
|---|---|---|
| $startDate | DateTime | Начальная дата |
| $endDate | DateTime | Конечная дата |
| $limit | integer | Лимит записей. По умолчанию 20 |
Пол и возраст пользователей
За последние N дней
| Название | Тип | Описание |
|---|---|---|
| $days | integer | Кол-во дней. По умолчанию 30 |
| $limit | integer | Лимит записей. По умолчанию 20 |
За указанный период
| Название | Тип | Описание |
|---|---|---|
| $startDate | DateTime | Начальная дата |
| $endDate | DateTime | Конечная дата |
| $limit | integer | Лимит записей. По умолчанию 20 |
За последние N дней
| Название | Тип | Описание |
|---|---|---|
| $template | string | Название шаблона |
| $days | integer | Кол-во дней. По умолчанию 30 |
| $limit | integer | Лимит записей. По умолчанию 10 |
За указанный период
| Название | Тип | Описание |
|---|---|---|
| $template | string | Название шаблона |
| $startDate | DateTime | Начальная дата |
| $endDate | DateTime | Конечная дата |
| $limit | integer | Лимит записей. По умолчанию 10 |
Параметры ids и oauth_token передавать не нужно.
Основой Yandex Metrika API являет открытый исходный код, в соответствии MIT license
About
PHP библиотека для удобного взаимодействия с Yandex Metrika API













