Показать Меню
falbar API Яндекс Метрики

Работа с API Яндекс Метрикой

API Яндекс Метрики

Недавно один пользователь «ВКонтакте» задал мне вопрос: как получить Яндекс токен для работы с API Метрикой? Проблема, по своей сути, не вызывает сложностей, хотя на тот момент я не мог дать исчерпывающего ответа. На поиск решения у «неподготовленного» читателя может уйти весьма продолжительный промежуток времени. В этой статье я рассмотрю простой пример работы с API Яндекс Метрикой и подробно распишу все этапы.

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

Теперь стоит наметить план действий для работы с API Яндекс Метрикой, он будет включать в себя несколько пунктов:

  • Регистрация нового Яндекс приложения;
  • Получение Яндекс токена;
  • Написание скрипта для взаимодействия с данными из Метрики.

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

Регистрация приложения

Все пользовательские Яндекс приложения, которые взаимодействуют с Яндекс сервисами находиться на этой странице oauth.yandex.ru. Там же можно найти ссылку на добавление нового приложения - кликнем по ней!

Регистрация приложения

Далее нам предстоит заполнить форму: указываем название нашего приложения, выбираем права «Яндекс.Метрика», в появившихся чекбоксах указываем на второй – «получение статистики». В последнем поле формы жмем на ссылку «Подставить URL для разработки».

Заполнение формы

Всё - приложение настроено!

Жмём сохранить, и попадает на страницу с информацией о нём. Там мы видим ID приложения, пароль и Callback URL. Из всего этого нам понадобится только ID.

Информация о Яндекс приложении

С регистрацией покончено, переходим к следующему этапу.

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

Есть всего три способа, как получить токен, о них Вы можете узнать на этой странице – способы получения Яндекс токенов. Я же опишу самый простой и быстрый вариант - это получение «отладочного токена».

В адресную строку браузера вводим ссылку данного вида, в которой вместо «идентификатор_приложения» подставляем ID своего приложения:

https://oauth.yandex.ru/authorize?response_type=token&client_id=идентификатор_приложения

Далее, в появившемся сообщении, выбираем «Разрешить»:

Разрежение на доступ к статистике

Вот и всё, мы получили заветный токен:

Яндекс токен

Помимо всего прочего, хочу отметить, и это очень важно: время жизни токена – 1 год. Если этого времени мало, то можно легко автоматизировать процесс, но только для этого придется воспользоваться другими способами получения токина, например «Веб-приложение -> Извлечь токен из URL», об этом в следующих статьях.

Скрипт для работы c API

Сам код довольно простой: это класс, содержащий несколько свойств и методов. Чтобы начать им пользоваться необходимо, заменить значения переменных $token и $counter_id на свои.

class APImetrika{

	private $token 		= "токен";
	private $url_api 	= "https://api-metrika.yandex.ru/";
	private $counter_id = "номер_счётчика";

	public function get_traffic($date1, $date2){

		return $this->get_data(
			$this->url_api.
			"stat/traffic/summary.json?id=".
			$this->counter_id.
			"&pretty=1".
			"&date1=".$date1.
			"&date2=".$date2.
			"&oauth_token=".
			$this->token
		);
	}

	private function get_data($url){

		if($url){

			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $url);
			curl_setopt($ch, CURLOPT_HEADER, 0);
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
			curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
			curl_setopt($ch, CURLOPT_TIMEOUT, 30);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

			$data = json_decode(
				curl_exec($ch), true
			);

			curl_close($ch);

			if(is_array($data)){

				return $data;
			}
		}

		return false;
	}
}

Теперь поговорим немного о методах класса. Первый метод, и он же главный, get_data – является внутренним, служит для обращения к API Метрики и получения данных. Второй метод - публичный, с помощью него можно получать статистику, по сформированному в нём URL. Сам метод принимает два параметра: дату начала и дату окончания выборки.

Вот хороший пример использования данного класса: получение статистики посещений за сегодняшний и вчерашний дни.

Получаем данные:

require_once("APImetrika.php");

$obj = new APImetrika();

$today = $obj->get_traffic(
	date("Ymd"),
	date("Ymd")
);
$last  = $obj->get_traffic(
	date("Ymd", time() - 86400),
	date("Ymd", time() - 86400)
);

Выводим на страницу:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>APImetrika</title>
</head>
<body>
	<h2>Cегодня</h2>
	<p>
		Посетителей:
		<?php echo($today["totals"]["visitors"]);?>
	</p>
	<p>Визитов:
		<?php echo($today["totals"]["visits"]);?>
	</p>
	<p>Просмотров:
		<?php echo($today["totals"]["page_views"]);?>
	</p>
	<h2>Вчера</h2>
	<p>Посетителей:
		<?php echo($last["totals"]["visitors"]);?>
	</p>
	<p>Визитов:
		<?php echo($last["totals"]["visits"]);?>
	</p>
	<p>Просмотров:
		<?php echo($last["totals"]["page_views"]);?>
	</p>
</body>
</html>

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

Вот так, легко и просто мы управились с API Метрикой.

Подписаться на обновления

Aleksandr
Aleksandr 12 июня 2016 в 14:36
Антон, спасибо за статью! У меня возникла такая задача, не мог бы мне кто-нибудь помочь?

Задача такая: нужно найти способ, как выцепить поисковую фразу перешедшего с поисковика пользователя. Затем нужно эту фразу прикрепить к форме, которую пошлёт этот пользователь. Метрика имеет доступ к этим данным. Но как с её помощью достать фразу данного посетителя? Я знаю, что раньше эти данные с лёгкостью можно было достать с помощью $_SERVER[«HTTP_REFERER»]. Сейчас же таким образом можно достать фразу только из контекстной рекламы

Пожалуйста, помогите. Можете ли подсказать скрипт API Метрики, достающий поисковую фразу, по которой перешёл посетитель?
Ответить
Антон Кулешов
Антон Кулешов > Aleksandr 13 июня 2016 в 08:31
Начну с того, что в $_SERVER[«HTTP_REFERER»] лежит не фраза, а адрес ресурса, с которого перешёл посетитель (читаем php мануал). Ну и касательно получения поискового запроса конкретного посетителя, зашедшего на сайт, – этого сделать нельзя, так как эти данные обрабатываются на стороне поисковика.
Ответить
Aleksandr
Aleksandr > Антон Кулешов 13 июня 2016 в 18:01
Ну вот запрос из контекстной рекламы с помощью $_SERVER[«HTTP_REFERER»] и регулярного выражения запросто достаётся.

Поисковики недавно закрыли эту возможность?
Ответить
Антон Кулешов
Антон Кулешов > Aleksandr 14 июня 2016 в 09:24
Подобной возможности, насколько я знаю, никогда и не было. Было бы весьма жирно для веб-мастера - отслеживать поисковую фразу в момент захода пользователя на сайт. Из контекстной рекламы, я так полагаю, вы извлекаете utm метки, значения которых и парсятся?
Ответить