Чтобы выгрузить данные из Яндекс.Директа с помощью API, вам необходимо составить запрос с необходимым количеством полей. Среди них – стандартный перечень параметров и показателей рекламных кампаний (показы, клики, расход, CTR, средняя цена клика и т.д. в разрезе условия показа, названия площадки, региона таргетинга, типа устройства, пола, возраста и др.).
Вполне вероятно, что вы захотите выгрузить статистику с привязкой к конкретной конверсии или нескольким целям Яндекс.Метрики. Тогда вам необходимо использовать поле Goals с идентификатором заданной цели и моделью атрибуции.
Идентификаторы целей
Goals — идентификаторы целей Яндекс Метрики, по которым требуется получить статистику. Задается не более 10 элементов в массиве.
Если параметр указан, то в отчете вместо полей ConversionRate, Conversions, CostPerConversion, GoalsRoi и Revenue с агрегированными данными по всем целям будут выведены аналогичные поля с именами вида <поле>_<id_цели>_<модель_атрибуции> и данными по каждой цели в отдельности.
Как это выглядит на практике? Когда вы переходите в Мастер отчетов в интерфейсе Яндекс.Директа, вам доступен выбор целей:
Вы можете выбрать одну цель, две, несколько или вообще оставить выбор без изменений. В этом случае статистика будет выгружаться по всем конверсиям, как будто вы указали поле Conversions:
Если статистика выгружается по одной цели, то отчет будет выглядеть так:
Если целей несколько, то так:
И у каждой такой цели – свой уникальный идентификатор. Когда вы захотите выгрузить данные по API Директа по конкретным конверсиям, вам необходимо будет задать не поле Conversions, а идентификаторы целей в параметре Goals.
Чтобы узнать идентификатор конкретной цели, вам необходимо перейти в счетчик Яндекс.Метрики, в раздел Цели:
На странице будут отображаться все ваши цели с номерами:
Это и есть идентификаторы целей, которые вы будете задавать в теле запроса:
# Тело запроса body = { "params": { "SelectionCriteria": { "DateFrom": date1, "DateTo": date2 }, "Goals": [ "GoalID1", "GoalID2" ], "AttributionModels": [ "LSC" ], # Необходимые поля в отчете "FieldNames": [ "Date", "CampaignName", "Impressions", "Clicks", "Cost" ], "ReportName": "Request1", "Page": { "Limit": 10000000 }, "ReportType": "CUSTOM_REPORT", "DateRangeType": "CUSTOM_DATE", "Format": "TSV", "IncludeVAT": "YES", } }
, где:
- GoalID1, GoaldID2 – идентификаторы ваших целей из Яндекс.Метрики (не более 10 элементов);
- LSC – выбранная модель атрибуции.
Возможные значения:
- FC – первый переход;
- LC – последний переход;
- LSC – последний значимый переход;
- LYDC – последний переход из Яндекс Директа.
Значение по умолчанию – LYDC. Если указано несколько моделей атрибуции, данные будут выведены по каждой модели в отдельности.
После того, как вы запустите программу, на вашем компьютере сохранится новый файл, в котором по всем заданным целям будут выведены аналогичные поля с именами вида <поле>_<id_цели>_<модель_атрибуции> и данными по каждой цели в отдельности:
Имея данные по количеству конверсий, а также статистику по кликам и расходам, вы сможете создать дополнительные поля и рассчитать конверсию сайта по каждой цели, а также итоговую стоимость конверсии.
Идентификаторы целей для Ecommerce
Если в Яндекс.Метрике вы настроили электронную торговлю и желаете выгрузить статистику с привязкой к данным целям, вам также необходимо узнать их идентификаторы для составления запроса к API Директа.
Однако в самом интерфейсе Яндекс.Метрики в разделе Цели идентификаторы целей по Ecommerce в общем списке отображаться не будут, хоть они и присутствуют в Мастере отчетов Яндекс.Директа и доступны для выбора:
Как узнать идентификаторы целей для Ecommerce? В API Live версии 4 существует метод GetRetargetingGoals. Он устроен таким образом, что все запросы JSON имеют адрес https://api.direct.yandex.ru/live/v4/json/, а нужный метод указывается в теле запроса.
Для этого вы можете воспользоваться следующим кодом программы:
import json import requests import pandas as pd # Адрес сервиса Reports для отправки JSON-запросов ReportsURL = 'https://api.direct.yandex.ru/live/v4/json/' # OAuth-токен пользователя, от имени которого будут выполняться запросы token = 'значение_вашего_токена' # Логин клиента рекламного агентства # Обязательный параметр, если запросы выполняются от имени рекламного агентства clientLogin = 'логин_вашего_яндекс_директа' # Создание тела запроса body = { "method": "GetRetargetingGoals", "param": { "Logins": [clientLogin] }, "locale": "ru", "token": token } body = json.dumps(body, ensure_ascii=False).encode('utf8') req = requests.post(ReportsURL, data=body) #Датафрейм df = pd.DataFrame(req.json()['data']) #Датафрейм, который содержит в названии цели слово "Ecommerce" df2 = df[df['Name'].str.contains ("Ecommerce")] print(df2)
Так как в вашем аккаунте может быть десятки и сотни разных целей, в отдельном датафрейме df2 благодаря дополнительному условию будут выведены только те, которые относятся к Ecommerce.
Создайте отдельный Python-файл в вашем проекте, вставьте туда вышеприведенный код и запустите программу. Не забудьте добавить ваш токен доступа и логин Яндекс.Директа в соответствующие поля token и clientLogin. О том, как это сделать, подробно описано в нашей онлайн-документации.
Запустив выполнение программы, вы увидите результат выполнения запроса с идентификаторами целей Ecommerce. Например, вот так это будет выглядеть для проекта в PyCharm:
Для соответствующих целей выпишите нужные значения из столбца GoalID и используйте их в теле запроса основной программы.
Но есть и другой, более простой способ узнать идентификаторы целей для Ecommerce. Сделать это можно прямо при выборе конкретной цели в интерфейсе Яндекс.Директа, в Мастере отчетов. Для этого откройте список Данные по целям и выберите нужную цель. Выделив ее, нажмите правой кнопкой мыши и вызовите через контекстное меню Просмотреть код:
Вам откроется консоль разработчика, в которой подсветится код выделенного вами элемента. Найдите в коде упоминание про название цели в коде, содержащем text. Рядом с названием будет отображаться параметр id, а через двоеточие значение идентификатора цели для Ecommerce:
Например, для Ecommerce: добавление в корзину идентификатор цели равен 194686789. Он совпадает с идентификатором, выгруженным другим способом по API (см. выше).
Точно таким же способом вы можете найти идентификатор для абсолютно любой цели из списка, не используя интерфейс Яндекс.Метрики или специальный запрос API.