API Яндекс Метрики: Выгрузить сырые визиты через Logs API

Сценарий из mcp-everything. Актуально на 2026-10-24.

Неагрегированные данные о каждом визите или хите — для своего хранилища и сквозной аналитики.

  1. Проверь, можно ли выгрузить: GET /management/v1/counter/{counterId}/logrequests/evaluate с date1, date2 (не сегодняшний день, период до года), fields (например, ym:s:visitID,ym:s:dateTime,ym:s:lastTrafficSource,ym:s:goalsID) и source = visits.
  2. Создай запрос: POST /management/v1/counter/{counterId}/logrequests с теми же параметрами. В ответе log_request с request_id.
  3. Опрашивай статус: GET /management/v1/counter/{counterId}/logrequest/{requestId}, пока status не станет processed. Тогда в parts[] — номера частей.
  4. Скачай каждую часть: GET /management/v1/counter/{counterId}/logrequest/{requestId}/part/{partNumber}/download — данные в TSV.
  5. После скачивания очисти запрос: POST /management/v1/counter/{counterId}/logrequest/{requestId}/clean — подготовленные логи занимают квоту.
H="Authorization: OAuth $METRIKA_TOKEN"
API=https://api-metrika.yandex.net/management/v1/counter/44147844
FIELDS=ym:s:visitID,ym:s:dateTime,ym:s:clientID,ym:s:lastTrafficSource,ym:s:goalsID

REQ=$(curl -s -X POST "$API/logrequests?date1=2026-10-01&date2=2026-10-23&source=visits&fields=$FIELDS" -H "$H" | jq -r .log_request.request_id)
curl -s "$API/logrequest/$REQ" -H "$H" | jq .log_request.status        # повторять до processed
curl -s "$API/logrequest/$REQ/part/0/download" -H "$H" -o visits-part0.tsv
curl -s -X POST "$API/logrequest/$REQ/clean" -H "$H"

Базовые URL

Авторизация

Тип: OAuth 2.0

OAuth-токен Яндекса передаётся в заголовке Authorization в каждом запросе. Без токена или с недействительным токеном сервер отвечает 401.

Authorization: OAuth <токен>

Методы сценария

GET /management/v1/counter/{counterId}/logrequests/evaluate — Оценка возможности выгрузки логов

Параметр Где Тип Обяз. Описание
counterId path integer да ID счётчика
date1 query string да Первый день, например 2016-01-01
date2 query string да Последний день (не текущий)
fields query string да Поля через запятую, например ym:pv:dateTime,ym:pv:referer
source query string да hits (события) или visits (визиты)

POST /management/v1/counter/{counterId}/logrequests — Создание запроса логов

В ответе — log_request: request_id, counter_id, status, size, parts.

Параметр Где Тип Обяз. Описание
counterId path integer да ID счётчика
date1 query string да Первый день периода
date2 query string да Последний день (не текущий)
fields query string да Поля через запятую, до 3000 символов
source query string да hits или visits
attribution query string нет Модель атрибуции: FIRST, LAST, LASTSIGN, LAST_YANDEX_DIRECT_CLICK, AUTOMATIC и др.

GET /management/v1/counter/{counterId}/logrequest/{requestId} — Информация о запросе логов

Статусы: created, canceled, processed, cleaned_by_user, cleaned_automatically_as_too_old, processing_failed, awaiting_retry. Для processed в parts[] — номера и размеры частей.

Параметр Где Тип Обяз. Описание
counterId path integer да ID счётчика
requestId path integer да ID запроса логов

GET /management/v1/counter/{counterId}/logrequest/{requestId}/part/{partNumber}/download — Скачивание части логов

Параметр Где Тип Обяз. Описание
counterId path integer да ID счётчика
requestId path integer да ID запроса логов
partNumber path integer да Номер части

POST /management/v1/counter/{counterId}/logrequest/{requestId}/clean — Очистка подготовленных логов

Параметр Где Тип Обяз. Описание
counterId path integer да ID счётчика
requestId path integer да ID запроса логов

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://yandex.ru/dev/metrika/ru/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/yandex-metrika.md