Продвижение сайтов / Яндекс директ api документация

Взаимодействие с API Директа. Получаем статистику.

Яндекс директ api документация один

Для автоматизации работы с Яндекс.Директ все сервисы используют доступ через API. Это позволяет получать доступ ко всему функционалу Директа, от получения статистики и управления ставками до создания рекламных кампаний с нуля. Для использования API Директа не обязательно быть профессиональным программистом, достаточно базовых знаний в PHP или Python. Также желательно разобраться, как работают инструмент cURL и формат обмена данными JSON (это не сложно). Наглядный пример взаимодействия с API Директа – "Директ Коммандер".

Чтобы можно было попробовать API на практике, Яндекс предоставляет тестовый доступ к песочнице, которая имитирует работающие рекламные кампании. На которых можно испытать работу своих скриптов.

Получить "боевой" доступ к реальным рекламным кампаниям не сложно, нужно заполнить заявку и приложить листинг работающего скрипта.

В этой статье я расскажу об использовании API Яндекс.Директ для получения статистики при помощи PHP, а также о регистрации приложения и получении тестового доступа.

С чего начать?

1. Регистрируем приложение

Чтобы зарегистрировать своё приложение для работы с API, войдите в свой аккаунт на Яндексе и перейдите по ссылке https://oauth.yandex.ru/, нажмите кнопку "Зарегистрировать новое приложение".

Яндекс директ api документация два

Вы попадёте на страницу "Создание приложения". Здесь нужно заполнить все поля, отмеченные звёздочкой (*), остальное не обязательно. В поле "Название приложения" пишем любое название, например "Первое тестовое приложение", далее в блоке "Платформы" отмечаем галкой "Веб-сервисы", для заполнения поля "Callback URI #1", необходимо кликнуть по ссылке "Подставить URL для разработки", в блоке "Доступы" выбираем "Яндекс.Директ" и ставим галку "Использование API Яндекс.Директа"

Яндекс директ api документация триЯндекс директ api документация четыре

Пролистываем страницу до конца, нажимаем кнопку "Создать приложение". После этого откроется страница с названием и параметрами нового приложения. Сразу же скопируйте и сохраните ID нового приложения. Это потребуется в дальнейшем.

Яндекс директ api документация пять

Поздравляю! Вы зарегистрировали своё первое приложение в Яндекс.OAuth !

OAuth-авторизация позволяет приложению работать с сервисами Яндекса от имени пользователя без авторизации по паролю (для этого используется специальный токен). Уровень доступа для приложения определяется пользователем.

2. Получаем доступ к API

Чтобы приложение могло использовать API Яндекс.Директа, ему необходимо получить доступ к этому инструменту.

Войдите в Яндекс.Директ под тем же логином, на который зарегистрировано приложение в OAuth. Пролистайте страницу до самого низа, найдите блок "Управление кампаниями", перейдите по ссылке API.

Яндекс директ api документация шесть

На открывшейся странице переходим по ссылке "Получить доступ к API"

Яндекс директ api документация семь

Далее соглашаемся с Условиями использования. После этого откроется страница "Настройки API" c активной вкладкой "Параметры", где нужно заполнить "Координаты технического специалиста по работе с API Директа" — Контактное лицо и Эл. Почта. На вкладке "Мои приложения" можно увидеть, какие приложения имеют доступ к аккаунту Яндекс.Директ через API на текущий момент. Например, если вы использовали Директ.Коммандер для работы с рекламными кампаниями, то увидите его в списке этих приложений.

Яндекс директ api документация восемь

Чтобы открыть доступ нашему приложению к API, переходим на вкладку "Мои заявки" и создаём новую заявку на тестовый доступ.

В заявке необходимо заполнить все поля, отмеченные красной звёздочкой (*).

Выбираем, ранее зарегистрированное приложение из списка, указываем e-mail для службы поддержки Яндекса, в специфике работы можно выбрать Прямого рекламодателя, предназначением работы программы будет автоматизация регулярной работы с кампаниями в Директе. В качестве новых возможностей укажите "Ежедневно снимает новые показатели статистики", а ожидаемой датой разработки можно установить любой день.

Яндекс директ api документация девятьЯндекс директ api документация десять

Остаётся согласиться с условиями Пользовательского соглашения и отправить заявку. После одобрения доступа к API (это займёт менее часа), можно начинать разработку приложения. Статус заявки будет отображаться на вкладке "Мои приложения".

3. Получаем статистику Яндекс.Директ при помощи PHP

Для доступа к рекламным кампаниям через API потребуется токен разработчика. Чтобы его получить (только после одобрения заявки на доступ!) переходим по ссылке

Копируем ссылку, вставляем в адресную строку браузера, копируем ID приложения, он отображается на вкладке "Мои заявки". Переходим по созданной ссылке. Загрузится страница с подтверждением доступа, где необходимо нажать кнопку "Разрешить".

На следующем экране отобразится тот самый авторизационный токен, который нужно сохранить.

Для работы с тестовым доступом обязательно потребуется доступ к песочнице. Иначе, API Директа будет возвращать ошибку.

Переходим на вкладку "Песочница", и включаем её.

Теперь можно приступать к написанию кода для запросов к API Яндекс.Директ на PHP

Общаться с API будем через cURL на языке JSON-запросов. В версиях PHP от 5.2.0 функционал для обработки JSON уже вшит в ядро. Поэтому, если вы будете использовать более ранние версии для написания кода, тогда придётся подключать сторонние библиотеки, для обработки JSON.

В данном примере используется PHP 5.6

Создаём на сервере php-файл, и вставляем в него следующий код. За основу взят пример кода для получения статистики из официальной документации API Яндекс.Директ.






Статистика Яндекс.Директ через API




[
"SelectionCriteria" => [
"DateFrom" => "2018-06-01", // начальная дата в формате ГГГГ-ММ-ДД
"DateTo" => "2018-06-08" // конечная дата для выборки статистики
],
"FieldNames" => ["Date", "CampaignName", "LocationOfPresenceName", "Impressions", "Clicks", "Cost"],
"ReportName" => "НАЗВАНИЕ_ОТЧЕТА",
"ReportType" => "CUSTOM_REPORT", // прописываем произвольный тип отчёта
"DateRangeType" => "CUSTOM_DATE", // произвольный период запроса
"Format" => "TSV", // формат ответа API
"IncludeVAT" => "NO",
"IncludeDiscount" => "NO"
]
];
// Преобразование входных параметров запроса в формат JSON
$body = json_encode($params);

// Создание HTTP-заголовков запроса
$headers = array(
// OAuth-токен. Использование слова Bearer обязательно
"Authorization: Bearer $token",
// Логин клиента рекламного агентства
"Client-Login: $clientLogin",
// Язык ответных сообщений
"Accept-Language: ru",
// Режим формирования отчета
"processingMode: auto",
// Формат денежных значений в отчете
"returnMoneyInMicros: false",
// Не выводить в отчете строку с названием отчета и диапазоном дат
"skipReportHeader: true",
// Не выводить в отчете строку с названиями полей
// "skipColumnHeader: true",
// Не выводить в отчете строку с количеством строк статистики
"skipReportSummary: true"
);

// Инициализация cURL
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);

/*
Для полноценного использования протокола HTTPS можно включить проверку SSL-сертификата сервера API Директа.
Чтобы включить проверку, установите опцию CURLOPT_SSL_VERIFYPEER в true, а также раскомментируйте строку с опцией CURLOPT_CAINFO и укажите путь к локальной копии корневого SSL-сертификата.
*/
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// curl_setopt($curl, CURLOPT_CAINFO, getcwd().’\CA.pem’);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

// — Запуск цикла для выполнения запросов —
// Если получен HTTP-код 200, то выводится содержание отчета
// Если получен HTTP-код 201 или 202, выполняются повторные запросы
while (true) <

echo (‘Ошибка cURL: ‘.curl_errno($curl).’ — ‘.curl_error($curl));

// Разделение HTTP-заголовков и тела ответа
$responseHeadersSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$responseHeaders = substr($result, 0, $responseHeadersSize);
$responseBody = substr($result, $responseHeadersSize);

// Получение кода состояния HTTP
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

// Извлечение HTTP-заголовков ответа
// Идентификатор запроса
$request > // Рекомендуемый интервал в секундах для проверки готовности отчета
$retryIn = preg_match(‘/retryIn: (\d+)/’, $responseHeaders, $arr) ? $arr[1] : 60;

if ($httpCode == 400) <

echo "Параметры запроса указаны неверно или достигнут лимит отчетов в очереди
";
echo "RequestId: <$requestId>
";
echo "JSON-код запроса:
<$body>
";
echo "JSON-код ответа сервера:
<$responseBody>
";

> elseif ($httpCode == 200) <

echo "Отчет создан успешно
";
echo "RequestId: <$requestId>
";
echo $responseBody;

> elseif ($httpCode == 201) <

echo "Отчет успешно поставлен в очередь в режиме офлайн
";
echo "Повторная отправка запроса через <$retryIn>секунд
";
echo "RequestId: <$requestId>
";

> elseif ($httpCode == 202) <

echo "Отчет формируется в режиме offline.
";
echo "Повторная отправка запроса через <$retryIn>секунд
";
echo "RequestId: <$requestId>
";

> elseif ($httpCode == 500) <

echo "При формировании отчета произошла ошибка. Пожалуйста, попробуйте повторить запрос позднее
";
echo "RequestId: <$requestId>
";
echo "JSON-код ответа сервера:
<$responseBody>
";

> elseif ($httpCode == 502) <

echo "Время формирования отчета превысило серверное ограничение.
";
echo "Пожалуйста, попробуйте изменить параметры запроса — уменьшить период и количество запрашиваемых данных.
";
echo "RequestId: <$requestId>
";

echo "Произошла непредвиденная ошибка.
";
echo "RequestId: <$requestId>
";
echo "JSON-код запроса:
<$body>
";
echo "JSON-код ответа сервера:
<$responseBody>
";

Какую придумать акцию для привлечения клиентов для
Разместить рекламу на сайте бесплатно можно
Мероприятия в кафе для привлечения клиентов
Как привлечь клиентов для массажиста
Сколько стоит реклама в инстаграм таргет