Мониторинг цен на продукты питания сложнее, чем “просто собрать цены”. Причины в деталях: вес и упаковки, мультипаки, промо, разные магазины/склады, витрина по адресу доставки и частые изменения наличия. Если собирать только “цену из карточки”, вы получите неверные сравнения: 900 г против 1 кг, 6×1 л против 5 л, “скидка” без учета старой цены и т.д.
В FMCG важно мониторить не только цену, но и цену за единицу (кг/л/шт), а также фиксировать контекст промо и магазина/региона.
Для каких бизнесов это особенно актуально
Где брать данные: типы источников
- Онлайн-витрины продуктовых сетей (каталоги, цены, акции, наличие по магазинам/зонам).
- Сервисы доставки (зоны доставки, слоты, минималки, ассортимент “под адрес”).
- Маркетплейсы с продуктами (цены, продавцы, промо-метки).
- Прайс-листы/фиды поставщиков (если есть партнерский канал) — часто самый стабильный источник.
- Open data — редко как “цены”, но иногда как справочники (категории/адресные данные).
Практически всегда лучше начинать с источников, где проще обеспечить стабильность и сопоставимость: официальные выгрузки/фиды, а витрины использовать там, где других каналов нет.
Какие задачи решает мониторинг цен FMCG
- Контроль ценовой политики по регионам/магазинам.
- Индекс цен по “корзине” (набор базовых товаров).
- Мониторинг промо и эффективности скидок.
- Контроль ценовых коридоров в категории и по бренду.
- Поиск “дыр” в марже (конкурентные акции, которые вынуждают реагировать).
- Контроль наличия и out-of-stock по ключевым SKU.
- Аналитика ассортимента: появление новинок, уход SKU, замены.
- Планирование закупок и промо-календаря.
- Контроль выполнения РРЦ/минимальной цены (если применимо).
- Быстрые алерты: “акция началась/закончилась”, “цена за кг ушла ниже порога”.
Какие поля собирать: минимальный датасет
Чтобы сравнения были честными и полезными, в базовый набор стоит включить:
Идентификаторы и классификация
- SKU/артикул, GTIN/EAN (если доступно);
- бренд, категория, подкатегория.
Описание товара (для нормализации)
- название;
- параметры упаковки: вес/объем/количество, формат (шт/г/кг/мл/л), мультипак (например, 2×500 г).
Цена и промо
- текущая цена;
- старая цена (если показывается);
- скидка/акция/тип промо (если доступно);
- “цена за единицу” (если витрина отдает), либо данные для пересчета.
Наличие и контекст магазина
- статус наличия;
- магазин/склад/зона доставки/регион (чтобы понимать, где это правда);
- timestamp (время снятия), источник/URL.
Если вы собираете “цены без магазина/гео”, вы часто собираете абстракцию, которую нельзя воспроизвести и сравнить.
Нормализация: упаковки и цена за кг/литр/штуку
Это ключевой блок FMCG. Без нормализации вы будете сравнивать несопоставимое.
1) Единицы измерения
Приводите все к каноническим единицам:
- масса: г → кг
- объем: мл → л
- штучные: шт
2) Мультипаки и “нестандартные” форматы
Примеры, которые ломают сравнение:
- “2×500 г” vs “1 кг” (по сути одно и то же)
- “6×1 л” vs “5 л”
- “10×20 г” vs “200 г”
- “упаковка 12 шт” vs “штучно”
Нужно распарсить “количество × единица” и получить общий объем/массу.
3) Цена за единицу
Если витрина не дает готовое значение, считайте сами:
- price_per_kg = price / weight_kg
- price_per_l = price / volume_l
- price_per_unit = price / units
В отчетах почти всегда удобнее смотреть:
- “абсолютную цену” (что платит покупатель)
- “цену за единицу” (что сравнивает аналитик)
4) Сопоставимость
Нормализация — это еще и правила сравнения:
- сравниваем одинаковые категории и близкие форматы (молоко 1 л vs молоко 900 мл — ок после пересчета; молоко vs молочный напиток — уже спорно);
- фиксируем “канонический размер” для корзины (например, “молоко 1 л”, “сахар 1 кг”) и приводим аналоги.
Промо и персонализация: почему цена “не одна”
В FMCG цена может зависеть от:
- купонов и персональных предложений;
- подписок/пакетов;
- карты лояльности и сегмента клиента;
- адреса доставки (разные витрины и ассортимент);
- “промо только для приложений”.
Правило для мониторинга:
не смешивайте персональные цены с рыночными, иначе индекс корзины начнет “жить своей жизнью”. Лучше:
- фиксировать режим измерения (гость/без купонов/без персональных скидок);
- отдельно маркировать “персонализированное” как другой тип цены.
Частота обновления и история
В продуктовой рознице цены и наличие меняются часто (особенно в промо). Рекомендация по частоте:
- хиты и категории с активным промо: 2–6 раз в день
- средний слой: 1 раз в день
- длинный хвост: 1–2 раза в неделю
- усиление на промо-периоды и перед выходными
История должна храниться по связке:
SKU × магазин/регион × контекст (и желательно отдельно: цена, старая цена, промо-тип, наличие).
Пайплайн мониторинга
Сбор → Валидация → Нормализация → История → Метрики → Алерты → Отчеты
- Валидация: пустые цены, нереальные веса, “нулевые” упаковки, выбросы price_per_kg.
- Нормализация: единицы, мультипаки, категории, бренды.
- История: временные ряды по магазинам.
- Метрики: индекс корзины, медианы по категории, волатильность цен.
- Алерты: пороги и антишум (окно подтверждения).
- Отчеты: по брендам, категориям, регионам, промо-периодам.
Таблица №1: ошибка → причина → как исправить
|
Ошибка |
Причина |
Как исправить |
|
Сравнили “900 г” и “1 кг” по цене |
разные упаковки |
считать цену за кг |
|
“Скидка 30%” без понимания базы |
нет старой цены/тип промо |
хранить old_price и тип акции |
|
“Цена упала” из-за другого формата |
заменился SKU или вариант |
сопоставлять по GTIN/EAN и параметрам |
|
Индекс корзины скачет |
персонализация/купоны |
фиксировать режим измерения, отделять персональные цены |
|
Нет магазина/зоны доставки |
витрина зависит от гео |
фиксировать магазин/регион/зону |
|
“Дешево, но нет в наличии” |
OOS не учли |
хранить наличие и фильтровать |
|
Цена за единицу неверная |
ошибка единиц (мл/л, г/кг) |
канонизировать единицы и проверять |
|
Дубли в данных |
один SKU из разных страниц |
дедуп по ID/URL + контроль версий |
|
Слишком редкие замеры |
промо прошло “между измерениями” |
чаще снимать на промо-категориях |
|
Сломался источник, а вы не заметили |
нет quality gates |
алерты на пустые поля и выбросы |
Таблица №2: сигнал → действие
|
Сигнал |
Действие |
|
Конкурент снизил цену за кг на X% в категории |
проверить длительность снижения, решить по ответной акции/цене |
|
Индекс корзины вырос на Y% за неделю |
разложить рост по категориям и магазинам, корректировать стратегию |
|
У конкурента OOS по ключевым SKU |
усилить видимость своих товаров, скорректировать цену/запасы |
|
Началось промо по категории |
повысить частоту мониторинга, выделить товары-участники |
|
Промо закончилось |
вернуть частоту в норму, оценить эффект |
|
Ваш price_per_kg ушел ниже порога маржи |
проверить себестоимость/доставку, остановить “слив” |
|
Резко выросла волатильность цен |
включить антишум, анализ промо-пилы |
|
Массовая замена SKU в категории |
обновить справочники и сопоставление |
|
Скачок пустых полей |
остановить авто-решения, проверить источник |
|
Систематическое OOS в регионе |
пересмотреть распределение запасов/логистику |
Пошаговый план внедрения
- Определите цель: корзина, категории, KPI (маржа/индекс/доля).
- Выберите источники и регионы/магазины.
- Зафиксируйте поля и правила единиц (г/кг, мл/л, шт).
- Определите контекст измерения (гео, режим без персонализации).
- Настройте частоту и хранение истории.
- Постройте метрики (price_per_unit, индекс корзины) и алерты.
- Введите регламент реакции: кто меняет цены/промо/запасы и по каким порогам.
Чек-лист перед стартом
- цель и набор категорий/корзина определены;
- список источников и магазинов/регионов задан;
- поля минимизированы, единицы стандартизированы;
- есть правила для мультипаков;
- фиксируется контекст (магазин/зона доставки);
- персональные цены отделены от рыночных;
- есть история цен и наличия;
- настроены quality gates и алерты качества;
- частота соответствует скорости решений;
- определен формат отчетов (CSV/Sheets/BI).
Контактная информация:
Компания: ParsingMaster
Сайт: parsingmaster.com
Email: info@parsingmaster.com
Telegram: parsingmaster_manager
Телефон: +7 (920) 909-36-72
Заказать звонок
Чтобы заказать обратный звонок, заполните и отправьте форму ниже.
Оставляя заявку вы можете быть уверены:
От нас не будет никакого спама
Менеджер свяжется с вами в течение 30 мин.
(Рабочее время: Пн-Пт с 9:00 до 18:00 (GMT+3, Мск)
В кратчайшие сроки решим вашу задачу
Потому что упаковки разные. Без price_per_kg/price_per_l вы сравниваете несопоставимые товары.
Хранить текущую и старую цену, тип промо и период, а не просто “сейчас дешевле”.
Не смешивать с рыночными. Отдельно маркировать и анализировать, иначе метрики будут искажены.
Фиксировать магазин/регион/зону доставки как часть ключа измерения.
Чаще для хитов и промо-категорий, реже для хвоста. На промо-периоды — временно чаще.
Использовать GTIN/EAN где возможно, нормализовать названия и параметры упаковки, вести справочник соответствий.
Определить фиксированный список товаров/аналогов и считать сумму по нормализованной цене в выбранном контексте магазина/региона.
Да, но с антишумом: окна подтверждения, пороги, исключения и “kill switch” при ухудшении качества данных.