Метрика API

API Яндекс метрики позволяет получить информацию о посещаемости сайта и формировать отчеты, но с ограничением в 30 запросов в секунду и 5000 в сутки.

Для использования API необходима авторизация с помощью OAuth-токена.

1

Регистрируем приложение на странице https://oauth.yandex.ru/client/new.

В форме заполняются поля: «Название», в разделе «Платформы» отметить «Веб-сервисы» и указать «Callback URI #1».

 в разделе Платформы отметить Веб-сервисы и указать Callback URI

Далее в разделе «Доступы», «Метрика» отметить пункт – «Получение статистики, чтение параметров своих и доверенных счётчиков».

Получение статистики, чтение параметров своих и доверенных счётчиков

После отправки формы получим индификатор приложения, его подставляем в URL:

https://oauth.yandex.ru/authorize?response_type=token&client_id=ID_приложения

Переходим по URL, даем разрешение и получаем токен, сроком действия на один год.

Переходим по URL, даем разрешение и получаем токен

2

Такие показатели, как визиты, просмотры, посетители, отказы и т.д. за определенный интервал времени можно получить одним запросом по номеру вашего счетчика, который установлен на сайте.

$token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

$params = array(
	'ids'     => 'Номер счетчика', 
	'metrics' => 'ym:s:visits,ym:s:pageviews,ym:s:users,ym:s:bounceRate,ym:s:pageDepth,ym:s:avgVisitDurationSeconds',
	'date1'   => 'today', // 7daysAgo - неделя, 30daysAgo - месяц, 365daysAgo - год
	'date2'   => 'today',
);
 
$ch = curl_init('https://api-metrika.yandex.net/stat/v1/data/bytime?' . urldecode(http_build_query($params)));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $token));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);

$res = json_decode($res, true);	
//print_r($res);

// Визиты	
echo $res['totals'][0][0];

// Просмотры	
echo $res['totals'][0][1];

// Посетители	
echo $res['totals'][0][2];

// Отказы, %
echo $res['totals'][0][3];

// Глубина просмотра	
echo $res['totals'][0][4];

// Время на сайте, сек.
echo $res['totals'][0][5];
PHP
3

Сделаем фильтр по определенному URL и получим данные только по одной странице.

$token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

$params = array(
	'ids'     => 'Номер счетчика', 
	'metrics' => 'ym:s:visits,ym:s:pageviews,ym:s:users,ym:s:bounceRate,ym:s:pageDepth,ym:s:avgVisitDurationSeconds',
	'date1'   => 'today', // 7daysAgo за неделю, 30daysAgo за месяц, 365daysAgo за год
	'date2'   => 'today',
	'filters' => "ym:pv:URL=='https://example.com/category/page'"
);
 
$ch = curl_init('https://api-metrika.yandex.net/stat/v1/data/bytime?' . urldecode(http_build_query($params)));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $token));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);

$res = json_decode($res, true);	
//print_r($res);

// Визиты	
echo $res['totals'][0][0];

// Просмотры	
echo $res['totals'][0][1];

// Посетители	
echo $res['totals'][0][2];

// Отказы, %
echo $res['totals'][0][3];

// Глубина просмотра	
echo $res['totals'][0][4];

// Время на сайте, сек.
echo $res['totals'][0][5];
PHP
4

Яндекс не выдает поисковые запросы отдельных визитов и посетителей, поэтому в результатах будут фразы по которым переходило из поиска не менее 10-ти человек.

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

$token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

$params = array(
	'ids'        => 'Номер счетчика', 
	'metrics'    => 'ym:s:visits',
	'dimensions' => 'ym:s:searchPhrase',
	'date1'      => '365daysAgo',
	'date2'      => 'today',
	'filters'    => "ym:pv:URL=='https://example.com/category/page'"
);
  
$ch = curl_init('https://api-metrika.yandex.net/stat/v1/data?' . urldecode(http_build_query($params)));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ' . $token));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);

$res = json_decode($res, true);	
//print_r($res);

$words = array();
foreach ($res['data'] as $row) {
	$words[] = $row['dimensions'][0]['name'];
}

print_r($words);
PHP
array(
	'jquery checkbox checked',
	'jquery показать скрыть блок',
	'ajax jquery примеры'
)
12.11.2019, обновлено 18.11.2020
17217

Комментарии

, чтобы добавить комментарий.

Другие публикации

Как добавить UTM-метки в заявки с сайта
UTM метки – это дополнительные данные, которые добавляются в URL с помощью GET-параметров при клике на баннер в...
19472
+4
Работа с JSON в PHP
JSON (JavaScript Object Notation) – текстовый формат обмена данными, основанный на JavaScript, который представляет собой набор пар {ключ: значение}. Значение может быть массивом, числом, строкой и...
112926
+14
Бот Телеграм на PHP
Примеры как зарегистрировать бота в Телеграм, описание и взаимодействие с основными методами API.
140348
+44
Интеграция с платежной системой PayKeeper в PHP
Платежная платформа PayKeeper позволяет принимать оплату заказов по ссылке, используя данный метод можно с легкостью...
9411
+1
Публикация записей на стену сообщества VK
Для начала вы должны быть авторизированы в VK и являться администратором группы или страницы. Далее нужно создать...
31022
+9
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
28141
+8