How to Get a Telegram Channel Subscribers List in Python

Can you get a Telegram channel subscribers list with Python? Telethon/MTProto guide to admin limits, Bot API gaps, 200-result search and safe automation.

How to Get a Telegram Channel Subscribers List in Python

Quick answer: can you get a Telegram channel subscribers list?

Yes, but only inside the limits Telegram actually exposes. A channel owner can see contacts and roughly the 200 latest subscribers in the app. With a logged-in user session through Telethon/MTProto, you can search the subscribers list by short queries and deduplicate visible users; you cannot reliably export every follower of an arbitrary public channel.

CaseWhat Python can doMain caveat
Your own or admin channelUse a user session and search-based participant collection.Telegram still limits visible/search results; dedupe and rate-limit.
Large channelGenerate one-letter and two-letter search queries, then merge users by id.Each search can return up to about 200 matches, so coverage is probabilistic.
Random public channelOnly collect what your account can legitimately see.No magic full export; respect permissions and privacy.
Bot APIUse it for counts and bot-visible interactions, not full subscriber export.The Bot API does not return a channel subscribers list.

Why do you need that list?

If you have a Telegram channel you might want to know who follows you. Other social media platforms shows this info but not Telegram (yet).

I personally have a big channel (9k subs) and noticed that a lot of cool guys & girls follows me (sometimes they DM me). I want to know all my subs since I may find someone I'd like to meet.

The problem

If you click on any Telegram profile, you'll see the mutual chats but not if a user follows your Telegram channel.

If you click on your channel's subscribers list, Telegram will show you only your contacts and 200 latest subscribers.

The solution

There is a search field on Telegram channel subscribers list. For each search query Telegram will response with up to 200 results. We can search by random short strings to pull out everyone who follows your Telegram channel.

Run Telethon

To automate actions we will use Python's Telethon library. Let's init it:

from telethon.tl import functions
from telethon import TelegramClient

api_id, api_hash = # get yours on my.telegram.org
client = TelegramClient("channel_subs", api_id, api_hash)
await client.connect()

Search query generator:

For small channels (around 1k subs) 1-letter-search-queries should be enough. But if you want to scrape large lists I'd suggest to use 2-letter-search-queries due to the limit of search result output (up to 200 users).

import itertools

def search_queries():
    alphabets = [
        "qwertyuiopasdfghjklzxcvbnm",
        "йцукенгшщзхъёфывапролджэячсмитьбю",
        "1234567890",
    ]
    
    for alphabet in alphabets:
        for c in alphabet:
            yield c 
    
    # if your channel is large 
    # let's generate pairs:
    for alphabet in alphabets:
        for pair in itertools.permutations(alphabet, 2):
            yield "".join(pair)

Final Telethon snippet

participants = {}  # store users info here
channel_url = "https://t.me/danokhlopkov"  # may be chat_id

for query in search_queries():
    async for res in client.iter_participants(
        channel_url, search=query
    ):
        participants[res.id] = res.to_dict() 
    
    # if you want to be gentle
    await asyncio.sleep(random.random() * 3 + 2)

What's next?

Couple ideas to consider:

  1. Keyword cloud based on user.about section. You may find some interesting keywords which can be used as a filter to a large list of followers.
  2. Find profiles on other social networks with the same usernames. E.g. match with Instagram data. Sort all subscribers by their Instagram followers amount to find out more cool people that follows you.
  3. Parse user.about to extract links to their other social profiles and their Telegram channels.
  4. Estimate user_subscribed_at and user_unsubscribed_at to build something like a CRM for your tg channel.

And ideas for optimisation:

  1. Instead of iterating over thousands of combinations of 2-letter-search-queries, use the most common pairs first - maybe they would be enough.
  2. To update the subscriber list daily use the base method without a search query:
client.iter_participants("https://t.me/danokhlopkov")

Thanks for reading. Bookmark & share this article with friends!

More hacks from me:

Related Telegram automation notes

If you are building real Telegram automation, read the Telegram MCP Server guide for Telethon/MTProto production patterns and the Telegram Stories Python guide for another user-session automation example. For market context, see the Telegram AI bots dataset.

FAQ: Telegram channel subscribers in Python

Can I export all subscribers from a Telegram channel with Python?

Only if your account can access the subscriber list, and even then Telegram limits what is visible. The Telethon approach searches the list with many short queries, merges the results by user id, and should be treated as best-effort discovery, not a guaranteed full export.

Does the Telegram Bot API return a channel subscribers list?

No. The Bot API can help with bot interactions and some channel metadata, but it does not expose a full channel subscriber list. For subscriber discovery you need a logged-in user session through MTProto, for example with Telethon.

Why does Telegram show only about 200 latest subscribers?

Telegram limits the visible subscriber list in the app. The search box can return matches for a query, so the workaround is to search many one-letter or two-letter strings and deduplicate the users you are allowed to see.

Can I get subscribers from someone else's public channel?

Do not assume so. You can only collect users visible to your own account and permissions. Public channel membership is not a free export API, and scraping people without a legitimate reason can violate privacy, platform rules and local law.

Is the Telethon subscriber search safe to run at scale?

It can hit rate limits or account restrictions if you run it aggressively. Use delays, logs, small batches and clear permission boundaries, and avoid turning the script into spam or surveillance infrastructure.