Большинство специалистов по контекстной рекламе работают с Директом через веб-интерфейс или Директ Коммандер. Это удобно для небольших аккаунтов с десятком кампаний. Но когда у вас 50+ кампаний, сотни групп объявлений и тысячи ключевых слов - ручное управление превращается в постоянную гонку с потерями. Именно здесь API становится не опцией, а необходимостью.

В этой статье разберём, что реально можно сделать с помощью Директ API, как получить доступ, какие библиотеки использовать и как написать первый рабочий скрипт.


Что такое Директ API и чем он отличается от Коммандера

Яндекс.Директ API - это программный интерфейс, который позволяет управлять рекламными кампаниями через код, без использования браузера. Вы пишете скрипт на Python, JavaScript или любом другом языке, и он напрямую общается с серверами Яндекса.

Директ Коммандер - это настольное приложение, которое тоже использует API под капотом, но с ограниченным функционалом и интерфейсом, заточенным под ручную работу. Коммандер хорош для разовых массовых правок - загрузить файл Excel, поменять ставки, обновить тексты. API же даёт возможность автоматизировать эти действия по расписанию, по триггеру, в связке с другими системами.

Ключевые преимущества API перед ручной работой:

  • Нет ограничений интерфейса - можно делать то, чего нет в меню
  • Работает без участия человека - скрипт запускается по расписанию
  • Интеграция с любыми внешними данными - CRM, Google Sheets, базы данных
  • Масштаб - одна операция может изменить 10 000 ключевых слов за секунды

Реальные задачи, которые решает API

Перечислю конкретные задачи из практики, а не абстрактные возможности.

Управление ставками по данным из CRM. Допустим, в вашей CRM ведётся учёт звонков с расчётом CPL по каждому ключевому слову. Скрипт каждую ночь забирает данные из CRM, сравнивает CPL с целевым, и для ключей с высоким CPL понижает ставку, для недооценённых - повышает. Полный цикл без участия специалиста.

Автогенерация объявлений для каталогов. У клиента 5000 товарных позиций в базе данных. Скрипт читает базу, генерирует тексты объявлений по шаблону ("Купить [название товара] за [цена] руб."), создаёт кампании и объявления через API. То, что вручную займёт неделю, скрипт делает за час.

Ежедневные отчёты в Google Sheets. Скрипт запрашивает статистику по кампаниям через API, форматирует данные и обновляет таблицу. Руководитель каждое утро видит свежие цифры без участия специалиста.

Остановка кампаний при исчерпании дневного бюджета CPA. Если суммарный расход превысил лимит до конца дня, скрипт останавливает кампании и отправляет уведомление в Telegram. Защита от перерасхода.

Синхронизация с фидом. Когда товар заканчивается, скрипт останавливает соответствующие объявления. Когда появляется - включает. Актуально для интернет-магазинов с динамичным ассортиментом.


Уровни доступа: тестовый и production

Перед тем как писать первый скрипт, нужно понять архитектуру доступа.

Тестовый доступ (Sandbox). Яндекс предоставляет тестовую среду, которая полностью имитирует работу API, но не затрагивает реальные кампании. Идеально для разработки и отладки. В Sandbox вы можете отправлять любые запросы, не боясь случайно сломать рабочую кампанию или потратить реальные деньги.

Чтобы получить доступ к Sandbox: 1. Зарегистрируйте приложение на OAuth-сервере Яндекса 2. В настройках приложения включите доступ к API Директа 3. Используйте специальный токен для Sandbox-среды

Production доступ. Работа с реальными аккаунтами. Для получения production-токена нужно пройти верификацию - Яндекс проверяет, что вы реальный специалист или агентство. Для агентских аккаунтов доступ открыт автоматически; для обычных аккаунтов нужна заявка.

Лимиты API. У API есть ограничения на количество запросов в единицу времени (rate limits). Стандартный лимит - 5 запросов в секунду. Для агентств с большими объёмами лимиты можно увеличить по заявке в Яндекс.


Библиотеки для работы с API

Python - самый популярный выбор. Используйте requests для HTTP-запросов (API возвращает JSON) и pandas для обработки статистики и экспорта в Excel. Есть неофициальная библиотека yandex-direct-client с удобными обёртками, но многие пишут собственный тонкий слой поверх requests - это даёт полный контроль.

JavaScript / Node.js - имеет смысл если команда работает в JS-стеке. Библиотека axios для HTTP-запросов.

PHP - популярен при интеграции с сайтами на Bitrix или WordPress. Работают через cURL, нативной библиотеки нет.


Пример скрипта: выгрузка статистики в Excel

Покажу реальный рабочий скрипт на Python для получения статистики по кампаниям за последние 7 дней и сохранения в Excel.

import requests
import pandas as pd
from datetime import datetime, timedelta

TOKEN = "your_oauth_token_here"
CLIENT_LOGIN = "your-client-login"
API_URL = "https://api.direct.yandex.com/json/v5/"

HEADERS = {
    "Authorization": f"Bearer {TOKEN}",
    "Client-Login": CLIENT_LOGIN,
    "Accept-Language": "ru",
    "Content-Type": "application/json; charset=utf-8"
}

date_to = datetime.now().strftime("%Y-%m-%d")
date_from = (datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d")

body = {
    "params": {
        "SelectionCriteria": {"DateFrom": date_from, "DateTo": date_to},
        "FieldNames": ["CampaignName", "Impressions", "Clicks",
                       "Ctr", "AvgCpc", "Cost", "Conversions", "CostPerConversion"],
        "ReportName": f"weekly_{date_to}",
        "ReportType": "CAMPAIGN_PERFORMANCE_REPORT",
        "DateRangeType": "CUSTOM_DATE",
        "Format": "TSV",
        "IncludeVAT": "YES"
    }
}

response = requests.post(API_URL + "reports", headers=HEADERS, json=body)

if response.status_code == 200:
    lines = response.text.strip().split("\n")
    headers = lines[1].split("\t")
    rows = [line.split("\t") for line in lines[2:-1]]
    df = pd.DataFrame(rows, columns=headers)
    df.to_excel("direkta_report.xlsx", index=False)
    print(f"Готово: {len(df)} кампаний")
else:
    print(f"Ошибка {response.status_code}: {response.text}")

Скрипт намеренно написан просто, без сложных абстракций - чтобы было понятно, как устроено общение с API. В реальном проекте добавьте обработку статуса 201/202 (отчёт ещё формируется) с повторными запросами через паузу.


С чего начать: практический маршрут

  1. Зарегистрируйте OAuth-приложение на id.yandex.ru
  2. Изучите документацию: direct.yandex.ru/api - там есть интерактивный sandbox прямо в браузере
  3. Напишите первый скрипт на выгрузку статистики - это самая безопасная операция (только чтение)
  4. Добавьте запись в Google Sheets через gspread или в Excel через pandas
  5. Настройте запуск по расписанию через cron (Linux) или Task Scheduler (Windows)

После этого можно переходить к операциям записи: изменение ставок, статусов объявлений, текстов. Всегда начинайте с тестового аккаунта или небольшого набора кампаний.

API Директа - это инструмент, который разделяет специалистов на два уровня: тех, кто работает руками, и тех, кто автоматизирует. Начальный порог входа невысокий - базовый Python и несколько часов на изучение документации. Отдача - кратное увеличение масштаба работы без роста трудозатрат.