SEO-проекты · token

direct Статистика Яндекс Директа за неделю и месяц

Отдаёт статистику Яндекс Директа из отчётов проекта, сформированных за календарную неделю (пн–вс) или месяц (с 1-го по последнее число). Проект адресуется по ID, период — датами, хеш отчёта знать не нужно. Данные берутся из готового отчёта, Директ при запросе не вызывается: ответ быстрый, а для неизменного отчёта всегда одинаковый, включая порядок строк.

Отдаются только базовые метрики — расход с НДС, показы, клики, конверсии, средняя позиция. CTR, CPC, CR, CPA и динамику к прошлому периоду считает клиент. Отчёты формируются в разделе «Отчёты» проекта — вручную или по расписанию; в API попадают те, чей период совпадает с календарной неделей или месяцем.

Адрес
/api/v1/projects/{project_id}/direct-statistics
Авторизация
ключ API в заголовке Authorization: Bearer (или параметром token)
Ответ
JSON, ошибки — HTTP-кодами
Лимиты
не тратит; 120 запросов в минуту на ключ

Периоды со сформированным отчётом

GET /api/v1/projects/{project_id}/direct-statistics/periods

Недели и месяцы, за которые есть полный отчёт с данными Директа, от новых к старым. Отчёт попадает в список, если он сформирован после окончания периода и Директ отдал все блоки; если за период отчётов несколько, берётся последний по generated_at. Будущих и незавершённых периодов в списке нет.

Параметры query

  • project_id int обязательный в адресе
    ID проекта в Пиксель Тулс — виден в адресе страницы проекта.
  • period_type string
    Только недели или только месяцы. Без параметра — оба типа.
    month
    календарный месяц, с 1-го по последнее число
    week
    календарная неделя, с понедельника по воскресенье
  • limit int
    Сколько периодов отдать, от 1 до 200.
    По умолчанию 50

Ответ

  • meta.schema_version string
    Версия схемы ответа.
  • project_id int
    ID проекта.
  • periods[] array
    Периоды: сначала поздние; месяц — перед неделей, которая кончается тем же днём.
    Вложенные поля
    • period_type string
      month или week.
    • date_from, date_to date
      Границы периода включительно — их передают в direct-statistics.
    • report_id string
      Отчёт, из которого берутся данные.
    • generated_at datetime
      Когда отчёт сформирован, ISO 8601 с часовым поясом.

Статистика за период

GET /api/v1/projects/{project_id}/direct-statistics

Базовые метрики отчёта за неделю или месяц. Схема одинакова для недели и месяца. Отсутствие значения — null, ноль — 0: если кампании весь период стояли, метрики нулевые, это не ошибка. Числа — без форматирования. Строки таблиц — по убыванию spend_vat, при равенстве — по id.

Нет отчёта за период — 404 report_not_found; отчёт ещё формируется или Директ при генерации не отдал часть блоков — 409 report_not_ready.

Параметры query

  • project_id int обязательный в адресе
    ID проекта в Пиксель Тулс — виден в адресе страницы проекта.
  • period_type string обязательный
    Тип периода.
    month
    календарный месяц, с 1-го по последнее число
    week
    календарная неделя, с понедельника по воскресенье
  • date_from date обязательный
    Начало периода, YYYY-MM-DD: 1-е число месяца или понедельник.
  • date_to date обязательный
    Конец периода: последнее число того же месяца или воскресенье той же недели.
  • sections string
    Секции через запятую: summary, platforms, campaigns, groups, ads, dynamics, goals, regions, devices, genders, ages. Без параметра — все, кроме ads. meta отдаётся всегда.
  • include_previous bool
    Добавить summary_previous — итоги предыдущей недели или месяца.
    По умолчанию false
  • ads_page int
    Страница секции ads.
    По умолчанию 1
  • ads_per_page int
    Объявлений на странице, до 2000.
    По умолчанию 500

Ответ

  • meta object
    Отчёт и период.
    Вложенные поля
    • schema_version string
      Версия схемы ответа.
    • project_id, report_id int, string
      Проект и отчёт-источник.
    • period_type, date_from, date_to string, date
      Период.
    • generated_at datetime
      Когда отчёт сформирован, ISO 8601 с часовым поясом.
    • currency, vat_included string, bool
      RUB, true — деньги в рублях с НДС.
  • summary object
    Итоги периода — раздел 1 отчёта «Общая сводка».
    Вложенные поля
    • spend_vat number
      Расход с НДС, ₽, до 2 знаков.
    • impressions int
      Показы.
    • clicks int
      Клики.
    • conversions int
      Конверсии: по целям из настроек отчёта, без целей — как считает Директ.
  • summary_previous object|null
    Только с include_previous=true: итоги предыдущего периода с его date_from и date_to; null — отчёта за прошлый период нет.
  • platforms[] array
    Раздел 2: platform — search (Поиск) и network (РСЯ), обе всегда, + метрики.
  • campaigns[] array
    Раздел 3: id, name, platform (null — в отчёте по кампаниям площадки нет), метрики, avg_position.
    Вложенные поля
    • spend_vat number
      Расход с НДС, ₽, до 2 знаков.
    • impressions int
      Показы.
    • clicks int
      Клики.
    • conversions int
      Конверсии: по целям из настроек отчёта, без целей — как считает Директ.
    • avg_position number|null
      Средняя позиция показа, 1 знак; null, если показов нет.
  • groups[] array
    Раздел 4: id, campaign_id, name, метрики, avg_position. campaign_id — null в отчётах, сформированных до запуска API.
  • ads object
    Раздел 5, только если указан в sections: page, per_page, total, items[] — id, group_id, campaign_id, метрики, avg_position. Объявления — те, что попали в блок отчёта: сколько строк и с какими отборами, задаётся в настройках блока «Сводка по объявлениям». group_id и campaign_id — null в отчётах, сформированных до запуска API.
  • dynamics object
    Раздел 6: granularity — month; items[] — date_from, date_to, метрики, по месяцам с начала работы до конца периода. Последний месяц недельного отчёта — неполный, по date_to периода.
  • goals[] array
    Раздел 7: goal_id, name, conversions — цели из настроек отчёта; целей нет — пустой массив.
  • regions[] array
    Раздел 8: region_id, name, clicks, spend_vat. Регионы сведены до областей, как в отчёте; «Не определено» — region_id: null.
  • devices[] array
    Раздел 9: device — как в Директе, в нижнем регистре (desktop, mobile, tablet, smart_tv), clicks, spend_vat.
  • genders[] array
    Раздел 10: gender — female, male, unknown; clicks, conversions.
  • ages[] array
    Раздел 11: age_group — 0-17, 18-24, 25-34, 35-44, 45-54, 55+, unknown; clicks, conversions.

Ошибки

КодСообщениеКогда
401 unauthorized Ключ не передан или не найден.
403 forbidden У владельца ключа нет доступа к проекту.
404 project_not_found, report_not_found Проекта нет, или за период нет сформированного отчёта с данными Директа. Различаются полем error, пояснение — в detail.
409 report_not_ready Отчёт за период есть, но ещё формируется или Директ при генерации не отдал часть блоков. Повторите позже или переформируйте отчёт.
422 invalid_params Неверные параметры: в errors — причина по каждому полю, например границы не совпадают с неделей или месяцем, неизвестная секция.
429 too_many_requests Больше 120 запросов в минуту с одним ключом. Через сколько секунд повторить — в заголовке Retry-After.
500 internal Внутренняя ошибка. request_id — для обращения в поддержку.

Ключ

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

Пример ошибки параметров

HTTP/1.1 422 Unprocessable Entity

{"error":"invalid_params","errors":{"date_to":"month must be calendar: date_from is the 1st, date_to is the last day of the same month"}}
Обратная связь и помощь
Если у вас есть идеи, как улучшить данный инструмент или остались вопросы по работе с ним, напишите в нашу службу поддержки, мы обязательно вам поможем.