Бот для мониторинга новых товаров конкурентов: настройка и результаты

Как бот для мониторинга новых товаров помогает опередить конкурентов?

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Бот для мониторинга новых товаров конкурентов: настройка и результаты
Средний
~3-5 дней

Наши компетенции:

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

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1422
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1287
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    984
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1249
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    986
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1000

Как бот для мониторинга новых товаров помогает опередить конкурентов?

Ручной просмотр каталогов конкурентов отнимает часы ежедневно. Вместо того чтобы сосредоточиться на стратегии, вы вынуждены открывать десятки страниц, выискивая новые позиции. Один конкурент с 20 категориями и 50 страницами каталога отнимает около 30–40 минут в день. При 5–10 конкурентах это превращается в полноценную рабочую смену, а человеческий фактор неизбежно приводит к пропуску 20–30% новинок.

Мы автоматизируем этот процесс. Наш бот ежедневно сканирует страницы товаров по заданным расписаниям и мгновенно уведомляет вас о новинках через Telegram. Вы получаете только реальные изменения, без шума. Это позволяет реагировать быстрее конкурентов и не упускать аудиторию.

За 5+ лет работы мы разработали решения для 40+ интернет-магазинов, от небольших нишевых проектов до крупных маркетплейсов. Наш опыт гарантирует стабильную работу даже при смене вёрстки конкурента — мы используем семантические селекторы и fallback-стратегии. Экономия времени на мониторинг — до 80%. Бот обрабатывает до 10 000 SKU в день, генерируя отчёты в реальном времени.

Почему ручной мониторинг неэффективен?

У конкурентов сотни страниц каталога, и они обновляются ежедневно. Просматривать их вручную — терять время и упускать новинки. Бот проверяет каждую страницу по расписанию, и вы узнаёте о новых товарах за минуты.

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

Как бот обнаруживает новые товары?

Мониторинг новых товаров отличается от мониторинга цен. Мы следим не за конкретным URL, а за разделами каталога — категориями, страницами "Новинки", результатами поиска. Алгоритм выглядит так:

Конфигурация (URL каталога + селектор) → Scraper → Snapshot → Diff → Alert 
  1. Scraper загружает страницу и извлекает список товаров по CSS-селекторам.
  2. Каждый товар сохраняется в БД с хешем полей.
  3. При повторном сканировании новый список сравнивается с предыдущим.
  4. Отсутствующие в старом снимке позиции помечаются как новинки.
  5. Система отправляет уведомление в Telegram.
Подробный алгоритм работы детектора

Для каждого конкурента настраивается JSON-конфиг с селекторами и правилами пагинации:

{ "pagination": { "type": "url_param", "param": "page", "max_pages": 20 }, "item_selector": ".catalog-item", "fields": { "url": {"selector": "a.product-link", "attr": "href"}, "title": {"selector": ".product-name", "text": true}, "sku": {"selector": "[data-sku]", "attr": "data-sku"}, "price": {"selector": ".price", "text": true}, "image": {"selector": "img.product-image", "attr": "src"} } } 

Схема данных для хранения снимков и новинок:

CREATE TABLE competitor_catalogs ( id BIGSERIAL PRIMARY KEY, competitor_id INT REFERENCES competitors(id), url TEXT NOT NULL, scrape_config JSONB NOT NULL, check_interval INTERVAL DEFAULT '6 hours', last_checked_at TIMESTAMP, is_active BOOLEAN DEFAULT TRUE ); CREATE TABLE competitor_items ( id BIGSERIAL PRIMARY KEY, catalog_id BIGINT REFERENCES competitor_catalogs(id), external_url TEXT NOT NULL, title TEXT, external_sku VARCHAR(255), price NUMERIC(12,2), image_url TEXT, first_seen_at TIMESTAMP DEFAULT NOW(), last_seen_at TIMESTAMP DEFAULT NOW(), is_new BOOLEAN DEFAULT TRUE, UNIQUE(catalog_id, external_url) ); CREATE INDEX idx_competitor_items_new ON competitor_items(catalog_id, first_seen_at) WHERE is_new = TRUE; 

Сам скрапер реализован на PHP с использованием Symfony DomCrawler:

class CatalogScraper { public function scrape(CompetitorCatalog $catalog): array { $config = $catalog->scrape_config; $items = []; $maxPages = $config['pagination']['max_pages'] ?? 1; for ($page = 1; $page <= $maxPages; $page++) { $url = $this->buildPageUrl($catalog->url, $config['pagination'], $page); $html = $this->fetchWithRetry($url); if (!$html) break; $pageItems = $this->extractItems($html, $config); if (empty($pageItems)) break; $items = array_merge($items, $pageItems); usleep(rand(1_500_000, 3_000_000)); } return $items; } private function extractItems(string $html, array $config): array { $crawler = new \Symfony\Component\DomCrawler\Crawler($html); $items = []; $crawler->filter($config['item_selector'])->each(function ($node) use ($config, &$items) { $item = []; foreach ($config['fields'] as $field => $fieldConfig) { try { $el = $node->filter($fieldConfig['selector'])->first(); if ($el->count() === 0) continue; $item[$field] = isset($fieldConfig['attr']) ? $el->attr($fieldConfig['attr']) : $el->text(); } catch (\Exception $e) { continue; } } if (!empty($item['url'])) { $items[] = $item; } }); return $items; } } 

Сервис обнаружения новинок:

class NewProductDetectionService { public function process(CompetitorCatalog $catalog): DetectionResult { $scraped = $this->scraper->scrape($catalog); $newItems = []; foreach ($scraped as $item) { $url = $this->normalizeUrl($item['url'], $catalog->url); $existing = CompetitorItem::where([ 'catalog_id' => $catalog->id, 'external_url' => $url, ])->first(); if (!$existing) { $created = CompetitorItem::create([ 'catalog_id' => $catalog->id, 'external_url' => $url, 'title' => $item['title'] ?? null, 'external_sku' => $item['sku'] ?? null, 'price' => $this->parsePrice($item['price'] ?? ''), 'image_url' => $item['image'] ?? null, 'is_new' => true, ]); $newItems[] = $created; } else { $existing->update(['last_seen_at' => now()]); } } $disappeared = CompetitorItem::where('catalog_id', $catalog->id) ->where('last_seen_at', '<', now()->subDays(3)) ->get(); $catalog->update(['last_checked_at' => now()]); return new DetectionResult(newItems: $newItems, disappeared: $disappeared); } } 

После обнаружения новинок бот отправляет сообщение в Telegram с краткой информацией: название, цена, ссылка. Уведомления приходят в течение минуты после сканирования.

Обход защит от ботов

Защита Метод обхода
Cloudflare Bot Management Playwright + stealth plugin
Rate limiting Случайные задержки 2–5 сек между запросами
IP-блокировки Ротация прокси (residential proxies)
Требование cookies/сессии Headless-браузер с сохранением сессии
JS-рендеринг Playwright/Puppeteer вместо curl

Что входит в работу

  • Конфигурация до 5 конкурентов (категории, селекторы, интервалы)
  • Настройка Telegram-уведомлений (новинки, исчезновения)
  • Развёртывание на вашем сервере (Docker-образ)
  • Документация по эксплуатации
  • Обучение команды (1 час)
  • Поддержка и доработки в течение 1 месяца

Сравнение подходов

Параметр Ручной мониторинг Бот
Время на проверку 1 конкурента 30 мин/день 1 сек/день
Пропуск новинок до 30% <1%
Реакция на изменения часы–дни минуты
Затраты на масштабирование линейные фиксированные

Типичные ошибки при мониторинге и как их избежать

  • Игнорирование пагинации. Если у конкурента больше одной страницы, бот пройдёт по всем. Проверьте настройку max_pages.
  • Слишком частые запросы. Риск блокировки. Рекомендуем интервал 6–12 часов.
  • Жёсткие селекторы. При изменении вёрстки селектор может сломаться. Используйте data-атрибуты или классы-идентификаторы.
  • Отсутствие обработки ошибок. Если страница временно недоступна, бот должен повторять попытку с задержкой.

Сроки реализации

  • CatalogScraper + конфигурация через JSON: 1–2 дня
  • NewProductDetectionService + схема данных: 1 день
  • Уведомления Telegram: 0.5 дня
  • Playwright-адаптер для JS-сайтов: +1 день
  • Ротация прокси: +0.5 дня

Итого: 3–4 рабочих дня.

Получите консультацию по автоматизации мониторинга — это бесплатно. Наши инженеры проведут аудит ваших конкурентов и предложат оптимальное решение.

Свяжитесь с нами, чтобы обсудить вашу задачу. Мы оценим проект и подберём конфигурацию под ваш бюджет.