Каждый понедельник - одно и то же: зайти в Метрику, выбрать даты, экспортировать CSV, вставить в таблицу, переформатировать. Это отнимает час. API Яндекс Метрики убирает ручной труд: один скрипт - и свежий отчёт у вас в Google Sheets каждое утро без вашего участия.
В этом гайде разберём, как маркетологу подключиться к API, сделать первый запрос и автоматизировать выгрузку данных - с примерами кода и без воды.
Что такое API Яндекс Метрики
API (Application Programming Interface) Яндекс Метрики - это набор команд для программного доступа к данным аналитики. Вместо того чтобы кликать в интерфейсе, вы отправляете HTTP-запрос и получаете ответ в JSON или CSV.
Для маркетолога это означает одно: никаких ручных выгрузок. Написал скрипт - данные обновляются сами.
Четыре вида API и их задачи
Официальная документация Яндекса выделяет четыре типа API:
- API отчётов - получает агрегированные данные: визиты, пользователи, конверсии, источники трафика. Эндпоинт
https://api-metrika.yandex.net/stat/v1/data. - Logs API - отдаёт сырые, неагрегированные логи каждого хита или визита. Нужен для глубокой аналитики.
- API управления - создаёт и редактирует счётчики, цели, фильтры, выдаёт права доступа.
- API импорта данных - загружает в Метрику расходы из внешних систем, данные из CRM, звонки, офлайн-конверсии.
Кому нужен API: маркетолог vs разработчик
Маркетологу обычно хватает API отчётов. Если нужен сквозной анализ или воронки на уровне каждого пользователя - понадобится Logs API, но тогда придётся работать с базой данных (ClickHouse, MySQL). API управления и импорта - скорее для автоматизации агентских задач или технических интеграций.
Как получить OAuth-токен
Без OAuth-токена API не работает - любой запрос вернёт 401 Unauthorized. Токен - это ключ, который подтверждает, что именно вы обращаетесь к данным своего счётчика.
Пошаговая регистрация приложения
- Откройте oauth.yandex.ru и войдите под аккаунтом Яндекса.
- Нажмите «Зарегистрировать новое приложение».
- Укажите название (произвольное, например «Мои отчёты»).
- В разделе «Права» добавьте
metrika:read(чтение данных) илиmetrika:write(если нужно управлять счётчиками). - В поле «Redirect URI» укажите
https://oauth.yandex.ru/verification_code. - Нажмите «Создать» - получите
client_idиclient_secret. - Перейдите по ссылке:
https://oauth.yandex.ru/authorize?response_type=token&client_id={ВАШ_CLIENT_ID}- Яндекс выдаст токен прямо в адресной строке.
Авторская ремарка: Я сохраняю токен в
.env-файл и никогда не коммичу его в репозиторий - это азбука безопасности. ПеременнаяMETRIKA_TOKENподтягивается черезos.getenv().
Права доступа: что разрешать
Для чтения отчётов достаточно metrika:read. Если планируете импортировать данные - добавьте metrika:write. Не выдавайте лишних прав: если токен утечёт, ущерб будет минимальным.
API отчётов vs Logs API: что выбрать
Это самый частый вопрос у тех, кто только начинает работать с API Метрики. Разберём честно.
Когда достаточно API отчётов
API отчётов возвращает агрегированные данные - то же самое, что вы видите в интерфейсе Метрики в виде таблиц. Вы задаёте группировки (dimensions) и метрики (metrics), Метрика считает сама.
Подходит для:
- Ежедневных/еженедельных дашбордов по трафику и конверсиям
- Отчётов по источникам, UTM-меткам, поисковым системам
- Сравнения периодов и сегментов
- Автовыгрузки в Google Sheets или DataLens
Когда нужен Logs API
Logs API отдаёт строчку на каждый хит или визит - без агрегации. Это сотни тысяч строк в день для среднего сайта.
Подходит для:
- Построения собственной воронки на уровне пользователя
- Машинного обучения на поведенческих данных
- Хранения исторических данных в собственной БД (ClickHouse, MySQL)
- Уникальных аналитических задач, которых нет в готовых отчётах
Logs API требует технической подготовки и инфраструктуры. Маркетологу без разработчика или хотя бы опыта с Python/R браться за него сложно.
Форматы ответа: JSON и CSV
API отчётов возвращает данные в JSON (по умолчанию) или CSV. CSV удобнее для Excel и Google Sheets, JSON - для Python и автоматизации. Формат указывается в URL: stat/v1/data.csv или stat/v1/data (JSON).
Пример CSV-запроса:
https://api-metrika.yandex.net/stat/v1/data.csv?id=44147844&metrics=ym:s:avgPageViews&dimensions=ym:s:operatingSystem&limit=5
Первый запрос к API отчётов
Разберём структуру на живом примере. Хотим получить количество визитов и уникальных посетителей по поисковым системам за последние 30 дней.
Структура запроса: параметры id, metrics, dimensions
Минимальный запрос выглядит так:
GET https://api-metrika.yandex.net/stat/v1/data
?id={COUNTER_ID}
&metrics=ym:s:visits,ym:s:users
&dimensions=ym:s:searchEngineName
&date1=2026-05-01
&date2=2026-05-31
Заголовок запроса:
Authorization: OAuth {ВАШ_ТОКЕН}
Где:
id- номер счётчика Метрики (найдите в настройках счётчика)metrics- что считать:ym:s:visits(визиты),ym:s:users(посетители)dimensions- по чему группировать:ym:s:searchEngineName(поисковая система)date1/date2- период в форматеYYYY-MM-DD
Важно: В одном запросе нельзя смешивать метрики с префиксом ym:s: (визиты) и ym:pv: (хиты) - API вернёт ошибку. Об этом подробнее в разделе про типичные ошибки.
Фильтрация через filters
Хотите данные только по переходам из поиска? Добавьте параметр filters:
&filters=ym:s:trafficSourceName=='Переходы из поисковых систем'
Можно комбинировать условия через AND и OR. Например, трафик из поиска на страницы с «/blog» в URL:
&filters=ym:s:trafficSourceName=='Переходы из поисковых систем' AND ym:pv:URL=@'/blog'
Динамика по времени: bytime и сравнение сегментов
Для отслеживания динамики - отчёт с разбивкой по дням или неделям - используйте эндпоинт /stat/v1/data/bytime. Он возвращает данные в хронологическом порядке - идеально для построения графиков.
Чтобы сравнить два периода или два сегмента аудитории - /stat/v1/data/comparison. Удобно для A/B-анализа рекламных кампаний.
Практика: автоматические отчёты на Python
Теперь - к живому коду. Ниже пример выгрузки визитов по источникам трафика с сохранением в CSV.
Пример кода: выгрузка визитов по источникам
import os
import pandas as pd
import requests
TOKEN = os.getenv("METRIKA_TOKEN")
COUNTER_ID = "ВАШ_COUNTER_ID"
url = "https://api-metrika.yandex.net/stat/v1/data"
headers = {"Authorization": f"OAuth {TOKEN}"}
params = {
"id": COUNTER_ID,
"metrics": "ym:s:visits,ym:s:users",
"dimensions": "ym:s:trafficSourceName",
"date1": "2026-05-01",
"date2": "2026-05-31",
"limit": 100,
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
rows = []
for row in data.get("data", []):
source = row["dimensions"][0]["name"]
visits = row["metrics"][0]
users = row["metrics"][1]
rows.append({"source": source, "visits": visits, "users": users})
df = pd.DataFrame(rows)
df.to_csv("metrika_report.csv", index=False, encoding="utf-8-sig")
print(df)
За 20 строк получаем CSV с разбивкой по источникам. Поставьте этот скрипт в cron - и каждое утро у вас свежие данные.
Авторская ремарка: Параметр
encoding="utf-8-sig"нужен специально для корректного открытия CSV в русской Excel - без него кириллица превращается в кашу.
Подключение к BI: DataLens и Google Sheets
Данные из скрипта можно направить напрямую в BI-инструмент:
- Яндекс DataLens - подключается к Метрике нативно через официальный коннектор, без кода. ⚠️ Предположительно; точных данных об API-коннекторе нет - проверьте актуальный список на datalens.yandex.ru.
- Google Sheets - через скрипт Python + библиотеку
gspread: записываете DataFrame прямо в таблицу. - Power BI - через REST API Метрики и коннектор Web в Power BI. ⚠️ Предположительно; проверьте актуальный коннектор на learn.microsoft.com.
- ROMI center - сервис-коннектор с готовым интерфейсом для Logs API, без кода.
Типичные ошибки и ограничения
Несовместимые префиксы: как избежать ошибки
Самая частая ошибка - смешать метрики визитов ym:s: и хитов ym:pv: в одном запросе. API вернёт ошибку и никаких данных.
Правило: один запрос = один тип данных. Либо всё с ym:s:, либо всё с ym:pv:. Единственное исключение - параметр filters: там можно использовать другой префикс для фильтрации, не нарушая типа основных метрик.
Пример корректного запроса с фильтром по хиту:
metrics=ym:s:visits&dimensions=ym:s:trafficSourceName
&filters=ym:pv:URL=@'/landing'
Лимиты и обезличенность данных
У API есть ограничения на количество запросов - актуальные квоты смотрите в официальной документации: https://yandex.ru/dev/metrika/ru/intro/quotas.
Параметр contains_sensitive_data: true в ответе означает: Метрика скрыла часть данных - это случается с демографическими показателями (пол, возраст), если выборка меньше 10 посетителей. Это не ошибка - это политика обезличивания данных Яндекса.
Ещё одна ловушка: для Logs API дата окончания периода не может быть текущим днём - только вчера и раньше.
Нетривиальный факт
Мало кто знает, но в 2025 году Яндекс запустил Яндекс Тег Менеджер - теперь управлять счётчиками и кодами на сайте можно программно, в связке с API управления. Это открывает возможность автоматизировать деплой тегов на десятках сайтов одновременно - без ручного входа на каждый.
Альтернативный взгляд
Не все аналитики считают API Метрики удобным. Часть команд предпочитает строить пайплайн через сторонние ETL-сервисы (ROMI center, Supermetrics и аналоги): меньше кода, быстрее настройка, зато платно и меньше гибкости. Если API кажется сложным - начните с коннекторов, а к прямым запросам переходите, когда задачи выходят за рамки готовых шаблонов.
FAQ
Что такое API Яндекс Метрики?
API Яндекс Метрики - программный интерфейс для получения данных аналитики без ручного входа в кабинет. Позволяет автоматически выгружать отчёты, управлять счётчиками и импортировать данные из внешних систем.
Как получить OAuth-токен для API Метрики?
Зарегистрируйте приложение на oauth.yandex.ru, выберите права metrika:read, получите client_id и пройдите авторизацию по специальной ссылке. Яндекс выдаст токен в адресной строке браузера.
Чем API отчётов отличается от Logs API?
API отчётов возвращает агрегированные данные (как таблицы в интерфейсе). Logs API отдаёт сырые логи каждого хита или визита - для глубокой аналитики и хранения в собственной БД.
Бесплатен ли API Яндекс Метрики?
Да, API бесплатен для всех пользователей Яндекс Метрики. Есть ограничения на количество запросов - актуальные лимиты указаны в документации на https://yandex.ru/dev/metrika/ru/intro/quotas.
Что значит contains_sensitive_data: true в ответе API?
Метрика скрыла часть данных - обычно демографические показатели (пол, возраст), если выборка меньше 10 посетителей. Это политика конфиденциальности, не ошибка.
Почему API возвращает ошибку при запросе?
Чаще всего - смешение префиксов ym:s: и ym:pv: в одном запросе. Также проверьте OAuth-токен и права доступа.
Как автоматизировать ежедневную выгрузку отчётов?
Напишите Python-скрипт с requests: GET-запрос к /stat/v1/data, распарсите JSON, сохраните в CSV или Google Sheets через gspread. Поставьте в cron для ежедневного запуска.
Источники
- Яндекс. Введение в API Яндекс Метрики - виды API, авторизация, возможности. https://yandex.ru/dev/metrika/ru/
- Яндекс. API отчётов - введение - группировки, метрики, форматы, сегментация. https://yandex.ru/dev/metrika/ru/stat/ 2026)
- Яндекс. API Метрики - главная страница разработчика. https://yandex.ru/dev/metrika
- ROMI center. Выгрузка данных: Яндекс Метрика Logs API. https://help-ru.romi.center/vygruzka-dannyh-yandeks-metrika-logs-api
- CRAN / rym. Logs API Яндекс.Метрики - документация пакета rym для R. https://cran.r-project.org/web/packages/rym/vignettes/rym-logs-api.html
- Habr / Digital League. Работа с Яндекс Метрикой при помощи Python. https://habr.com/ru/companies/digitalleague/articles/742156/
- PromoPult / SeoNews. Все значимые обновления Яндекс Метрики: обзор за 2025 год. https://www.seonews.ru/blogs/promopult/vse-znachimye-obnovleniya-yandeks-metriki-obzor-za-2025-god/



.svg.webp)





