Перейти к содержимому

17 мин чтения100CTR

API Яндекс Метрики: как получить токен, выгружать отчёты и сырые данные

Какие API есть у Метрики и для чего каждый, как получить OAuth-токен и нужные права, квоты, примеры запросов к API отчётов и Logs API, загрузка офлайн-конверсий и выгрузка без кода.

Обложка статьи «API Яндекс Метрики: как получить токен, выгружать отчёты и сырые данные»

API Яндекс Метрики — бесплатный набор интерфейсов, через которые программа забирает статистику счётчика, сырые данные о визитах и событиях, меняет настройки счётчика и загружает в Метрику офлайн-данные. Для любого запроса нужны номер счётчика, доступ к нему у вашего логина и OAuth-токен: его получают за пять минут на oauth.yandex.ru, заявку на доступ, как в Директе, подавать не нужно. Агрегированные отчёты отдаёт API отчётов, построчные данные — Logs API, а для разовых выгрузок и дашбордов хватает экспорта из интерфейса и коннектора DataLens.

Какие API есть у Метрики

Все API работают по адресу https://api-metrika.yandex.net и принимают токен в заголовке. Ответ по умолчанию приходит в JSON, API отчётов умеет отдавать и CSV.

API Что делает Адрес запросов Нужный доступ токена
API отчётов (Reporting API) Агрегированная статистика: визиты, посетители, конверсии, источники, UTM-метки, Директ, электронная коммерция /stat/v1/data metrika:read
Logs API Неагрегированные данные: каждая строка — отдельный визит или событие /management/v1/counter/{id}/logrequests metrika:read
API управления (Management API) Счётчики, цели, фильтры, сегменты, доступы, представители, метки /management/v1/... metrika:read на чтение, metrika:write на изменения
API импорта данных Офлайн-конверсии, звонки, чаты, данные из CRM, расходы, параметры посетителей, Measurement Protocol /management/v1/counter/{id}/... metrika:write или отдельные права на загрузку

Есть ещё API, совместимый с Google Analytics Core Reporting API (раздел /analytics/): он нужен, если у вас уже есть скрипты под старый формат Google Analytics. Новые интеграции строят на API отчётов.

Как выбрать:

  • нужны цифры как в отчётах — посещаемость по дням, конверсии по кампаниям, сводка для дашборда — API отчётов;
  • нужна своя модель атрибуции, склейка с CRM, когортный анализ — Logs API и собственное хранилище (ClickHouse, PostgreSQL);
  • нужно создать 30 одинаковых целей на 30 счетчиках или раздать доступы — API управления;
  • нужно передать в Метрику оплаты из CRM или звонки — API импорта данных.

Какие отчёты есть в интерфейсе и как их читать, разобрано в статье «Отчёты в Яндекс Метрике».

Что подготовить до первого запроса

  1. Номер счётчика. Он передаётся в каждом запросе (ids в API отчётов, {counterId} в адресе остальных методов). Где его найти, описано в статье «Как узнать номер счётчика Яндекс Метрики».
  2. Логин с доступом к счётчику. Подойдёт владелец или гостевой доступ. Для чтения отчётов и Logs API хватает уровня «Только просмотр», для API управления нужно «Редактирование». Для скриптов удобно завести отдельный логин и выдать ему гостевой доступ: так токен не привязан к личному аккаунту сотрудника, а при увольнении подрядчика вы отзываете доступ одной кнопкой. Как выдать и отозвать доступ, разобрано в статье «Как дать доступ к Яндекс Метрике».
  3. Приложение в Яндекс OAuth и токен — ниже.

Если на логин наложен фильтр доступа (уровень «Аналитика» с ограничением данных), фильтр действует и в API, а Logs API такому пользователю закрыт.

Как получить OAuth-токен Яндекс Метрики

Токен — строка, по которой Метрика понимает, от имени какого логина и с какими правами работает программа. Пароль от аккаунта скрипту не нужен.

Регистрация приложения

  1. Войдите в Яндекс под любым логином и откройте oauth.yandex.ru → создание приложения.
  2. Выберите вариант Для доступа к API или отладки.
  3. Заполните поля:
    • название — любое, его увидит пользователь на странице выдачи доступа;
    • почта для связи;
    • доступ к данным — найдите Яндекс Метрику и отметьте нужные права (таблица ниже).
  4. Нажмите Создать приложение и скопируйте ClientID.

Тот же порядок шагов приведён в документации API Метрики, в разделе «Авторизация».

Право Что разрешает
metrika:read Получать статистику, читать параметры своих и доверенных счётчиков, список счётчиков
metrika:write Создавать счётчики, менять их параметры, загружать любые данные
metrika:offline_data Загружать офлайн-данные: данные из CRM, офлайн-конверсии, звонки
metrika:expenses Загружать расходы
metrika:user_params Загружать параметры посетителей

Три последних права не нужны, если отмечено metrika:write. Для выгрузки отчётов достаточно одного metrika:read: лишние права увеличивают ущерб при утечке токена. Если вы работаете под логином организации в Яндекс ID, добавьте право passport:business — без него токен от имени организации не выдадут.

Получение токена

  1. Подставьте ClientID в ссылку https://oauth.yandex.ru/authorize?response_type=token&client_id=ВАШ_CLIENTID.
  2. Откройте её в браузере, где вы вошли под логином с доступом к счётчику. Владельцем токена становится тот, кто нажал «Разрешить», а не создатель приложения.
  3. Нажмите Разрешить и скопируйте токен со страницы.

Если вместо токена появилась ошибка про адрес перенаправления, добавьте в настройках приложения Redirect URI https://oauth.yandex.ru/verification_code и повторите шаги. Сохраните токен сразу: в кабинете Яндекс OAuth выданные токены не показываются, при потере его просто получают заново.

Такой токен, полученный вручную, подходит для своих скриптов и внутренних дашбордов. Если вы делаете сервис для чужих счётчиков, приложение должно само отправлять пользователя на страницу доступа и получать токен через Redirect URI — схема описана в документации Яндекс ID. Порядок регистрации приложения такой же, как у API Директа; разница в том, что Директ дополнительно требует заявку на доступ, подробнее — в статье «API Яндекс Директа».

Сколько живёт токен и когда перестаёт работать

Срок жизни зависит от прав приложения: при регистрации Яндекс показывает минимальное время, например «не менее, чем 1 год». Продлеваемый токен продлевается при каждом использовании, ограниченный истекает в срок. Раньше срока токены отзываются, если владелец:

  • сменил пароль;
  • нажал «Выйти на всех устройствах»;
  • отключил доступ приложения в Яндекс ID на странице «Доступы к данным».

Токен даёт доступ ко всем счётчикам владельца в пределах выбранных прав. Храните его в переменных окружения или менеджере секретов, а не в коде, общих таблицах и репозиториях.

Как передать токен в запросе

Токен передаётся в каждом запросе в HTTP-заголовке:

Authorization: OAuth ТОКЕН

В старых инструкциях токен ставят в адрес параметром oauth_token. Так делать не стоит: адреса оседают в логах серверов, истории браузера и аналитике, и токен утекает вместе с ними.

Проверить токен проще всего запросом списка счётчиков:

curl -H "Authorization: OAuth ТОКЕН" \
  https://api-metrika.yandex.net/management/v1/counters

В ответе придут счётчики, доступные владельцу токена, с полем permission: own — свой, view — только просмотр, edit — редактирование, analyst — аналитика. Ответ 401 значит, что заголовок не передан или записан неверно, 403 — у приложения нет нужного права, токен выдан не тому логину или у логина нет доступа к счётчику.

Квоты и ограничения API

Ограничение Квота Когда снимается блокировка
Запросов с одного IP-адреса 30 в секунду (Logs API — 10 в секунду) Когда за последнюю секунду запросов станет меньше порога
Параллельных запросов одного логина 3 Когда одновременных запросов станет меньше 3
Запросов одного логина в сутки 5000 В 00:00 по Гринвичу (03:00 по Москве)
Запросов одного логина к API отчётов 200 за 5 минут Через 5 минут после превышения
Добавление представителей к счётчику 3 в час В начале следующего часа

Лимит 200 запросов за 5 минут к /stat/v1/data действует с 17 декабря 2025 года: скрипты, которые раньше перебирали сотни комбинаций параметров без пауз, теперь упираются в него. Квоты считаются отдельно для групп методов: чтение настроек (client_read), запись настроек (client_write) и получение отчётов (report_read).

При превышении API отвечает HTTP-статусом 429 Too Many Requests, а в теле указывает тип квоты, например quota_requests_by_uid (суточный лимит) или quota_parallel_requests (параллельные запросы). Повторяйте запрос с растущей паузой и не запускайте больше трёх потоков на один логин.

Ограничения отдельных API:

  • API отчётов: до 20 метрик и 10 группировок в запросе, до 100 000 строк на страницу, в фильтре — до 20 условий и до 10 000 символов;
  • Logs API: период одного запроса — не больше года, список полей — до 3000 символов, данные за текущий день недоступны, суммарный объём подготовленных и неудалённых логов — 10 ГБ на счётчик;
  • офлайн-конверсии: файл до 1 ГБ в UTF-8.

В платном пакете Метрика Про суточный лимит API отчётов поднимается до 20 000 запросов, объём Logs API — до 100 ГБ, к счётчику можно выдавать до 60 доступов в час.

API отчётов: как получить данные

Запрос к API отчётов собирается из счётчика, периода, метрик (числовых показателей) и группировок (разрезов, по которым делятся строки). Метрики и группировки визитов начинаются с ym:s:, просмотров — с ym:pv:; смешивать эти префиксы в одном запросе нельзя, исключение — фильтры.

Параметр Что задаёт Пример
ids Номер счётчика, можно несколько через запятую ids=12345678
metrics Метрики через запятую, до 20 ym:s:visits,ym:s:users
dimensions Группировки через запятую, до 10 ym:s:date
date1, date2 Период: дата ГГГГ-ММ-ДД или today, yesterday, NdaysAgo. По умолчанию — последние 7 дней, включая сегодня date1=30daysAgo&date2=yesterday
filters Сегментация ym:s:isRobot=='No'
preset Готовый шаблон отчёта preset=sources_summary
sort Сортировка, - перед полем — по убыванию sort=-ym:s:visits
limit, offset Строк на странице (по умолчанию 100, максимум 100 000) и номер первой строки (с 1) limit=10000&offset=10001
accuracy Размер выборки: low, medium (по умолчанию), high, full или доля от 0 до 1 accuracy=full
attribution Модель атрибуции для группировок с <attribution> attribution=last
lang Язык; нужен lang=ru, если в фильтре русские значения lang=ru

Кроме таблицы (/stat/v1/data) есть ещё четыре вида отчёта: /data/bytime — данные по периодам для графиков, /data/drilldown — одна ветка древовидного отчёта, /data/comparison и /data/comparison/drilldown — сравнение двух сегментов. Чтобы получить CSV вместо JSON, допишите расширение: /stat/v1/data.csv.

Пример: визиты по источникам за 30 дней

curl -G "https://api-metrika.yandex.net/stat/v1/data" \
  -H "Authorization: OAuth ТОКЕН" \
  --data-urlencode "ids=12345678" \
  --data-urlencode "metrics=ym:s:visits,ym:s:users,ym:s:bounceRate" \
  --data-urlencode "dimensions=ym:s:<attribution>TrafficSource" \
  --data-urlencode "attribution=last" \
  --data-urlencode "date1=30daysAgo" \
  --data-urlencode "date2=yesterday"

--data-urlencode кодирует угловые скобки и кавычки: без кодирования запросы с <attribution> и фильтрами часто возвращают ошибку параметра. В ответе:

  • data — строки: значения группировок в dimensions, значения метрик в metrics в том порядке, в каком вы их перечислили;
  • totals — итоги по всем строкам;
  • total_rows — сколько всего строк, нужен для постраничной выгрузки;
  • sampled и sample_share — было ли семплирование и по какой доле данных посчитан ответ.

Пример: конверсия в цель по UTM-меткам

Метрики целей параметризуются номером цели: ym:s:goal<goal_id>visits — целевые визиты, ym:s:goal<goal_id>conversionRate — конверсия. Номер цели передают отдельным параметром goal_id или подставляют прямо в название: ym:s:goal30606879conversionRate.

curl -G "https://api-metrika.yandex.net/stat/v1/data" \
  -H "Authorization: OAuth ТОКЕН" \
  --data-urlencode "ids=12345678" \
  --data-urlencode "metrics=ym:s:visits,ym:s:goal<goal_id>visits,ym:s:goal<goal_id>conversionRate" \
  --data-urlencode "goal_id=30606879" \
  --data-urlencode "dimensions=ym:s:<attribution>UTMSource,ym:s:<attribution>UTMCampaign" \
  --data-urlencode "attribution=last" \
  --data-urlencode "date1=2026-09-01" \
  --data-urlencode "date2=2026-09-30" \
  --data-urlencode "sort=-ym:s:visits" \
  --data-urlencode "limit=1000"

Получится таблица «источник — кампания — визиты — целевые визиты — конверсия». Номер цели виден в списке целей счётчика или в ответе метода GET /management/v1/counter/{id}/goals. Чтобы метки в отчёте были чистыми, собирайте ссылки в генераторе UTM-меток.

Пример на Python с постраничной выгрузкой

import os
import requests

TOKEN = os.environ["METRIKA_TOKEN"]
URL = "https://api-metrika.yandex.net/stat/v1/data"
params = {
    "ids": 12345678,
    "metrics": "ym:s:visits,ym:s:pageviews",
    "dimensions": "ym:s:date,ym:s:startURL",
    "date1": "2026-09-01",
    "date2": "2026-09-30",
    "limit": 10000,
    "offset": 1,
}
rows = []
while True:
    r = requests.get(URL, params=params,
                     headers={"Authorization": f"OAuth {TOKEN}"}, timeout=120)
    r.raise_for_status()
    page = r.json()
    rows += page["data"]
    params["offset"] += params["limit"]
    if params["offset"] > page["total_rows"]:
        break
print(len(rows), "строк, семплирование:", page["sampled"])

Скрипт берёт токен из переменной окружения и забирает данные страницами по 10 000 строк, пока не дойдёт до total_rows. Для регулярной выгрузки сохраняйте результат в базу и запрашивайте только новые дни: так вы не тратите квоту на повторную загрузку старых данных.

Семплирование и атрибуция в API

На больших объёмах Метрика считает отчёт по части визитов и умножает результат. В API этим управляет параметр accuracy: full запрашивает все данные. Если в ответе всё равно sampled: true, сократите период или разбейте выгрузку по дням; гарантированно полные данные без семплирования даёт пакет Метрика Про. Отчёты по Директу считаются по полным данным.

С 25 июня 2026 года старые модели атрибуции в API заменяются ближайшими аналогами: «Первый переход» — на «Первый переход кросс-девайс», «Последний значимый переход» — на кросс-девайс-версию, «Последний переход из Директа» — на автоматическую атрибуцию. Актуальные значения параметра attribution: last, cross_device_first, cross_device_last_significant, automatic. Если в старом скрипте стоит lastsign или first, цифры по источникам могли измениться без ошибок в коде — проверьте модель и сверяйте данные с интерфейсом по одной и той же модели.

Logs API: выгрузка сырых данных

Logs API отдаёт данные построчно: одна строка — один визит (source=visits) или одно событие, например просмотр страницы (source=hits). Такие данные нужны, чтобы считать свою атрибуцию, связывать визиты с заказами в CRM по ClientID и строить отчёты, которых нет в интерфейсе. Фильтровать данные на стороне API нельзя: выгружается всё за период, отбор делают уже в своей базе.

Выгрузка идёт асинхронно, в пять шагов.

  1. Оцените запрос. GET /management/v1/counter/{id}/logrequests/evaluate с теми же параметрами, что и при создании. Если в ответе possible: false, сократите период: поле max_possible_day_quantity подскажет, сколько дней можно выгрузить за раз.

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

    curl -X POST -G "https://api-metrika.yandex.net/management/v1/counter/12345678/logrequests" \
      -H "Authorization: OAuth ТОКЕН" \
      --data-urlencode "date1=2026-09-01" \
      --data-urlencode "date2=2026-09-30" \
      --data-urlencode "source=visits" \
      --data-urlencode "fields=ym:s:visitID,ym:s:dateTime,ym:s:clientID,ym:s:startURL,ym:s:pageViews,ym:s:isNewUser,ym:s:goalsID"
    

    Сохраните request_id из ответа. date2 не может быть сегодняшним днём.

  3. Дождитесь обработки. Проверяйте статус запросом GET /management/v1/counter/{id}/logrequest/{request_id} раз в несколько минут. Статус created — запрос в очереди, processed — готов, processing_failed — ошибка, создайте запрос заново.

  4. Скачайте части. В готовом запросе есть массив parts; каждую часть забирают отдельно: GET .../logrequest/{request_id}/part/{part_number}/download.

  5. Очистите лог. POST .../logrequest/{request_id}/clean. Подготовленные логи занимают квоту в 10 ГБ на счётчик, пока их не удалят, и следующий большой запрос может не пройти.

Особенности данных:

  • в среднем 99% визитов завершаются в течение трёх дней, поэтому данные за последние дни ещё дополняются — перевыгружайте последние трое суток;
  • часть денежных полей хранится с множителем: ym:s:goalsPrice — ×1000, ym:s:productsPrice — ×1 000 000;
  • цифры Logs API и интерфейса могут расходиться: интерфейс применяет дополнительную обработку данных;
  • поле ym:s:isRobotPro с уточнённой оценкой роботности доступно только в Метрике Про.

Хранить логи удобнее всего в ClickHouse — у Яндекса есть инструкция по связке Logs API с ClickHouse и визуализации в DataLens. Если нужен поток данных почти в реальном времени, в Метрике Про есть Data Streaming: визиты и события попадают в ClickHouse в Yandex Cloud с задержкой до 15 минут, формат данных отличается от Logs API.

API управления: что автоматизировать

API управления повторяет настройки из интерфейса Метрики. Через него удобно:

  • получать список счётчиков и их статус кода (GET /management/v1/counters);
  • создавать одинаковые цели на многих счётчиках (POST /management/v1/counter/{id}/goals);
  • добавлять фильтры и операции, например исключать внутренний трафик по IP;
  • создавать сегменты, которые потом используются в отчётах и рекламе;
  • выдавать и отзывать гостевые доступы, добавлять представителей.

Пример: создать цель «Целевое событие» с идентификатором order_confirmed.

curl -X POST "https://api-metrika.yandex.net/management/v1/counter/12345678/goals" \
  -H "Authorization: OAuth ТОКЕН" \
  -H "Content-Type: application/json" \
  -d '{"goal":{"name":"Заказ подтверждён","type":"action","conditions":[{"type":"exact","url":"order_confirmed"}]}}'

В ответе придёт объект цели с присвоенным id. Для изменений токену нужно право metrika:write, а логину — уровень доступа «Редактирование».

Загрузка офлайн-конверсий через API

Офлайн-конверсии — действия клиента вне сайта: оплата в офисе, подтверждённая сделка в CRM, выкуп заказа. Загруженные в Метрику, они появляются в отчётах как обычная цель и используются в Директе для оптимизации по реальным продажам.

  1. Создайте цель типа «Целевое событие» с условием «совпадает», например order_paid. Можно взять существующую цель, если конверсия бывает и на сайте, и вне его.

  2. Соберите идентификаторы. Чтобы конверсия привязалась к визиту, у каждой строки должен быть хотя бы один из них: ClientId — идентификатор посетителя в Метрике (его сохраняют в CRM с заявкой через метод getClientID), UserId — ваш идентификатор посетителя, переданный в Метрику методом setUserID, Yclid — идентификатор клика в Директе, PurchaseId — номер покупки из электронной коммерции.

  3. Сформируйте CSV в UTF-8. Обязательные колонки — идентификатор, Target (идентификатор цели) и DateTime (время конверсии в Unix-формате, в секундах, в часовом поясе счётчика; только прошедшее время). Необязательные — Price (ценность, разделитель — точка) и Currency (код валюты, например RUB).

    ClientId,Target,DateTime,Price,Currency
    1712345678123456789,order_paid,1790856000,15000,RUB
    
  4. Загрузите файл:

    curl -X POST "https://api-metrika.yandex.net/management/v1/counter/12345678/offline_conversions/upload?client_id_type=CLIENT_ID" \
      -H "Authorization: OAuth ТОКЕН" \
      -F "file=@conversions.csv"
    

    Параметр client_id_type указывает тип идентификатора: CLIENT_ID, USER_ID или YCLID. Параметр type задаёт вид загрузки: BASIC (по умолчанию), CALLS для звонков, CHATS для чатов.

  5. Проверьте статус по id загрузки из ответа: GET /management/v1/counter/{id}/offline_conversions/uploading/{uploading_id}. Данные появляются в отчётах в течение трёх часов, причины, по которым строки не привязались, видны в отчёте «Офлайн-конверсии».

Конверсия привязывается к визиту, только если между последним визитом посетителя и обработкой файла прошло не больше 21 дня. Поэтому выгрузку из CRM ставят по расписанию — раз в день или чаще, а не раз в месяц. Как устроены звонки и офлайн-конверсии в интерфейсе, разобрано в статье «Звонки и офлайн-конверсии в Яндекс Метрике».

Как выгружать данные без программирования

Писать код нужно не всегда. Варианты по возрастанию сложности:

Способ Что даёт Ограничения
Экспорт из отчёта PDF, XLSX или CSV одной кнопкой До 100 000 строк, вручную
Отчёты по расписанию XLSX на почту раз в день, неделю или месяц До 100 отчётов на счётчик, фиксированные периоды
Подключение Метрики в DataLens Дашборды и чарты поверх API отчётов, токен выдаётся кнопкой «Получить токен» Счётчики из разных аккаунтов в одном подключении не объединить, публичные ссылки на такие дашборды не работают, действуют квоты API
Power Query в Excel Таблица, которая обновляется из API по кнопке Токен хранится в файле — не пересылайте его наружу
Сервисы интеграций (например, Albato) Передача офлайн-конверсий и данных из CRM по готовым сценариям Тарифы сервиса, токен хранится у третьей стороны
Data Streaming в Метрике Про Сырые данные в ClickHouse в Yandex Cloud почти в реальном времени Платный пакет

DataLens — BI-сервис Яндекса и самый короткий путь к дашборду. Создайте подключение «Метрика», нажмите «Получить токен», выберите счётчики и точность (уровень семплирования). Можно оставить галочку автоматического создания дашборда — DataLens сразу соберёт стандартный набор чартов. Если счётчик принадлежит другому логину, получите токен под ним по ссылке из справки DataLens и вставьте вручную.

Power Query. В Excel выберите «Данные» → «Из Интернета» → «Дополнительно», вставьте адрес запроса к /stat/v1/data.csv с нужными параметрами, а в заголовках HTTP-запроса добавьте Authorization со значением OAuth ТОКЕН. Таблица будет обновляться по кнопке «Обновить всё».

Частые ошибки

Ошибка Причина Что сделать
401 unauthorized Нет заголовка Authorization или он записан неверно Передавайте Authorization: OAuth ТОКЕН в каждом запросе
403 access_denied У приложения нет metrika:read или metrika:write, токен выдан не тому логину или у логина нет доступа к счётчику Проверить права приложения, перевыпустить токен под логином с доступом
403 invalid_token Токен истёк или отозван после смены пароля Получить новый токен
400 invalid_parameter Опечатка в названии метрики, смешаны ym:s: и ym:pv:, не закодированы < > Свериться со справочником метрик, кодировать параметры
429 quota_... Превышена квота Добавить паузы, не больше трёх параллельных запросов, хранить уже выгруженные данные
504 timeout или too_much_rows Слишком тяжёлый запрос Сократить период, число группировок, выгружать по дням
Цифры не совпадают с интерфейсом Разные модели атрибуции, семплирование, роботы в выборке Задать одинаковые attribution и accuracy, проверить sampled

Частые вопросы

Сколько стоит API Яндекс Метрики?

API бесплатен, как и сама Метрика. Платный пакет Метрика Про нужен только тем, кому не хватает стандартных квот или нужны данные без семплирования и потоковая выгрузка.

Нужна ли заявка на доступ к API Метрики?

Нет. В отличие от API Директа, достаточно зарегистрировать приложение в Яндекс OAuth, получить токен и иметь доступ к счётчику.

Где посмотреть документацию API Яндекс Метрики?

Официальная документация с описанием всех методов, метрик, группировок и примерами — на yandex.ru/dev/metrika. В справке Метрики описаны те же отчёты со стороны интерфейса.

Можно ли выгрузить данные за сегодня?

Через API отчётов — да, date2=today работает, но данные за текущий день неполные. Через Logs API — нет: последний доступный день — вчерашний.

Как выгрузить данные сразу по нескольким счётчикам?

В API отчётов перечислите номера в ids через запятую. Если нужны цифры по каждому сайту отдельно, надёжнее отправить по запросу на счётчик и объединить результаты у себя. Logs API работает с одним счётчиком за запрос.

Можно ли получить через API данные Вебвизора?

Нет, записи визитов через API не выгружаются. Logs API отдаёт события и просмотры страниц, а записи сессий смотрят в интерфейсе, где они хранятся 15 дней.

Как выдать скрипту доступ только на чтение?

Зарегистрируйте приложение с одним правом metrika:read и получите токен под логином с гостевым доступом «Только просмотр». Такой токен не сможет менять настройки, даже если его украдут.

Чем API Метрики отличается от API Директа?

API Директа управляет кампаниями и отдаёт рекламную статистику — показы, клики, расход. API Метрики отдаёт поведение на сайте и конверсии. Расход и конверсии в одном отчёте можно получить в Метрике: группировки и метрики Директа доступны в API отчётов после того, как счётчик связан с кампаниями.

Соберите кампанию Директа за один проход

Группы фраз, объявления с подстановкой ключа и выгрузка для Директ Коммандера — в одном проекте 100CTR.