| Package Data | |
|---|---|
| Maintainer Username: | alexusmai | 
| Maintainer Contact: | alexusmai@gmail.com (Alex Manekin) | 
| Package Create Date: | 2016-02-23 | 
| Package Last Update: | 2021-12-02 | 
| Home Page: | http://webmai.ru/laravel/poluchaem-statisticheskie-dannie-ispolzuya-api-yandex-metrika | 
| Language: | PHP | 
| License: | MIT | 
| Last Refreshed: | 2025-10-30 03:16:06 | 
| Package Statistics | |
|---|---|
| Total Downloads: | 35,197 | 
| Monthly Downloads: | 436 | 
| Daily Downloads: | 7 | 
| Total Stars: | 45 | 
| Total Watchers: | 6 | 
| Total Forks: | 28 | 
| Total Open Issues: | 3 | 
Пакет предназначен для получения данных статистики Яндекс Метрики.
В связи с последними изменениями, token перенесен в HTTP заголовок - установите v1.0
 Передача авторизационного токена в параметрах URL перестанет работать
13 февраля 2019 года. Чтобы продолжить работу с API Метрики,
настройте авторизацию по токену в HTTP-заголовке.
С помощью Composer
composer require alexusmai/yandex-metrika
Если у вас установлен Laravel 5.4 или более ранней версии, то в app/config/app.php нужно добавить провайдера,
Alexusmai\YandexMetrika\YandexMetrikaServiceProvider::class,
и добавить алиас.
'YandexMetrika' => Alexusmai\YandexMetrika\YandexMetrikaFacade::class,
Публикуем файл настроек
php artisan vendor:publish --provider="Alexusmai\YandexMetrika\YandexMetrikaServiceProvider" --tag="yandex-metrika"
Метрика использует протокол OAuth, этот протокол позволяет работать с данными Яндекса от лица пользователя Яндекса через приложение, зарегистрированное на Яндексе. Для начала нужно зарегистрировать новое приложение, и получить token
https://oauth.yandex.ru/
https://oauth.yandex.ru/authorize?response_type=token&client_id=подставим сюда идентификатор приложения
Большинтсво запросов взято из документации API Яндекс Метрики https://tech.yandex.ru/metrika/
Результат запроса - объект.
YandexMetrika {#464 ▼
  #url: "https://api-metrika.yandex.net/stat/v1/data"
  #counter_id: "12345678"
  #getMethodName: "getVisitsViewsUsers"
  #adaptMethodName: "adaptVisitsViewsUsers"
  +data: array:12 [▼
    "query" => array:14 [▶]
    "data" => array:31 [▶]
    "total_rows" => 31
    "total_rows_rounded" => false
    "sampled" => false
    "sample_share" => 1.0
    "sample_size" => 350
    "sample_space" => 350
    "data_lag" => 100
    "totals" => array:3 [▶]
    "min" => array:3 [▶]
    "max" => array:3 [▶]
  ]
  +adaptData: null
}
Если данные не получены - null. Ошибки возникающие при запросе данных пишутся в лог с названием Yandex Metrika:
Все запросы кэшируются, время жизни кэша указывается в конфигурационном файле.
Для обработки полученных данных есть дополнительные методы, которые делают данные более удобными для применения. Для их спользования используйте метод adapt() Не у всех методов для получения данных есть метод для обработки. У getRequestToApi() - нету
YandexMetrika::getVisitsViewsUsers();   //По умолчанию - за последние 30 дней
//Пример
YandexMetrika::getVisitsViewsUsers(10); //За последние 10 дней
//За период
YandexMetrika::getVisitsViewsUsersForPeriod(DateTime $startDate, DateTime $endDate) //За указанный период
//Обработка полученных данных для построения графика Highcharts › Basic line
YandexMetrika::getVisitsViewsUsers()->adapt();
YandexMetrika::getTopPageViews();       //По умолчанию за последние 30 дней, количество результатов - 10
//Пример
YandexMetrika::getTopPageViews(10, 50); //За последние 10 дней, максимум 50 результатов
//За период
YandexMetrika::getTopPageViewsForPeriod(DateTime $startDate, DateTime $endDate, $maxResults = 10)   //По умолчанию максимум 10 результатов
//Обработка полученных данных
YandexMetrika::getTopPageViews()->adapt();
YandexMetrika::getSourceSummary();      //По умолчанию за последние 30 дней
//Пример
YandexMetrika::getSourceSummary(7);     //За последние 10 дней
//За период
YandexMetrika::getSourcesSummaryForPeriod(DateTime $startDate, DateTime $endDate)
//Обработка полученных данных
YandexMetrika::getSourcesSummary()->adapt();
YandexMetrika::getSourcesSearchPhrases();       //По умолчанию за последние 30 дней, количество результатов - 10
//Пример
YandexMetrika::getSourcesSearchPhrases(15, 20); //За последние 15 дней, максимум 20 результатов
//За период
YandexMetrika::getSourcesSearchPhrasesForPeriod(DateTime $startDate, DateTime $endDate, $maxResult = 10)    //По максимум - 10 результатов
//Обработка полученных данных
YandexMetrika::getSourcesSearchPhrases()->adapt();
YandexMetrika::getTechPlatforms();      //По умолчанию за последние 30 дней, макс количество результатов - 10
//Пример
YandexMetrika::getTechPlatforms(12, 5); //За последние 12 дней, максимум 5 результатов
//За период
YandexMetrika::getTechPlatformsForPeriod(DateTime $startDate, DateTime $endDate, $maxResult = 10)   //По умолчанию максимум 10 результатов
//Обработка полученных данных
YandexMetrika::getTechPlatforms()->adapt();
YandexMetrika::getVisitsUsersSearchEngine();    //По умолчанию за последние 30 дней, макс количество результатов - 10
//Пример
YandexMetrika::getVisitsUsersSearchEngine(24, 60);  //За последние 24 дня, максимум 60 результатов
//За период
YandexMetrika::getVisitsUsersSearchEngineForPeriod(DateTime $startDate, DateTime $endDate, $maxResult = 10) //По умолчанию максимум 10 результатов
//Обработка полученных данных
YandexMetrika::getVisitsUsersSearchEngine()->adapt();
YandexMetrika::getVisitsViewsPageDepth();       //По умолчанию за последние 30 дней, количество просмотренных страниц - 5
//Пример
YandexMetrika::getVisitsViewsPageDepth(14, 30);   //За последние 14 дней, макс количество результатов - 30
//За период
YandexMetrika::getVisitsViewsPageDepthForPeriod(DateTime $startDate, DateTime $endDate, $pages = 5) //По умолчанию - 5 страниц
//Обработка полученных данных
YandexMetrika::getVisitsViewsPageDepth()->adapt();
YandexMetrika::getGeoCountry();   //По умолчанию за последние 7 дней, макс количество результатов - 100
//Пример
YandexMetrika::getGeoCountry(12, 30);   //За последние 12 дней, макс количество результатов - 30
//За период
YandexMetrika::getGeoCountryForPeriod(DateTime $startDate, DateTime $endDate, $maxResult = 100) //По умолчанию максимум 100 результатов
//Обработка полученных данных для построения графика Highcharts.js > Pie with drilldown
YandexMetrika::getGeoCountry()->adapt()();
YandexMetrika::getGeoArea();   //По умолчанию за последние 7 дней, макс количество результатов - 100, Страна - Россия (id-225)
//Пример
YandexMetrika::getGeoArea(12, 30, 187);   //За последние 12 дней, макс количество результатов - 30, страна - Украина
//За период
YandexMetrika::getGeoAreaForPeriod(DateTime $startDate, DateTime $endDate, $maxResult = 100, $countryId = 225)
//Обработка полученных данных для построения графика Highcharts.js > Pie with drilldown
YandexMetrika::getGeoArea()->adapt()();
Для методов getGeoCountry() и getGeoArea() - метод обработки данных общий - adaptGeoPie()
//Параметры запроса
$urlParams = [
            'ids'           => '123456',                        //id счетчика
            'date1'         => Carbon::today()->subDays(10),    //Начальная дата
            'date2'         => Carbon::today(),                 //Конечная дата
            'metrics'       => 'ym:s:visits',
            'filters'       => 'ym:s:pageViews>5'
        ];
//Запрос
YandexMetrika::getRequestToApi($urlParams);