Получить подписки с рекламы по UTM-меткам

Метод stats/getAdsSubscribes показывает подписки и отписки с рекламы по UTM-меткам за выбранный период. Фильтры по каждой метке и пример.

Обновлено

Показывает подписки и отписки, пришедшие с рекламы, по UTM-меткам.

Нужен личный токен с продуктом BotHunter — как получить. Кому доступен: владельцу сообщества и сотрудникам с ролью «Админ (полный доступ)» или «Статистика».

Параметры

channel
строка
обязательный

Канал. Сейчас поддерживается только VK.

Пример: VK

date_from
строка
обязательный

Начало периода, dd.mm.yyyy hh:ii по Москве.

Пример: 01.01.2026 00:00

date_to
строка
обязательный

Конец периода, dd.mm.yyyy hh:ii по Москве, не позже 90 дней после date_from.

Пример: 31.01.2026 23:59

utm_source
массив строк

Значения метки utm_source — массив строк. Нужна хотя бы одна метка.

Пример: ["vk_ads"]

utm_medium
массив строк

Значения метки utm_medium — массив строк. Нужна хотя бы одна метка.

Пример: ["vk_ads"]

utm_campaign
массив строк

Значения метки utm_campaign — массив строк. Нужна хотя бы одна метка.

Пример: ["vk_ads"]

utm_content
массив строк

Значения метки utm_content — массив строк. Нужна хотя бы одна метка.

Пример: ["vk_ads"]

utm_term
массив строк

Значения метки utm_term — массив строк. Нужна хотя бы одна метка.

Пример: ["vk_ads"]

count
целое число

Сколько событий вернуть: по умолчанию и не больше 1000.

Пример: 100

offset
целое число

Сколько записей пропустить — для выборки по страницам.

Результат

Возвращает объект: items — массив событий, count — сколько их в этом ответе, total — сколько всего.

{
  "status": "ok",
  "response": {
    "count": 1,
    "total": 1,
    "items": [
      {
        "type": "subscribe",
        "time": 1704067200,
        "group_id": 123456,
        "user": {
          "id": 789,
          "first_name": "Иван",
          "last_name": "Иванов"
        },
        "subscription": {
          "id": "65a6e5f4c0e8f20012d3a111",
          "name": "Название подписки"
        },
        "utms": {
          "utm_source": "vk_ads",
          "utm_campaign": "test_campaign",
          "utm_medium": "",
          "utm_content": "",
          "utm_term": "",
          "th_ad_id": ""
        }
      }
    ]
  }
}

Коды ошибок

Общие ошибки — на странице API.

Код

Когда

7

Канал не VK; дата не передана или неверная; период длиннее 90 дней; не передано ни одной метки; метка — не массив строк.

8

Ни в одном вашем сообществе ВКонтакте у вас нет роли «Статистика».

Пример запроса

Подставьте свой токен вместо <ваш_токен>.

curl
PHP
Python
JavaScript
curl -X POST https://bot-api.targethunter.ru/external-api/v2/stats/getAdsSubscribes \
  -H "Authorization: Bearer <ваш_токен>" \
  -H "Content-Type: application/json" \
  -d '{"channel": "VK", "date_from": "01.01.2026 00:00", "date_to": "31.01.2026 23:59", "utm_source": ["vk_ads"], "count": 100}'
$token = '<ваш_токен>';
$url = 'https://bot-api.targethunter.ru/external-api/v2/stats/getAdsSubscribes';
$params = [
    'channel' => 'VK',
    'date_from' => '01.01.2026 00:00',
    'date_to' => '31.01.2026 23:59',
    'utm_source' => [
        'vk_ads',
    ],
    'count' => 100,
];

$curl = curl_init($url);
curl_setopt_array($curl, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($params),
]);

$response = json_decode(curl_exec($curl), true);
curl_close($curl);
import requests

token = '<ваш_токен>'
url = 'https://bot-api.targethunter.ru/external-api/v2/stats/getAdsSubscribes'
params = {
    'channel': 'VK',
    'date_from': '01.01.2026 00:00',
    'date_to': '31.01.2026 23:59',
    'utm_source': [
        'vk_ads',
    ],
    'count': 100,
}

response = requests.post(url, json=params, headers={'Authorization': f'Bearer {token}'})
print(response.json())
const token = '<ваш_токен>';
const params = {
  "channel": "VK",
  "date_from": "01.01.2026 00:00",
  "date_to": "31.01.2026 23:59",
  "utm_source": [
    "vk_ads"
  ],
  "count": 100
};

const response = await fetch('https://bot-api.targethunter.ru/external-api/v2/stats/getAdsSubscribes', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(params),
});
console.log(await response.json());