Мониторинг цен на продукты питания сложнее, чем “просто собрать цены”. Причины в деталях: вес и упаковки, мультипаки, промо, разные магазины/склады, витрина по адресу доставки и частые изменения наличия. Если собирать только “цену из карточки”, вы получите неверные сравнения: 900 г против 1 кг, 6×1 л против 5 л, “скидка” без учета старой цены и т.д.

В FMCG важно мониторить не только цену, но и цену за единицу (кг/л/шт), а также фиксировать контекст промо и магазина/региона.

Для каких бизнесов это особенно актуально

Интернет-магазины и ритейл
Маркетинговые агентства
Продажи и лидогенерация

Где брать данные: типы источников

  • Онлайн-витрины продуктовых сетей (каталоги, цены, акции, наличие по магазинам/зонам).
  • Сервисы доставки (зоны доставки, слоты, минималки, ассортимент “под адрес”).
  • Маркетплейсы с продуктами (цены, продавцы, промо-метки).
  • Прайс-листы/фиды поставщиков (если есть партнерский канал) — часто самый стабильный источник.
  • Open data — редко как “цены”, но иногда как справочники (категории/адресные данные).

Практически всегда лучше начинать с источников, где проще обеспечить стабильность и сопоставимость: официальные выгрузки/фиды, а витрины использовать там, где других каналов нет.

Какие задачи решает мониторинг цен FMCG

  1. Контроль ценовой политики по регионам/магазинам.
  2. Индекс цен по “корзине” (набор базовых товаров).
  3. Мониторинг промо и эффективности скидок.
  4. Контроль ценовых коридоров в категории и по бренду.
  5. Поиск “дыр” в марже (конкурентные акции, которые вынуждают реагировать).
  6. Контроль наличия и out-of-stock по ключевым SKU.
  7. Аналитика ассортимента: появление новинок, уход SKU, замены.
  8. Планирование закупок и промо-календаря.
  9. Контроль выполнения РРЦ/минимальной цены (если применимо).
  10. Быстрые алерты: “акция началась/закончилась”, “цена за кг ушла ниже порога”.

Какие поля собирать: минимальный датасет

Чтобы сравнения были честными и полезными, в базовый набор стоит включить:

Идентификаторы и классификация

  • 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 в регионе

пересмотреть распределение запасов/логистику

 

Пошаговый план внедрения

  1. Определите цель: корзина, категории, KPI (маржа/индекс/доля).
  2. Выберите источники и регионы/магазины.
  3. Зафиксируйте поля и правила единиц (г/кг, мл/л, шт).
  4. Определите контекст измерения (гео, режим без персонализации).
  5. Настройте частоту и хранение истории.
  6. Постройте метрики (price_per_unit, индекс корзины) и алерты.
  7. Введите регламент реакции: кто меняет цены/промо/запасы и по каким порогам.

Чек-лист перед стартом

  • цель и набор категорий/корзина определены;
  • список источников и магазинов/регионов задан;
  • поля минимизированы, единицы стандартизированы;
  • есть правила для мультипаков;
  • фиксируется контекст (магазин/зона доставки);
  • персональные цены отделены от рыночных;
  • есть история цен и наличия;
  • настроены quality gates и алерты качества;
  • частота соответствует скорости решений;
  • определен формат отчетов (CSV/Sheets/BI).
parsing cen tovarov

Контактная информация:

Компания: ParsingMaster

Сайт: parsingmaster.com

Email: info@parsingmaster.com

Telegram: parsingmaster_manager

Телефон: +7 (920) 909-36-72

Заказать обратный звонок

Потому что упаковки разные. Без price_per_kg/price_per_l вы сравниваете несопоставимые товары.

Хранить текущую и старую цену, тип промо и период, а не просто “сейчас дешевле”.

Не смешивать с рыночными. Отдельно маркировать и анализировать, иначе метрики будут искажены.

Фиксировать магазин/регион/зону доставки как часть ключа измерения.

Чаще для хитов и промо-категорий, реже для хвоста. На промо-периоды — временно чаще.

Использовать GTIN/EAN где возможно, нормализовать названия и параметры упаковки, вести справочник соответствий.

Определить фиксированный список товаров/аналогов и считать сумму по нормализованной цене в выбранном контексте магазина/региона.

Да, но с антишумом: окна подтверждения, пороги, исключения и “kill switch” при ухудшении качества данных.

    Корзина пустаяВернуться в магазин