814 из 816 велозаездов Москвы анонсируют в Telegram. Я спарсил их и посчитал рынок, которого будто нет

Статистика велозаездов с сайта dodofo.ru
Статистика велозаездов с сайта dodofo.ru

Если спросить обычного человека, сколько в Москве любительских велозаездов, он назовёт пару фестивалей и «Ночной Дозор». Ощущение, что это редкость. Я сам так думал, пока не собрал данные и не увидел цифру: только за июль 2026 в городе прошло 407 заездов.

Расскажу, как я это считал, где данные прятались и почему единой картины до сих пор не было. Заодно про технические грабли: отличить анонс от «продам покрышки» оказалось отдельной задачей.

Проблема: спрос есть, витрины нет

Я катаю на шоссере и года полтора страдал от простой вещи. Хочешь в выходные проехать полтос в компании, а не в одну каску по обочине, и не можешь толком узнать, куда и когда. Анонсы разбросаны: чат районного веломагазина, канал дядьки, который водит покатушки с 2014-го, три группы «велосипедисты района», где 90% это «продам покрышки» и «нашли самокат, чей?».

Апофеоз был, когда я пропустил заезд, стартовавший в трёх километрах от дома. Анонс висел в канале, на который я даже подписан. Просто утонул за ночь.

Это классическая ситуация «спрос есть, а витрины нет». Сотни организаторов, тысячи участников, а точки, где всё это собрано, не существует. Каждый постит в свой чат, там оно и живёт полтора часа до следующего сообщения.

Решение: читать чаты машиной, а не глазами

Я программист, так что вместо того чтобы вести табличку (пробовал, сдох через две недели), написал парсер. Он читает открытые велочаты и каналы, вылавливает анонсы и раскладывает их в календарь: дата, город, дистанция, формат, точка старта.

Звучит просто. На деле львиная доля работы ушла не на «прочитать сообщение», а на то, чтобы понять, что это вообще анонс.

Грабля первая: шум. В велочате анонс заезда тонет в потоке «продам», «нашёл», «а какие покрышки взять». Регэкспами такое не разделишь. Пришлось ставить классификатор: сначала дешёвый фильтр на TF-IDF с логрегом отсекает очевидный мусор, а до языковой модели доходит только то, что похоже на событие. Так я не жгу деньги на LLM ради сообщения «кто-нибудь видел мой насос».

Грабля вторая: «когда-нибудь». Половина велочатов месяцами обсуждает «а давайте съездим в горы» без даты и без выезда. Реальный заезд от мечты вслух отличается наличием конкретики: дата, время, точка сбора. Нет их, значит это не событие, а трёп, и в календарь оно не идёт.

Грабля третья: дубли. Один заезд организатор часто кидает разом в пять чатов. В сыром виде он бы пять раз мозолил глаза. Схлопываю по совпадению даты, места и маршрута, оставляю одну карточку.

Грабля четвёртая: живая дата. «Завтра в 8 от фонтана» в посте недельной давности это не завтра и не факт, что фонтан тот самый. Часть таких приходится доразбирать по контексту, часть честно уходит в брак.

Что показали данные

Срез на 1 августа 2026 по Москве: в базе 816 заездов. И вот первая цифра, которая всё объясняет.

814 из 816 пришли из Telegram. С сайтов организаторов всего два.

Вот почему картины рынка не существовало. Никакой афиши на kudago, просто сообщение в чате на 300 человек. Данные есть, они лежат под ногами, их только никто не собрал.

Сезонность бьёт наотмашь. Любительский велосезон в Москве это апрель-сентябрь с резким летним пиком:

  • Март: 11
  • Апрель: 20
  • Май: 60
  • Июнь: 116
  • Июль: 407
  • Август: 96 (набирается)

Зимой единицы, по 2-7 в месяц: гололёд, минус, все на станках. Скачок с июньских 116 до июльских 407 меня самого подбросил.

Это не гонки. Из 816 заездов совместных прогулок в комфортном темпе 749, гонок всего 38, бреветов (длинных марафонов) 22. То есть рынок это в основном «поехали вместе покатаемся», а не «умри, но обгони». Отдельный жанр, коферайды: раннее утро, лёгкий круг, кофе в финале. Таких 97, и это лучший вход для новичка.

Катают недалеко. Медианная заявленная дистанция 46 км. Разброс большой, но основная масса это 30-60 км:

  • до 30 км: 86 заездов
  • 30-60 км: 285
  • 60-100 км: 120
  • 100+ км: 72

Велозаезд это суббота. На субботу приходится 287 стартов, на воскресенье 148, будни держатся по 46-97 на вечерних коферайдах «после работы». Почти две трети активности это выходные.

У города есть хабы. Несколько точек собирают заезд за заездом: БЛК Марьино (41 старт), Устьинский сквер в центре (27), Skuratov на Таганке (10). Приезжаешь туда в субботу утром, и с высокой вероятностью кто-нибудь куда-нибудь едет.

Продуктовый вывод

Главный инсайт даже не в конкретных числах, а в структуре. Есть категория товаров и услуг, где спроса вагон, а витрины нет, потому что предложение физически заперто в мессенджерах. Любительский спорт такой весь: заезды, забеги, лыжи, трейлы. Данные живут в чатах, тонут за часы, и снаружи кажется, что рынка нет.

Инструмент, который вытаскивает это в структурированный вид, не изобретает спрос. Он делает видимым то, что уже происходит. Для меня как для катающего это решило бытовую боль. Как продукт это ниша, которую крупные афиши прошли мимо, потому что парсить сотни телеграм-чатов и чистить их от «продам покрышки» дорого и муторно, а результат неочевиден заранее.

Что получилось в итоге живёт на dodofo.ru: календарь заездов по Москве и области с датой, маршрутом и форматом. Бесплатно, продавать там пока нечего. Цифры выше пересчитываю 1-го числа каждого месяца, так что интересно, добьёт ли август июльский рекорд.

Если работаете с данными из мессенджеров или парсите пользовательский контент, поделитесь в комментах, как отделяете сигнал от шума. У меня классификатор плюс ручные правила, но идеала там нет, всегда что-то протекает.

2