Уявіть: ви керуєте інтернет-магазином із 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-парсеру.
Ми гарантуємо стабільну роботу та точність даних. Отримайте безкоштовну оцінку вашого проєкту — залиште заявку на сайті.







