API Яндекс метрики позволяет получить информацию о посещаемости сайта и формировать отчеты, но с ограничением в 30 запросов в секунду и 5000 в сутки.
Для использования API необходима авторизация с помощью OAuth-токена.
Регистрируем приложение на странице https://oauth.yandex.ru/client/new.
В форме заполняются поля: «Название», в разделе «Платформы» отметить «Веб-сервисы» и указать «Callback URI #1».
Далее в разделе «Доступы», «Метрика» отметить пункт – «Получение статистики, чтение параметров своих и доверенных счётчиков».
После отправки формы получим индификатор приложения, его подставляем в URL:
https://oauth.yandex.ru/authorize?response_type=token&client_id=
ID_приложения
Переходим по 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',
);
$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];
Сделаем фильтр по определенному 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];
Яндекс не выдает поисковые запросы отдельных визитов и посетителей, поэтому в результатах будут фразы по которым переходило из поиска не менее 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);
array(
'jquery checkbox checked',
'jquery показать скрыть блок',
'ajax jquery примеры'
)