Уявіть: ви керуєте інтернет-магазином із 5000 товарів. Ціни конкурентів змінюються щодня, а ручний обхід сайтів забирає у менеджера по 3 години на день. При цьому 20% змін залишаються непоміченими — ви втрачаєте прибуток. Ми розробляємо ботів, які автоматично збирають ціни з сайтів конкурентів, будують історію та надсилають звіти в Telegram. За 5 років ми реалізували понад 50 таких проєктів для e-commerce і знаємо всі підводні камені. Ми маємо 5+ років досвіду в розробці scraper-рішень.
Без автоматизації цю роботу виконують вручну — це години щоденної праці та застарілі дані. Наш бот вирішує задачу повністю: від пошуку ціни до сповіщення. Економія часу сягає 90%, а точність даних — 99%. Ви не пропускаєте короткострокові акції та можете гнучко реагувати на ринок. Наш бот у 3 рази ефективніший за ручний моніторинг. Наприклад, для магазину з 1000 товарів вартість розробки бота становить $800, а економія на зарплаті менеджера — до $1000 на місяць. Ми надаємо рішення під ключ. Пишіть нам у Telegram або на email.
Як влаштований бот моніторингу цін конкурентів?
Архітектура включає кілька компонентів: Scheduler (cron) → Scraper Workers → Price DB → Analytics → Reports/Alerts. Дані зберігаються в PostgreSQL:
CREATE TABLE monitored_products ( id BIGSERIAL PRIMARY KEY, our_product_id BIGINT REFERENCES products(id), competitor_id INT REFERENCES competitors(id), url TEXT NOT NULL, selector VARCHAR(500), -- CSS-селектор для ціни last_price NUMERIC(12,2), last_checked_at TIMESTAMP, is_active BOOLEAN DEFAULT TRUE, UNIQUE(competitor_id, url) ); CREATE TABLE price_snapshots ( id BIGSERIAL PRIMARY KEY, monitored_id BIGINT REFERENCES monitored_products(id), price NUMERIC(12,2), in_stock BOOLEAN, raw_text VARCHAR(100), -- исходный текст перед парсингом captured_at TIMESTAMP DEFAULT NOW() ); CREATE INDEX idx_snapshots_monitored_captured ON price_snapshots(monitored_id, captured_at DESC); Scraper використовує ротацію User-Agent і проксі для обходу блокувань. Для сайтів із JS-рендерингом застосовуємо Playwright. Джерело: Playwright Порівняння методів:
| Метод | Продуктивність | Надійність | Складність |
|---|---|---|---|
| HTTP-запити | висока | середня | низька |
| Playwright | низька (в 5 разів повільніше) | висока | середня |
| API партнерів | висока | висока | висока |
class CompetitorScraper { private array $userAgents = [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15...', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36...', ]; public function fetch(string $url): ?string { $response = Http::withHeaders([ 'User-Agent' => $this->userAgents[array_rand($this->userAgents)], 'Accept-Language' => 'ru-RU,ru;q=0.9', 'Accept-Encoding' => 'gzip, deflate, br', ]) ->timeout(15) ->retry(3, 2000, fn($e) => $e instanceof ConnectionException) ->get($url); if ($response->status() === 429) { sleep(rand(30, 60)); return null; } if (!$response->successful()) { Log::warning("Scraper failed: {$url}", ['status' => $response->status()]); return null; } return $response->body(); } } Чому якісний парсер критичний?
Ціни на сайтах часто змінюють верстку: CSS-селектори перестають працювати. Тому ми використовуємо евристичний парсер із fallback-стратегією. Спочатку пробується заданий селектор, потім — пошук за типовими атрибутами ([itemprop="price"], .price__current, [data-price]). У разі невдачі — парсер витягує ціну за регулярним виразом. Це мінімізує хибні спрацьовування. У наших проєктах надійність парсингу становить 99,5% — це на 15% вище, ніж у готових скриптів. Наші боти працюють в 2 рази швидше, ніж середнє самописне рішення, і забезпечують точність 99% проти 85% у типових scraper-сервісів. Наш телеграм бот для відстеження цін конкурентів (аналітика цін конкурентів) забезпечує повну автоматизацію. Це ідеальний price monitoring bot для e-commerce.
class PriceParser { public function parse(string $html, MonitoredProduct $config): ?ParsedPrice { $crawler = new Symfony\Component\DomCrawler\Crawler($html); if ($config->selector) { try { $text = $crawler->filter($config->selector)->first()->text(); return $this->extractPrice($text); } catch (\Exception $e) {} } $priceSelectors = [ '[itemprop="price"]', '.price__current', '.product-price', '[data-price]', '.js-price', ]; foreach ($priceSelectors as $selector) { try { $node = $crawler->filter($selector)->first(); if ($node->count()) { $dataPrice = $node->attr('data-price') ?? $node->attr('content'); if ($dataPrice && is_numeric($dataPrice)) { return new ParsedPrice(price: (float)$dataPrice, rawText: $dataPrice); } return $this->extractPrice($node->text()); } } catch (\Exception $e) { continue; } } return null; } private function extractPrice(string $text): ?ParsedPrice { $normalized = preg_replace('/[^\d,.]/', '', $text); $normalized = str_replace(',', '.', $normalized); if (preg_match('/^\d{1,3}[.]\d{3}$/', $normalized)) { $normalized = str_replace('.', '', $normalized); } if (!is_numeric($normalized) || (float)$normalized <= 0) { return null; } return new ParsedPrice(price: (float)$normalized, rawText: $text); } } Які дані ми збираємо і як їх аналізуємо?
Окрім історії цін, бот фіксує: наявність товару (in_stock), дату першої фіксації, мінімальну/максимальну ціну за період. На основі цих даних будуються графіки динаміки цін, обчислюється середня ціна конкурентів і рекомендована ціна для вашого магазину. Система може автоматично коригувати ваші ціни за заданими правилами (наприклад, тримати ціну на 5% нижче середньої). Всі звіти надходять у Telegram: щоденний дайджест, сповіщення при різких змінах, щотижневий огляд топ-10 конкурентів.
Що входить у роботу?
Результат впровадження включає:
- Робочий бот із заданою періодичністю перевірок
- База даних з історією цін (доступ через API або адміністративну панель)
- Налаштовані Telegram-звіти та сповіщення
- Документація з архітектури та інструкція з експлуатації
- Підтримка протягом 1 місяця після запуску (гарантійне обслуговування)
- Навчання вашого менеджера роботі з системою
Процес роботи та терміни
Як замовити бота:
- Залиште заявку на консультацію.
- Ми аналізуємо ваші сайти конкурентів.
- Пропонуємо рішення та вартість.
- Реалізуємо та тестуємо.
- Ви отримуєте готового бота.
| Етап | Що робимо | Термін |
|---|---|---|
| Аналітика | Вивчення сайтів конкурентів, підбір селекторів | 0.5 дня |
| Проектування | Схема даних, архітектура | 0.5 дня |
| Реалізація | Scraper, Parser, Database | 1–2 дні |
| Звіти | Telegram/email, інтерфейс | 1 день |
| Тестування | Перевірка на 10+ товарах | 0.5 дня |
Разом: від 4 до 5 робочих днів. Вартість розраховується індивідуально після оцінки вашого проєкту. Зв'яжіться з нами для консультації — ми безкоштовно проаналізуємо вашу задачу та запропонуємо оптимальне рішення. Замовте розробку бота моніторингу цін прямо зараз — не втрачайте прибуток через застарілі дані.
Технічні деталі
Ми використовуємо мову програмування PHP та базу даних PostgreSQL. Для обходу блокувань застосовуємо ротацію проксі та User-Agent. Scraper цін збирає дані з використанням евристичного парсера.Типові помилки та як їх уникнути
- Селектор ціни надто конкретний — при зміні класу парсер ламається. Використовуйте евристику з fallback.
- Відсутність обробки rate limit — бот блокується. Налаштуйте затримки та ротацію проксі.
- Ігнорування JS-рендерингу — дані не отримуються. Додайте Playwright для таких сайтів.
- Занадто рідкісні перевірки — пропускаєте короткострокові акції. Налаштуйте індивідуальну частоту.
- Вибір готового скрипта без підтримки — після поломки селекторів сервіс перестає працювати. Наш бот адаптується до змін завдяки fallback-парсеру.
Ми гарантуємо стабільну роботу та точність даних. Отримайте безкоштовну оцінку вашого проєкту — залиште заявку на сайті.







