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

Количество подписчиков отображается в элементе с классом — это информация и нужна. Поэтому остается написать скрипт, который будет делать 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»:
Вместо вы можете указать любой другой публичный канал и получить его количество подписчиков.
Улучшения
Функционал можно расширить различными способами, в зависимости от задач. Вот несколько идей:
- возможность получать не только количество подписчиков, но и другую информацию о канале (описание, дата создания и т.д.);
- кэширование ответа хотя бы на несколько минут, чтобы не делать слишком много запросов к Telegram;
- обработка ошибок и случаев, когда канал не найден или указана ссылка на профиль пользователя;
- логирование запросов и ответов для мониторинга работы функции.
Но это уже больше похоже на полноценный сервис, чем на простую функцию.
Ограничения
Если Телеграм изменит верстку своих страниц, то скрипт перестанет работать. В таком случае нужно будет обновить селектор для поиска количества подписчиков.
Также я не знаю про лимиты на количество запросов к страницам телеграм-каналов на серверах Телеграм, поэтому стоит быть осторожным и не делать слишком много запросов за короткий промежуток времени.
Финал
Вот так просто можно получить количество подписчиков публичного Telegram-канала с помощью парсинга его веб-страницы. В других заметках я расскажу, как разверну это решение в полноценный сервис.
Виталий Гурын