r/TGuard•
Yaitzebik

How to see ALL subscribers of your Telegram channel, not just the last 200

TL;DR: Telegram caps the member list UI at 200, but there are actually two separate solutions depending on what you need: (1) scan your current full subscriber list by name right now, and (2) track every join/leave event going forward. Tools like TGuard do both.


If you manage a Telegram channel you've probably noticed this already: go to your subscriber list, and you see at most 200 people. You have 30,000 subscribers. You see 200.

I spent a while thinking this was a bug or a display glitch. It's not. It's a deliberate Telegram design decision — to protect subscriber privacy. Makes sense from the subscriber's side. Completely maddening from the owner's side.


Why Telegram does this

It's not a technical limitation — they could show more. They chose not to. The reasoning is that if any channel admin could export a complete member list, subscribers would have no way to keep their reading habits private. Telegram takes that seriously.

Fine. But it creates real blind spots for anyone who actually runs a channel.


What you're actually missing

Who left after a specific post. You posted something, 800 people unsubscribed that day. Telegram shows you the net number in analytics. It doesn't tell you who they were, how long they'd been subscribed, or whether they were real accounts or bots.

Recurring bots. An account that joined during a bot attack six months ago, quietly left, and is back again — you have no record of that pattern. The 200-person snapshot is always "now", never history.

Invite link retention. You ran ads on three channels with three different links. Link B brought 500 people. How many of those 500 are still subscribed 30 days later? Without historical data, you literally cannot answer that.


Solution 1: Scan your full current subscriber list right now

This one surprised me when I found out it was possible. Telegram's API (getChatMembers) lets you search channel members by name — but it caps each query at 200 results. Sounds like a dead end, but there's a workaround.

TGuard's scanner exploits this systematically:

  1. It searches the member list for every letter of the alphabet — "a", "b", "c" ... "я" — plus digits and two-character combinations
  2. If any single query returns close to 200 results, it recursively expands that prefix: "an", "ar", "as" ...
  3. It deduplicates by user ID across all queries
  4. It keeps going until it has 95–99% coverage of your actual subscriber count

The result: a near-complete snapshot of who is currently in your channel, including their name, username, premium status, bot flag, last-seen status, and join date. For a channel with tens of thousands of subscribers this takes a few minutes. The coverage isn't guaranteed at exactly 100% (Telegram's search has quirks with certain Unicode names), but in practice it's very close.

This is useful for a one-time audit — bot check, audience demographics, export for ad targeting, whatever. You run it, you get the list.


Solution 2: Track every join and leave going forward

The scan gives you a snapshot of right now. It tells you nothing about what happened yesterday or last month. For that you need an event log.

Telegram's Bot API sends a ChatMemberUpdated event every time someone joins or leaves a channel where a bot is admin. Catch those events, log them with a timestamp and the invite link used, and you build a permanent subscriber history from that point forward.

What each event record contains:

  • User ID, name, username
  • Premium / bot / deleted account status
  • Country and last-seen status
  • The specific invite link they used to join
  • Timestamp

What you can do with this over time:

Post-mortem on unsubscribe spikes. Filter exits within 24–48 hours after a specific post. See exactly who left — real accounts vs bots, country breakdown, average subscription duration. "We lost 800 people" becomes something you can actually analyze.

Bot pattern detection. Accounts doing join → leave → rejoin cycles show up clearly in the timeline. You can spot the pattern and block proactively rather than waiting for the next wave.

Invite link cohorts. For each link: how many people who came through it are still subscribed at 30, 60, 90 days? Channel B brought 600 but 60% churned in two weeks. Channel C brought 200 but 90% stayed. That's your ad budget decision made easy.


The catch with event tracking

No tool can give you history before you connect it. The Bot API only delivers events in real time. If you connect a bot today, you have data from today forward. Everything before that is gone.

The scan (Solution 1) can recover the current state. But the history of how you got there — who came, who left, when — only exists if you were logging it. The earlier you connect a bot, the more complete your record.


Practical setup

Add @channel_guardian_bot as admin with Restrict Members permission. It starts recording join/leave events immediately. Run a scan from the dashboard whenever you want a full snapshot. Both work independently — the scan is a point-in-time export, the event log is continuous.

You can also build the event logging yourself — ChatMemberUpdated in the Bot API docs is well documented. The name-search scanner is more work to implement correctly (the recursive prefix expansion with deduplication is non-trivial), but it's doable if you're into that kind of thing.


Happy to answer questions. The scan + event log combination is genuinely the most complete picture you can get of a Telegram channel audience within what the API allows.

Posted May 8, 2026, 3:55 PM UTC

10
Loading comments…