PHPackages                             rovereto/yandex-metrika - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. rovereto/yandex-metrika

ActiveLibrary[API Development](/categories/api)

rovereto/yandex-metrika
=======================

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

1.0.0(3y ago)638MITPHPPHP ^7.2 || ^8.0

Since Jun 1Pushed 3y ago1 watchersCompare

[ Source](https://github.com/ilyutkin/yandex-metrika)[ Packagist](https://packagist.org/packages/rovereto/yandex-metrika)[ RSS](/packages/rovereto-yandex-metrika/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

Laravel Yandex Metrika API
==========================

[](#laravel-yandex-metrika-api)

Пакет предназначен для работы с Logs API и API отчётов Яндекс Метрики.

- [Logs API](https://yandex.ru/dev/metrika/doc/api2/logs/intro.html) позволяет получать неагрегированные данные, собираемые Яндекс.Метрикой. Данный API предназначен для пользователей сервиса, которые хотят самостоятельно обрабатывать статистические данные и использовать их для решения уникальных аналитических задач.
- [API отчетов](https://yandex.ru/dev/metrika/doc/api2/api_v1/intro.html) API отчетов позволяет получать информацию о статистике посещений сайта и другие данные, не используя интерфейс Яндекс.Метрики.

Собраны и переработаны два репозитория, которые давно не обновлялись и не работают в новых версиях Laravel.

- для Logs API используется [Logs API Яндекс.Метрики](https://github.com/Volga/metrika-logs)
- для API отчётов используется [Yandex Metrika Laravel 5 Package](https://github.com/alexusmai/yandex-metrika)

[![Packagist](https://camo.githubusercontent.com/ba60e119b1c38952702d5ffaca8c5db41eb63936fdfb20e88def37316f390db0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f726f76657265746f2f79616e6465782d6d657472696b612e7376673f6c6162656c3d5061636b6167697374267374796c653d666c61742d737175617265)](https://packagist.org/packages/rovereto/yandex-metrika)[![License](https://camo.githubusercontent.com/87529cf43903e49e2a6986600d4fbd473213df78c25ca7a0645160468b29e841/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f726f76657265746f2f79616e6465782d6d657472696b613f6c6162656c3d4c6963656e7365267374796c653d666c61742d737175617265)](https://github.com/ilyutkin/yandex-metrika/blob/master/LICENSE.md)[![Packagist Downloads](https://camo.githubusercontent.com/b42409ad3178ff34ff6bc9cfc3cb25e52fee9642f201508beaa986a976b65c32/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f726f76657265746f2f79616e6465782d6d657472696b613f7374796c653d666c61742d737175617265)](https://packagist.org/packages/rovereto/yandex-metrika)

Установка
---------

[](#установка)

> Минимальные требования — PHP 7.2+.

1. Установка пакета с помощью Composer: ```
    composer require rovereto/yandex-metrika
    ```

#### Для Laravel &lt;5.5

[](#для-laravel-55)

a. Добавьте сервис провайдера в файл app/config/app.php:

```
'providers' => [
    ...
    Rovereto\YandexMetrika\Providers\YandexMetrikaProvider::class,
    ...
]
```

b. Добавьте алиас для фасада в файл app/config/app.php:

```
'aliases' => [
    ...
    'YandexMetrikaApi' => Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi::class,
    ...
]
```

2. Публикация файла настроек (config/yandex-metrika-api.php): ```
    php artisan vendor:publish --provider="Rovereto\YandexMetrika\Providers\YandexMetrikaProvider"
    ```

Авторизация в API Яндекс Метрики
--------------------------------

[](#авторизация-в-api-яндекс-метрики)

Для использования API Яндекс.Метрики необходимо получить авторизационный токен через OAuth-сервер Яндекса ([подробнее](https://yandex.ru/dev/metrika/doc/api2/intro/authorization.html)).

Чтобы начать пользоваться OAuth протоколом, необходимо:

1. [Зарегистрировать](https://yandex.ru/dev/id/doc/dg/oauth/tasks/register-client.html) приложение на Яндекс.OAuth.

Зарегистрировать приложение можно на странице [Создание приложения](https://oauth.yandex.ru/client/new). Для каждого приложения обязательно указать только название и доступы. Но чем больше информации о приложении вы предоставите, тем легче пользователям будет понять, кому именно они разрешают доступ к своему аккаунту.

При регистрации выберите права доступа.

[![Права доступа](https://camo.githubusercontent.com/57cd4553310dbf34a31262ea66cb1aa02b648e03cfde3dbc1c4392d99176ac2d/68747470733a2f2f79617374617469632e6e65742f73332f646f632d62696e6172792f667265657a652f72752f6d657472696b612f636337366331623565366461633936666365633963613763653636663136646164643230366435392e706e67)](https://camo.githubusercontent.com/57cd4553310dbf34a31262ea66cb1aa02b648e03cfde3dbc1c4392d99176ac2d/68747470733a2f2f79617374617469632e6e65742f73332f646f632d62696e6172792f667265657a652f72752f6d657472696b612f636337366331623565366461633936666365633963613763653636663136646164643230366435392e706e67)

Все приложения, которые вы создали, перечислены в [списке ваших приложений](https://oauth.yandex.ru/).

2. Копируем ID приложения и заходим на Яндекс под той учетной записью, от имени которой будет работать приложение.
3. Переходим по URL:

```
https://oauth.yandex.ru/authorize?response_type=token&client_id=

```

4. Приложение запросит разрешение на доступ, нажимаем «Разрешить»
5. Заносим полученный токен в файл конфигурации пакета config/yandex-metrika-api.php. Там же заполняем идентификатор счётчика.

```
return [
    'token'          => env('YANDEX_METRIKA_API_TOKEN', ''),
    'counter_id'     => env('YANDEX_METRIKA_API_COUNTER_ID', ),
    ...
];
```

Или прописываем токен и идентификатор счётчика в файле .ENV

```
YANDEX_METRIKA_API_TOKEN=""
YANDEX_METRIKA_API_COUNTER_ID=

```

Использование
-------------

[](#использование)

Два варианта подключения класса API Яндекс Метрики

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;
```

или

```
use YandexMetrikaApi;
```

### Использование нескольких счетчиков.

[](#использование-нескольких-счетчиков)

Если вам нужно получать данные от разных счетчиков

```
YandexMetrikaApi::setCounter($token, $counterId, $cacheLifetime)->имя_метода();

// Например
YandexMetrikaApi::setCounter($token, $counterId, $cacheLifetime)->getVisitsViewsUsers();

// $token и $counterId - обязательные параметры,
// параметр $cacheLifetime - необязателен (если не передан то будет использоваться из настроек)
```

Для смены только идентификатора счётчика

```
YandexMetrikaApi::setCounterId($counterId)->имя_метода();

// Например
YandexMetrikaApi::setCounterId($counterId)->getVisitsViewsUsers();
```

### Использование API отчётов Яндекс Метрики

[](#использование-api-отчётов-яндекс-метрики)

Запросы кэшируются, время жизни кэша указывается в конфигурационном файле.

Ошибки возникающие при запросе данных пишутся в лог с названием storage/logs/yandex-metrika-api.log с ежедневной ротацией

Результат запроса - объект класса Rovereto\\YandexMetrika\\Responses\\MetrikaResponse

Для обработки полученных данных есть дополнительные методы, которые делают данные более удобными для применения.
Для их использования используйте метод adapt()
Не у всех методов для получения данных есть метод для обработки.

#### Получаем кол-во: визитов, просмотров, уникальных посетителей по дням

[](#получаем-кол-во-визитов-просмотров-уникальных-посетителей-по-дням)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getVisitsViewsUsers();   //По умолчанию - за последние 30 дней
//Пример
YandexMetrikaApi::getVisitsViewsUsers(10); //За последние 10 дней
//За период
YandexMetrikaApi::getVisitsViewsUsersForPeriod(DateTime $startDate, DateTime $endDate) //За указанный период
//Обработка полученных данных для построения графика Highcharts › Basic line
YandexMetrikaApi::getVisitsViewsUsers()->adapt();
```

#### Самые просматриваемые страницы

[](#самые-просматриваемые-страницы)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getTopPageViews();       //По умолчанию за последние 30 дней, количество результатов - 10
//Пример
YandexMetrikaApi::getTopPageViews(10, 50); //За последние 10 дней, максимум 50 результатов
//За период - по умолчанию максимум 10 результатов
YandexMetrikaApi::getTopPageViewsForPeriod(DateTime $startDate, DateTime $endDate, $limit = 10)
//Обработка полученных данных
YandexMetrikaApi::getTopPageViews()->adapt();
```

#### Отчет "Источники - Сводка"

[](#отчет-источники---сводка)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getSourceSummary();      //По умолчанию за последние 30 дней
//Пример
YandexMetrikaApi::getSourceSummary(7);     //За последние 10 дней
//За период
YandexMetrikaApi::getSourcesSummaryForPeriod(DateTime $startDate, DateTime $endDate)
//Обработка полученных данных
YandexMetrikaApi::getSourcesSummary()->adapt();
```

#### Отчет "Источники - Поисковые фразы"

[](#отчет-источники---поисковые-фразы)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getSourcesSearchPhrases();       //По умолчанию за последние 30 дней, количество результатов - 10
//Пример
YandexMetrikaApi::getSourcesSearchPhrases(15, 20); //За последние 15 дней, максимум 20 результатов
//За период - по умолчанию максимум - 10 результатов
YandexMetrikaApi::getSourcesSearchPhrasesForPeriod(DateTime $startDate, DateTime $endDate, $limit = 10)
//Обработка полученных данных
YandexMetrikaApi::getSourcesSearchPhrases()->adapt();
```

#### Отчет "Технологии - Браузеры"

[](#отчет-технологии---браузеры)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getTechPlatforms();      //По умолчанию за последние 30 дней, макс количество результатов - 10
//Пример
YandexMetrikaApi::getTechPlatforms(12, 5); //За последние 12 дней, максимум 5 результатов
//За период - по умолчанию максимум - 10 результатов
YandexMetrikaApi::getTechPlatformsForPeriod(DateTime $startDate, DateTime $endDate, $limit = 10)
//Обработка полученных данных
YandexMetrikaApi::getTechPlatforms()->adapt();
```

#### Количество визитов и посетителей с учетом поисковых систем

[](#количество-визитов-и-посетителей-с-учетом-поисковых-систем)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getVisitsUsersSearchEngine();    //По умолчанию за последние 30 дней, макс количество результатов - 10
//Пример
YandexMetrikaApi::getVisitsUsersSearchEngine(24, 60);  //За последние 24 дня, максимум 60 результатов
//За период - по умолчанию максимум - 10 результатов
YandexMetrikaApi::getVisitsUsersSearchEngineForPeriod(DateTime $startDate, DateTime $endDate, $limit = 10)
//Обработка полученных данных
YandexMetrikaApi::getVisitsUsersSearchEngine()->adapt();
```

#### Количество визитов с заданной глубиной просмотра

[](#количество-визитов-с-заданной-глубиной-просмотра)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getVisitsViewsPageDepth();       //По умолчанию за последние 30 дней, количество просмотренных страниц - 5
//Пример
YandexMetrikaApi::getVisitsViewsPageDepth(14, 30);   //За последние 14 дней, макс количество результатов - 30
//За период - по умолчанию - 5 страниц
YandexMetrikaApi::getVisitsViewsPageDepthForPeriod(DateTime $startDate, DateTime $endDate, $pages = 5)
//Обработка полученных данных
YandexMetrikaApi::getVisitsViewsPageDepth()->adapt();
```

#### Отчеты о посещаемости сайта с распределением по странам и регионам

[](#отчеты-о-посещаемости-сайта-с-распределением-по-странам-и-регионам)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getGeoCountry();   //По умолчанию за последние 7 дней, макс количество результатов - 100
//Пример
YandexMetrikaApi::getGeoCountry(12, 30);   //За последние 12 дней, макс количество результатов - 30
//За период - по умолчанию максимум - 100 результатов
YandexMetrikaApi::getGeoCountryForPeriod(DateTime $startDate, DateTime $endDate, $limit = 100)
//Обработка полученных данных для построения графика Highcharts.js > Pie with drilldown
YandexMetrikaApi::getGeoCountry()->adapt()();
```

#### Отчеты о посещаемости сайта с распределением по областям и городам

[](#отчеты-о-посещаемости-сайта-с-распределением-по-областям-и-городам)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

YandexMetrikaApi::getGeoArea();   //По умолчанию за последние 7 дней, макс количество результатов - 100, Страна - Россия (id-225)
//Пример
YandexMetrikaApi::getGeoArea(12, 30, 149);   //За последние 12 дней, макс количество результатов - 30, страна - Белоруссия
//За период
YandexMetrikaApi::getGeoAreaForPeriod(DateTime $startDate, DateTime $endDate, $limit = 100, $countryId = 225)
//Обработка полученных данных для построения графика Highcharts.js > Pie with drilldown
YandexMetrikaApi::getGeoArea()->adapt()();
```

Для методов getGeoCountry() и getGeoArea() - метод обработки данных общий - adaptGeoPie()

#### Произвольный запрос к Api отчётов Yandex Metrika

[](#произвольный-запрос-к-api-отчётов-yandex-metrika)

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

//Параметры запроса
$params = [
    'date1'         => Carbon::today()->subDays(10),    //Начальная дата
    'date2'         => Carbon::today(),                 //Конечная дата
    'metrics'       => 'ym:s:visits',
    'filters'       => 'ym:s:pageViews>5'
];
//Запрос
YandexMetrikaApi::getMetrikaResponse($params);
```

### Использование Log API Яндекс Метрики

[](#использование-log-api-яндекс-метрики)

#### Оценка возможности создания запроса

[](#оценка-возможности-создания-запроса)

Оценивает возможность создания запроса логов по его примерному размеру.

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getCapabilityResponse(
    Carbon::parse('2022-01-01'),
    Carbon::parse('2022-04-30'),
    [
        'ym:pv:watchID',
        'ym:pv:counterID',
        'ym:pv:date',
        'ym:pv:dateTime',
        'ym:pv:title',
        'ym:pv:URL',
        'ym:pv:referer',
    ],
    'hits');
```

#### Создание запроса логов

[](#создание-запроса-логов)

Создает запрос логов.

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getCreateResponse(
    Carbon::parse('2022-01-01'),
    Carbon::parse('2022-04-30'),
    [
        'ym:pv:watchID',
        'ym:pv:counterID',
        'ym:pv:date',
        'ym:pv:dateTime',
        'ym:pv:title',
        'ym:pv:URL',
        'ym:pv:referer',
    ],
    'hits');
```

#### Отмена не обработанного запроса логов

[](#отмена-не-обработанного-запроса-логов)

Отменяет еще не обработанный запрос логов.

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getCancelResponse($requestId);
```

#### Информация о запросе логов

[](#информация-о-запросе-логов)

Возвращает информацию о запросе логов.

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getInformationResponse($requestId);
```

#### Загрузка части подготовленных логов обработанного запроса

[](#загрузка-части-подготовленных-логов-обработанного-запроса)

Загружает часть подготовленных логов обработанного запроса.

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getDownloadResponse($requestId, $partNumber);

if ($response instanceof \GuzzleHttp\Psr7\Stream) {

    while (!$response->eof()) {
        echo $response->read(1024);
    }

}
```

#### Очистка подготовленных для загрузки логов обработанного запроса

[](#очистка-подготовленных-для-загрузки-логов-обработанного-запроса)

Очищает подготовленные для загрузки логи обработанного запроса.

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getCleanResponse($requestId);
```

#### Список запросов логов

[](#список-запросов-логов)

Возвращает список запросов логов.

```
use Rovereto\YandexMetrika\Support\Facades\YandexMetrikaApi;

$response = YandexMetrikaApi::getLogListResponse();
```

Contributing
------------

[](#contributing)

Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.

Versioning
----------

[](#versioning)

We use [Semantic Versioning](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/ilyutkin/yandex-metrika/tags).

Changelog
---------

[](#changelog)

Refer to the [Changelog](CHANGELOG.md) for a full history of the project.

Support
-------

[](#support)

The following support channels are available at your fingertips:

- [Help on Email](mailto:alexander@ilyutkin.ru)

Author
------

[](#author)

- **Alexander Ilyutkin** [Ilyutkin](https://github.com/Ilyutkin)
- **Volga** [Volga](https://github.com/Volga)
- **Alex Manekin** [Alex Manekin](https://github.com/alexusmai)

See also the list of [contributors](https://github.com/ilyutkin/yandex-metrika/graphs/contributors)who participated in this project.

License
-------

[](#license)

This project is licensed under the [The MIT License (MIT)](LICENSE.md)Massachusetts Institute of Technology License - see the [LICENSE.md](LICENSE.md) file for details

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1441d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/aa68b35624f6420f10478ae38c27dc89bb34fc4cbc3b195a7caba65f663dd4d0?d=identicon)[rovereto](/maintainers/rovereto)

---

Top Contributors

[![ilyutkin](https://avatars.githubusercontent.com/u/2003829?v=4)](https://github.com/ilyutkin "ilyutkin (1 commits)")

---

Tags

phplaravelyandexяндексmetrikalogs apiyandex metrika apiapi отчётов

### Embed Badge

![Health badge](/badges/rovereto-yandex-metrika/health.svg)

```
[![Health](https://phpackages.com/badges/rovereto-yandex-metrika/health.svg)](https://phpackages.com/packages/rovereto-yandex-metrika)
```

###  Alternatives

[dariusiii/tmdb-laravel

Laravel Package for TMDB ( The Movie Database ) API. Provides easy access to the wtfzdotnet/php-tmdb-api library.

1821.1k](/packages/dariusiii-tmdb-laravel)[madeitbelgium/wordpress-php-sdk

WordPress Laravel PHP SDK

4422.9k1](/packages/madeitbelgium-wordpress-php-sdk)[gufy/whmcs

WHMCS API for Laravel 5

201.7k](/packages/gufy-whmcs)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
