Гайд 12.04.2026 7 мин. чтения

API для мониторинга сайтов: интеграция в ваши процессы

REST API для мониторинга сайтов: аутентификация, endpoints, примеры на curl, Python и JavaScript. Интеграция мониторинга в CRM, Slack, дашборды и автоматизированные процессы.

API для мониторинга сайтов — это программный интерфейс, позволяющий интегрировать функции ToNews Radar в ваши собственные системы, приложения и бизнес-процессы. REST API предоставляет полный доступ к управлению мониторами, получению истории изменений, запуску проверок и удалению мониторов через стандартные HTTP-запросы. Для команд разработки в Москве, Санкт-Петербурге, Новосибирске и по всей России API открывает возможности, недоступные через веб-интерфейс: автоматизация рутинных задач, интеграция с корпоративными системами и создание кастомных дашбордов.

Для кого API: API предназначен для разработчиков и технических команд, которые хотят встроить мониторинг сайтов в существующую инфраструктуру — от Slack-ботов до CRM-систем и корпоративных дашбордов. Доступен на тарифе «Профессиональный».

Аутентификация

Все запросы к API требуют аутентификации через API-ключ. Ключ передаётся в HTTP-заголовке X-Api-Key с каждым запросом.

Получить API-ключ можно в личном кабинете ToNews Radar: перейдите в раздел «Настройки» и нажмите «Сгенерировать API-ключ». Ключ отображается один раз — сохраните его в безопасном месте.

Безопасность: Никогда не передавайте API-ключ в URL-параметрах, не коммитте его в Git-репозиторий и не вставляйте в клиентский JavaScript. Используйте переменные окружения или секретные хранилища.

Базовый URL

Все запросы к API выполняются по базовому URL:

https://tonews.ru/api/v1

Доступные endpoints

Метод Endpoint Описание
GET /monitors Список всех мониторов
POST /monitors Создать новый монитор
GET /monitors/{id} Получить информацию о мониторе
GET /monitors/{id}/changes Получить историю изменений
POST /monitors/{id}/check Запустить проверку вручную
DELETE /monitors/{id} Удалить монитор

Rate Limits (ограничения частоты запросов)

API ограничивает количество запросов для обеспечения стабильности сервиса:

  • 60 запросов в минуту на один API-ключ
  • При превышении лимита API возвращает ответ с HTTP-кодом 429 Too Many Requests
  • Заголовки ответа содержат информацию об оставшемся лимите: X-RateLimit-Remaining и X-RateLimit-Reset

Рекомендуем реализовать экспоненциальный backoff в вашем клиенте: при получении 429 статуса подождите 1 секунду, затем 2, затем 4 и так далее.

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

curl: получение списка мониторов

curl -X GET https://tonews.ru/api/v1/monitors \
  -H "X-Api-Key: your_api_key_here" \
  -H "Content-Type: application/json"

curl: создание нового монитора

curl -X POST https://tonews.ru/api/v1/monitors \
  -H "X-Api-Key: your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/pricing",
    "name": "Competitor Pricing Page",
    "interval": "6h",
    "css_selector": ".pricing-table",
    "js_rendering": false,
    "ai_prompt": "Track price changes. Report: plan name, old price, new price, percentage change.",
    "notify_email": true,
    "notify_telegram": true
  }'

curl: получение истории изменений

curl -X GET https://tonews.ru/api/v1/monitors/123/changes \
  -H "X-Api-Key: your_api_key_here" \
  -H "Content-Type: application/json"

curl: запуск проверки вручную

curl -X POST https://tonews.ru/api/v1/monitors/123/check \
  -H "X-Api-Key: your_api_key_here" \
  -H "Content-Type: application/json"

curl: удаление монитора

curl -X DELETE https://tonews.ru/api/v1/monitors/123 \
  -H "X-Api-Key: your_api_key_here" \
  -H "Content-Type: application/json"

Пример на Python

import requests

API_KEY = "your_api_key_here"
BASE_URL = "https://tonews.ru/api/v1"
headers = {
    "X-Api-Key": API_KEY,
    "Content-Type": "application/json"
}

# Get all monitors
response = requests.get(f"{BASE_URL}/monitors", headers=headers)
monitors = response.json()

for monitor in monitors["data"]:
    print(f"Monitor: {monitor['name']} - URL: {monitor['url']}")

# Create a new monitor
new_monitor = {
    "url": "https://competitor.ru/prices",
    "name": "Competitor prices",
    "interval": "3h",
    "css_selector": ".price-block",
    "js_rendering": False,
    "ai_prompt": "Report only price changes with old and new values",
    "notify_email": True,
    "notify_telegram": True
}

response = requests.post(
    f"{BASE_URL}/monitors",
    headers=headers,
    json=new_monitor
)
print(f"Created monitor ID: {response.json()['data']['id']}")

# Get changes for a monitor
response = requests.get(
    f"{BASE_URL}/monitors/123/changes",
    headers=headers
)
changes = response.json()

for change in changes["data"]:
    print(f"Date: {change['checked_at']}")
    print(f"Change: {change['change_percentage']}%")
    if change.get("ai_summary"):
        print(f"AI Summary: {change['ai_summary']}")
    print("---")

Пример на JavaScript (Node.js)

const API_KEY = "your_api_key_here";
const BASE_URL = "https://tonews.ru/api/v1";

const headers = {
  "X-Api-Key": API_KEY,
  "Content-Type": "application/json"
};

// Get all monitors
async function getMonitors() {
  const response = await fetch(`${BASE_URL}/monitors`, { headers });
  const data = await response.json();
  return data.data;
}

// Create a new monitor
async function createMonitor(monitorData) {
  const response = await fetch(`${BASE_URL}/monitors`, {
    method: "POST",
    headers,
    body: JSON.stringify(monitorData)
  });
  return await response.json();
}

// Get changes
async function getChanges(monitorId) {
  const response = await fetch(
    `${BASE_URL}/monitors/${monitorId}/changes`,
    { headers }
  );
  return await response.json();
}

// Trigger manual check
async function triggerCheck(monitorId) {
  const response = await fetch(
    `${BASE_URL}/monitors/${monitorId}/check`,
    { method: "POST", headers }
  );
  return await response.json();
}

// Usage example
(async () => {
  const monitors = await getMonitors();
  console.log(`Total monitors: ${monitors.length}`);

  for (const monitor of monitors) {
    const changes = await getChanges(monitor.id);
    console.log(`${monitor.name}: ${changes.data.length} changes detected`);
  }
})();

Идеи для интеграций

Slack-бот для командных уведомлений

Используйте API для создания Slack-бота, который будет публиковать уведомления о важных изменениях в нужный канал. Это особенно удобно для команд в Москве, которые используют Slack как основной рабочий мессенджер. Бот может фильтровать изменения по проценту и отправлять в Slack только значимые обновления.

Корпоративный дашборд

Визуализируйте данные мониторинга на корпоративном дашборде: график количества изменений по дням, таблица с последними обнаруженными обновлениями, статусы мониторов. Подключите API к Grafana, Metabase или кастомному фронтенду.

CRM-интеграция

Автоматически создавайте задачи в CRM при обнаружении изменений на сайте клиента или конкурента. Например, если конкурент снизил цены — CRM создаст задачу менеджеру на звонок клиенту с контрпредложением.

Автоматизированная отчётность

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

Webhook-обработка

Настройте вашу систему для приёма webhook-вызовов от ToNews Radar. При обнаружении изменений сервис может отправить POST-запрос на ваш endpoint с полными данными об изменении. Это позволяет строить реактивные системы, которые мгновенно обрабатывают события.

Доступность API

REST API доступен на тарифе «Профессиональный». Этот тариф предназначен для команд и компаний, которым нужна максимальная гибкость интеграции. Если вы работаете на другом тарифе и вам нужен API, перейдите на «Профессиональный» в настройках аккаунта.

Часто задаваемые вопросы

Как получить API-ключ для мониторинга сайтов?

Перейдите в личный кабинет ToNews Radar, откройте раздел «Настройки» и нажмите «Сгенерировать API-ключ». Ключ будет показан один раз — скопируйте его и сохраните в безопасном месте (переменные окружения, секретное хранилище). API-ключ доступен только на тарифе «Профессиональный».

Какие ограничения на количество запросов к API?

Лимит составляет 60 запросов в минуту на один API-ключ. При превышении лимита API возвращает HTTP-код 429 с заголовками X-RateLimit-Remaining и X-RateLimit-Reset. Реализуйте экспоненциальный backoff в вашем клиенте для корректной обработки лимитов.

Можно ли создавать мониторы через API?

Да, endpoint POST /monitors позволяет создавать мониторы программно. Вы можете указать URL, интервал проверки, CSS-селектор, AI-промт и каналы уведомлений. Это удобно для массового создания мониторов — например, для отслеживания сотен страниц конкурентов.

В каком формате API возвращает данные?

API возвращает данные в формате JSON. Каждый ответ содержит поле data с запрошенными данными и поле meta с метаинформацией (пагинация, общее количество записей). Ошибки возвращаются с соответствующим HTTP-кодом и полем error с описанием проблемы.

Поддерживает ли API пагинацию?

Да, endpoints, возвращающие списки (мониторы, изменения), поддерживают пагинацию через параметры page и per_page. По умолчанию возвращается 20 записей на страницу. Максимальное значение per_page — 100.

Можно ли запустить проверку монитора через API?

Да, endpoint POST /monitors/{id}/check запускает внеплановую проверку указанного монитора. Проверка выполняется асинхронно — API возвращает статус 202 (Accepted), а результат будет доступен через endpoint изменений после завершения проверки. Лимит: не более 10 ручных проверок в час на один монитор.

Как интегрировать API мониторинга со Slack?

Создайте Slack App с Incoming Webhook, затем напишите скрипт (Python или Node.js), который периодически запрашивает изменения через API ToNews Radar и отправляет их в Slack через webhook. Альтернативный вариант — настройте webhook в ToNews Radar, который будет отправлять данные напрямую на ваш endpoint, а тот перенаправит их в Slack.

Попробуйте ToNews Radar бесплатно

3 монитора бесплатно. Уведомления в Telegram и Email. AI-анализ изменений.

Начать бесплатно