ВебмастерМетрикаВиджетыРекламная сетьДиректПоиск для сайтаAPI
Войти

Вопросы и ответы

В начале

Использование API

Как спросить

В начале

  • Что такое API Яндекс.Директа, и в каких целях его можно использовать?
    API к сервису Яндекс.Директ дает возможность разработчикам создавать приложения, напрямую с ним взаимодействующие.
    С помощью таких приложений рекламодатели, и, в первую очередь, рекламные агентства, смогут более гибко и эффективно управлять сложными и масштабными рекламными кампаниями, точнее прогнозировать бюджеты и своевременно получать статистические отчеты по каждой кампании.
    Среди наиболее вероятных вариантов использования API:
    • составление статистических отчетов по рекламным кампаниям;
    • использование полученных из Яндекс.Директа данных в качестве входной информации для существующих бизнес-приложений, в том числе и интеграция со статистическими базами данных вашей компании или предприятия;
    • разработка более сложных приложений по управлению разветвленными рекламными кампаниями в сети Интернет.
  • Как подключиться к API?
    Для того чтобы подключиться к API, необходимо выполнить следующие шаги:
    1. Зайдите в раздел «API» в интерфейсе Яндекс.Директа и примите Пользовательское Соглашение.
    2. Создайте сертификат API одним из доступных способов (см. Получение доступа к API). Прим.: Сертификат можно создать сроком от одного до трех месяцев.
    В вашем скрипте необходимо явно указать путь к файлам с сертификатом, private-ключу и файлу cacert.pem.
    Внимание! Для взаимодействия между серверами по протоколу HTTPS рекомендуется воспользоваться следующими сторонними модулями:
  • Как я могу получить сертификат?
    Получив доступ к API, вы можете создать сертификат для своего аккаунта, воспользовавшись одним из следующих способов:
    • Получить готовый сертификат от Яндекс.Директа.
    • Сформировать секретный ключ самостоятельно, а затем подтвердить сертификат на сервере Директа.
    Более подробная инструкция приведена в «Документации» (см. Получение доступа к API).

Использование API

  • Для скольких кампаний я могу использовать API-сертификат?
    API-сертификат выписывается на логин. То есть, вы можете управлять всеми кампаниями, находящимися под этим логином с помощью одного API сертификата.
  • Какие есть ограничения на использование API?
    В API действуют несколько типов ограничений.
    Технические ограничения
    Ограничения накладываются на количество вызовов в течение суток того или иного метода:
    • UpdatePrices - 3000 вызовов на кампанию, за один вызов разрешено передавать не более 1000 фраз.
    • CreateNewReport - 300 вызовов на кампанию.
    • CreateOrUpdateCampaign - 100 кампаний на одну учетную запись.
    • CreateOrUpdateBanners - 1000 объявлений на одну кампанию.
    • GetKeywordsSuggestion - 3000 вызовов на одну учетную запись.
    • Все остальные методы - 50 000 вызовов на каждый метод в сутки.
    При превышении разрешенного количества вызовов любого из методов вступает в действие следующее ограничение: до начала новых суток каждый метод может вызываться не чаще одного раза в 10 минут.
    Также ограничения накладываются на количество кампаний, объявлений или фраз в методах:
    Ограничения накладываются на количество клиентов в методах:
    • CreateNewSubclient - 100 субклиентов для одного агентства в сутки.
    Ограничения накладываются на количество одновременно выполняющихся запросов. Разрешается отправлять не более пяти одновременных запросов на одну учетную запись.
    Балльные ограничения
    API Яндекс.Директа предоставляется бесплатно, но количество и характер доступных операций, которые вы можете произвести в течение суток, зависят от количества баллов на вашем аккаунте. Баллы API пересчитываются и начисляются один раз в сутки.
    На количество доступных для использования баллов влияет множество факторов, в частности:
    • количество отклоненных на модерации объявлений;
    • количество фраз, отключенных за низкий CTR;
    • средний CTR рекламной кампании;
    • средний бюджет рекламной кампании.
    Стоимость операций, имеющих балльные ограничения:
    • добавление объявления - 12 баллов;
    • редактирование объявления - 4 балла;
    • добавление новой фразы - 2 балла;
    • редактирование фразы - 1 балл;
    • получение подсказок к ключевым словам - 3 балла за запрос;
    • получение статистики запросов ― 10 баллов за фразу.
    После совершения операции ее стоимость и остаток баллов можно узнать из ответа сервера.
    Ограничения доступа к API
    По умолчанию доступ к API запрещен пользователям «Легкого» интерфейса и клиентам агентств. Если вы являетесь пользователем «Легкого» интерфейса, для получения доступа к API Директа необходимо переключиться на «Профессиональный».
    Доступ к API может быть ограничен по IP-адресу пользователя для обеспечения дополнительной безопасности. Чтобы запретить работу со своими рекламными кампаниями пользователям с любыми IP-адресами, кроме своего, напишите письмо в службу поддержки по адресу: api@direct.yandex.ru.
    Пользователям, которые не имеют доступа к API, сервис возвращает ошибку с кодом 510 (Access denied).
    Также описание ограничений приведено в «Документации» (см. Ограничения на использование API).
  • Как я могу увеличить количество доступных мне баллов?
    Вы можете увеличить количество доступных вам баллов, оптимизируя ваши рекламные кампании: добавляя и уточняя ключевые слова, работая с текстом объявления с целью увеличения его CTR, а также увеличивая минимальные ставки. Баллы пересчитываются и начисляются раз в сутки.
  • Есть ли разница в управлении рекламной кампанией через API и через веб-интерфейс?
    API Яндекс.Директа дает возможность управлять той же функциональностью Яндекс.Директа, которая доступна через веб-интерфейс. Все изменения, сделанные через API, отражаются в ваших рекламных кампаниях.
  • Приведите примеры кода клиентов на Perl, Python и PHP для входа в аккаунт на Яндекс.Директе?
    Для Perl:
    use strict;
    use SOAP::Lite;
    use LWP::Simple;
    use Crypt::SSLeay;
    
    # Директория, где хранятся файлы с сертификатами
    $ENV{HTTPS_CA_DIR} = '/path_to_certs/';                     
    
    # файл, содержащий сертификат пользователя
    $ENV{HTTPS_CERT_FILE} = $ENV{HTTPS_CA_DIR} . 'cert.crt'; 
    
    # файл, содержащий секретный ключ
    $ENV{HTTPS_KEY_FILE} = $ENV{HTTPS_CA_DIR} . 'private.key';
    
    # файл, содержащий корневой сертификат
    $ENV{HTTPS_CA_FILE} = $ENV{HTTPS_CA_DIR} . 'cacert.pem';
    
    # Создание объекта для подключения к SOAP
    my $client = SOAP::Lite
        -> proxy('https://soap.direct.yandex.ru/api/v3/')
        -> uri('API');
    
    # вызов метода (заменить на необходимый)
    $result = $client->PingAPI();
    
    Для Python:
    import sys
    from datetime import date
    import SOAPpy
    
    # файл, содержащий сертификат пользователя
    CERT_FILE = '/path_to_certs/cert.crt' 
    # файл, содержащий секретный ключ
    PKEY_FILE = '/path_to_certs/private.key' 
    
    # Создание объекта для подключения к SOAP-сервису
    url = 'http://soap.direct.yandex.ru/wsdl/v3/';
    config = SOAPpy.Config
    config.debug = 0 # 1 - для вывода запросов и ответов сервера
    config.SSL.key_file = PKEY_FILE
    config.SSL.cert_file = CERT_FILE
    proxy = SOAPpy.WSDL.Proxy(url, config)
    
    # вызов метода (заменить на необходимый)
    result = proxy.PingAPI()
    
    Для PHP:
    require_once('nusoap073/lib/nusoap.php');
    $proxyhost = '';
    $proxyport = '';
    $proxyusername = '';
    $proxypassword = '';
    $wsdlurl = "http://soap.direct.yandex.ru/wsdl/v3/";
    $client = new nusoap_client($wsdlurl, 'wsdl', $proxyhost, $proxyport, $proxyusername, $proxypassword); 
    $client->authtype = 'certificate';
    $client->decode_utf8 = 0;
    $client->soap_defencoding = 'UTF-8';
    $client->certRequest['sslcertfile'] = '/path_to_certs/cert.crt'; 
    $client->certRequest['sslkeyfile'] = '/path_to_certs/private.key'; 
    $client->certRequest['cainfofile'] = '/path_to_certs/cacert.pem';
    
    # вызов метода (заменить на необходимый)
    $result = $client->call('PingAPI', array());
    
  • Как скачать файл отчета?
    Информацию о доступных отчетах можно узнать с помощью метода GetReportList. Скрипт для загрузки готового отчета можно создать на основе примера, приведенного в «Документации». Пример написан на языке PHP с использованием библиотеки cURL, иллюстрирует подключение к сервису Яндекс.Директ и получение файла по протоколу https.
  • Как можно вывести XML код запроса и ответа сервера?
    В целях обнаружения ошибок и отладки иногда требуется вывести SOAP-запрос клиента и SOAP-ответ сервера.
    Для Perl:
    my $client = SOAP::Lite->service($client->on_debug(sub {print @_}));
    Для Python:
    SOAPpy.Config.debug = 1
  • Какие технологии поддерживаются в API?
    В API Яндекс.Директа используется SOAP-протокол версии 1.1 и язык WSDL как способ обмена информацией между приложениями. Наряду с взаимодействием по протоколу SOAP возможен обмен данными с сервисом в формате JSON.
    Поддерживаемые на данный момент языки: Perl, PHP, Python, Java.
  • С какой частотой можно вызывать методы GetReportList и GetForecastList?
    Методы GetReportList и GetForecastList можно вызывать не чаще чем 1 раз в 10 секунд. Такой интервал обусловлен частотой обновления данных.
  • С какой частотой можно обновлять ставки?
    Менять ставки ключевых фраз имеет смысл не чаще чем 1 раз в 20-30 минут.

Как спросить

  • Куда можно обратиться за помощью в случае возникновения проблем при использовании API?
    Если в «Документации» не нашлось исчерпывающего ответа на ваш вопрос, то пишите в службу поддержки API Яндекс.Директа по адресу: api@direct.yandex.ru.
    В письме укажите следующие данные:
    • логин пользователя, от имени которого выполняется обращение к сервису;
    • точное время запроса;
    • название метода и код вызова метода;
    • ответ сервера и код ответа;
    • пояснение к возникшей проблеме.