- Парсер Telegram = две разные задачи: индексация чатов/каналов как сущностей и извлечение конкретных пользователей.
- Публичный web-preview
t.me/s/<name>доступен без авторизации и индексируется поисковиками. - Участников обсуждений (discussion group) достаёт любой залогиненный юзер через MTProto — это основной механизм парсинга людей.
- Snowball: от seed-каналов → по @упоминаниям рекурсивно строится граф на миллионы сущностей.
- Фильтры:
last_seen(online / recently), Premium,lang_code, наличие фото. Гео и телефон — недоступны. - В TG:ON это база 2,9 млн+ чатов и каналов (Vault) + парсер участников Scan My Telegram. Триал 3 дня / 100 сообщений, без карты.
«Парсер Telegram» — запрос, под которым люди подразумевают совершенно разные вещи. Чтобы выбрать инструмент и не потратить недели на нерабочий путь, сначала надо развести два процесса, которые регулярно путают. Первый — индексация чатов и каналов как сущностей: имя, описание, число подписчиков, ниша. Второй — извлечение конкретных пользователей: username, ID, online-статус, premium-флаг.
Первое — публично. Любой чат или канал с публичной ссылкой открывается без авторизации через web-preview t.me/s/<username>: страница рендерит последние сообщения, и её индексирует Google. Второе — сложнее и упирается в ограничения API. Дальше разберём оба слоя по порядку: что доступно бесплатно, что требует юзер-сессии, как масштабируется и где проходит граница ToS.
Для outreach нужны чаты, а не каналы. В канал (broadcast) пишет только админ — спарсить его подписчиков как user нельзя. А вот группа / чат (в т.ч. discussion group под каналом) позволяет видеть участников и писать им. Поэтому при сборе аудитории целевая сущность — именно group/chat, а не channel.
Что реально можно достать публично
У Telegram есть несколько публичных endpoint'ов, которые отвечают без авторизации. Полезные для парсера:
Через парсинг t.me/s/ ты получаешь:
- Имя чата/канала, описание, аватар, количество подписчиков
- Последние 20-30 сообщений с timestamp'ами
- Упоминания
@другой_чат,t.me/другой_чатв текстах - Forward-источники репостов
- Реакции, view count, время публикации
Важно: публичный web-preview — это не API, это HTML-страница. Парсер берёт её обычным HTTP-запросом и разбирает через BeautifulSoup / lxml. Явного rate-лимита здесь нет (страницы cached-friendly), но агрессивный паттерн всё равно триггерит Cloudflare.
Как собирается база в 2,9 млн+ чатов и каналов
У нас в индексе 2,9 млн+ чатов и каналов. Это не куплено и не «взято из секретного источника» — результат многомесячного snowball crawl по публичному t.me/s. Логика:
Одна сущность в среднем содержит 5-15 упоминаний других чатов и каналов (коллаборации, форварды, рекомендации). С коэффициентом разветвления ~10 граф растёт экспоненциально: 100 seed-каналов → 100K за дни → миллионы за недели. Подробнее о механике мы разбирали в статье «Парсинг 10 000 лидов за ночь».
Три нюанса определяют качество crawl'а:
1. Seed selection
От стартового списка зависит качество графа. Хорошие seed'ы — крупные нишевые чаты с активной аудиторией. Плохие — «сборные паблики» с упоминаниями всего подряд. Мы стартовали с ~200 seed'ов по 20 вертикалям (крипта, арбитраж, edtech, e-com, SMM, B2B и т.д.).
2. Deduplication и тип сущности
Один объект упоминается в 50 форматах: @chat, t.me/chat, https://t.me/chat. Нужна нормализация — всё к lowercase username'у, плюс алиасы на случай переименований. Отдельно фиксируем тип: channel (broadcast) или group/chat — это критично для последующего outreach.
3. Classification
Нишу определяем по описанию + последним 50 сообщениям через keyword-matching и LLM-классификатор. ~30 категорий (финансы, крипта, e-com, edtech, ...) + подкатегории. Это даёт точные фильтры на этапе подбора аудитории.
Как достать пользователей из чата
Вторая часть — извлечение конкретных юзеров. Здесь уже нужен authenticated MTProto-client: Telethon, Pyrogram или TDLib. Telegram — это не бот-надстройка, а полноценный MTProto-протокол; почему для автоматизации нужен именно native-клиент, мы разбирали в «Автоматизируй Telegram: почему нужен native-клиент».
Источники пользователей и их доступность:
| Источник | Доступ | Что получаешь |
|---|---|---|
| Discussion / group | Любой залогиненный юзер, если чат публичный | ID, username, имя, Premium, last_seen, bio |
| Авторы комментариев | Публично (видны и в web-preview) | username, имя, иногда аватар |
Реагировавшие (GetMessageReactionsList) |
Залогиненный юзер | ID, username, имя, реакция, timestamp |
| Просмотревшие сторис | Только автор сторис | — (не для внешних) |
| Подписчики канала | Только админы канала | — (не для внешних) |
В 2024 Telegram ужесточил доступ: теперь channels.GetParticipants для non-admin возвращает только первые ~200 участников — именно поэтому «выкачать подписчиков» публичного канала больше не работает как в 2022.
Но channels.GetParticipants для связанной discussion group (если она публичная) всё ещё отдаёт полный список — это лазейка, которой пользуется вся индустрия. Если у канала есть обсуждение с 10 000 активных комментаторов, ты их достанешь. Поэтому ещё раз: при сборе аудитории целишься в чаты, не в каналы.
Как фильтровать «тёплую» аудиторию
Сырые 10 000 юзеров — это материал, а не результат. Ценность — в отфильтрованных срезах. Telegram отдаёт несколько полезных флагов:
Ключевые фильтры в порядке полезности:
- last_seen — Telegram возвращает грубые диапазоны:
online,recently(последние 2-3 дня),last_week,last_month,long_ago. Для outreach нужныonline+recently— те, кто вообще читает Telegram. - Premium flag — выше вовлечённость, но и репорты от premium-юзеров весят больше в @SpamBot. Как именно @SpamBot реагирует на сигналы — см. «SpamBot: 6 сигналов под капотом».
- Photo — у юзеров с аватаркой выше «реальность»; без фото — часто боты или read-only аккаунты.
- bio keyword — отсев по словам в профиле («founder», «CEO», «crypto», «SMM»). Работает только если профиль заполнен — а он пуст у 50-70%.
Что недоступно: гео-фильтр по стране, номер телефона, email, биометрия. Telegram их просто не отдаёт через API non-админам. Любой «парсер с фильтром по городу Москва» — либо врёт, либо использует косвенные признаки (lang_code, нишевые чаты) с точностью ~60%.
Легальность и ToS
Вопрос, который многие обходят. Telegram в Terms of Service прямо запрещает «automated scraping» в большом объёме без разрешения. При этом парсинг публичной информации — того, что любой залогиненный юзер видит сам — в большинстве юрисдикций легален, пока не нарушает GDPR / privacy-законы.
Серые зоны:
- Хранение баз: GDPR требует основания на обработку ПД. Есть EU-юзеры — формально нужен их opt-in.
- Использование для outreach: CAN-SPAM / GDPR требуют opt-in или legitimate interest. «Нашёл в чате → рассылаю» — нарушение в EU/US.
- Продажа баз: однозначно запрещена Telegram ToS и обычно privacy-законами.
В TG:ON мы не продаём базы — даём инструмент для парсинга твоей аудитории. Что ты с ней делаешь — твоя ответственность. Принцип «tool-neutral»: то же касается молотка или Excel.
Как это устроено в TG:ON
TG:ON — десктоп-приложение для Windows и macOS, работает local-first: твои аккаунты и ключи остаются на твоей машине. Парсер здесь это два связанных модуля.
Vault — индекс 2,9 млн+ чатов и каналов
Готовая база сущностей с авто-классификацией по нишам и фильтрами. Ищешь нужную вертикаль, отбираешь чаты (где можно писать как user), экспортируешь. База пополняется ежедневно через snowball — не нужно поднимать свой crawler, очередь задач, ротацию сессий и storage с нуля.
Scan My Telegram — парсер участников
Встроенный MTProto-worker, который достаёт участников обсуждений, авторов комментариев и реагировавших с правильными flood-лимитами и ротацией сессий. На выходе — отфильтрованный по online / premium / lang срез, готовый для следующего шага.
Дальше аудитория идёт в смежные модули: массовая авторассылка (spintax + медиа), автоинвайт, ИИ-редактор сообщений и ИИ-агенты (Qualifier / Closer на любом LLM, ключи хранятся локально), автоответчик. Зачем держать всё это в одном app, а не в зоопарке скриптов — разбор в «Софт для рассылки: один app, пять функций». И помни про прогрев и сигналы @SpamBot — парсинг это только первый шаг, дальше всё решает аккуратность рассылки.
| Тариф | Цена | Кому |
|---|---|---|
| Starter | $49 / мес | первые кампании, один-два аккаунта |
| Pro | $89 / мес | регулярный парсинг + рассылки |
| Agency | $169 / мес | агентства, объём, несколько проектов |
TG:ON для Windows · macOS
Desktop-приложение. Работает локально, твои ключи остаются у тебя. Триал 3 дня / 100 сообщений, без карты.
Скачать бесплатноБаза 2,9 млн+ · парсер · фильтры.
3 дня бесплатно, без карты.
Vault + Scan My Telegram + фильтры online / premium / lang. Триал 3 дня / 100 сообщений. Вопросы — в @tgon_support_bot.
Начать триал