Получаем число подписчиков Telegram-канала

13 ноября 2025 г.

Я не нашел официального API от Telegram для получения количества подписчиков канала, поэтому решил собрать свое решение.

Цель — сделать функцию, а потом и эндпоинт, который будет возвращать количество подписчиков указанного Telegram-канала.

План

Публичные телеграм-каналы имеют веб-страницы, доступные по URL формата . На этой странице отображается название,картинка профиля, описание, количество подписчиков и кнопка открытия в приложении.

страница канала Solar Activity Alerts

Количество подписчиков отображается в элементе с классом — это информация и нужна. Поэтому остается написать скрипт, который будет делать HTTP-запрос к этой странице, парсить HTML и извлекать количество подписчиков.

Решение

С помощью chatgpt я быстро получил готовое решение, описав задачу и показав код страницы.

Вот пример функции на TypeScript, которая получает количество подписчиков:

import axios from 'axios';
import * as cheerio from 'cheerio';

/**
 * Fetch Telegram channel subscriber count
 * @param {string} channelName - e.g. "solar_activity_alerts"
 * @returns {Promise<number|null>} - subscriber count or null if not found
 */
export async function getTelegramSubscribers(channelName) {
  try {
    // Load the Telegram public page
    const url = `https://t.me/${channelName}`;
    const { data: html } = await axios.get(url, {
      headers: {
        'User-Agent':
          'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122 Safari/537.36',
      },
    });

    // Parse with cheerio
    const $ = cheerio.load(html);
    const text = $('.tgme_page_extra').text().trim();

    // Match number like "2 956 subscribers"
    const match = text.match(/([\d\s]+)\s+subscribers/i);
    if (match) {
      const count = parseInt(match[1].replace(/\s+/g, ''), 10);
      return count;
    }

    return null;
  } catch (err) {
    console.error('Error fetching Telegram data:', err.message);
    return null;
  }
}

// Example usage:
(async () => {
  const subs = await getTelegramSubscribers('solar_activity_alerts');
  console.log('Subscribers:', subs);
})();

Этот скрипт использует библиотеку для выполнения HTTP-запросов и для парсинга HTML. Функция принимает имя канала, делает запрос к его странице, извлекает текст из элемента с классом , находит количество подписчиков с помощью регулярного выражения и возвращает его в виде числа.

При необходимости эту функцию можно обернуть в API-эндпоинт, чтобы получать количество подписчиков по HTTP-запросу.

Пример использования

Нажмите на кнопку ниже, чтобы получить количество подписчиков одного из моих каналов «Solar Activity Alerts»:

t.me/

Вместо вы можете указать любой другой публичный канал и получить его количество подписчиков.

Улучшения

Функционал можно расширить различными способами, в зависимости от задач. Вот несколько идей:

  • возможность получать не только количество подписчиков, но и другую информацию о канале (описание, дата создания и т.д.);
  • кэширование ответа хотя бы на несколько минут, чтобы не делать слишком много запросов к Telegram;
  • обработка ошибок и случаев, когда канал не найден или указана ссылка на профиль пользователя;
  • логирование запросов и ответов для мониторинга работы функции.

Но это уже больше похоже на полноценный сервис, чем на простую функцию.

Ограничения

Если Телеграм изменит верстку своих страниц, то скрипт перестанет работать. В таком случае нужно будет обновить селектор для поиска количества подписчиков.

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

Финал

Вот так просто можно получить количество подписчиков публичного Telegram-канала с помощью парсинга его веб-страницы. В других заметках я расскажу, как разверну это решение в полноценный сервис.

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