DEV Community

Cover image for I Built a Telegram Members Scraper That Reads Public Chat Stats Without Login
Oaida Adrian
Oaida Adrian

Posted on

I Built a Telegram Members Scraper That Reads Public Chat Stats Without Login

I Built a Telegram Members Scraper That Reads Public Chat Stats Without Login

When I shipped my Telegram Channel Scraper, the same question kept coming back: "can you get the member count too?"

Turns out you can — without a Telegram account, without API keys, without a phone number, and without a proxy budget. So I built Telegram Members Scraper — Group & Channel Stats, and it is free to use on the Apify Store.

The problem

Telegram hosts some of the largest communities on the internet — public groups and channels show their size right on their public info page. Community managers, growth teams and researchers all want the same thing: how big is this community, and is it growing?

The official Telegram API needs api_id / api_hash plus a logged-in account. Telegram deliberately hides member rosters from the unauthenticated web. The result: an oddly empty niche for a very common question.

The extrapolation pattern: reuse the winner

Rather than write a fresh scraper, I copied my proven telegram-channel-scraper codebase and adapted it — the extrapolation play. Same httpx + BeautifulSoup stack, same no-login design philosophy, same one-item-per-chat output shape. The hardest part wasn't the code; it was being honest about what the public web surface can and cannot give you.

What the public web actually exposes (the honest finding)

Telegram does not expose member lists on its public pages. A group's /s/ URL redirects to a bare info card — title and member count only. Channels expose a /s/ post preview, but only the channel itself as author.

So the honest scope of a no-login Telegram scraper is:

  • Groups → title, description, member count, online count, photo
  • Channels → title, description, subscriber count, photo, message preview availability

Not per-user rosters. Anyone promising usernames/IDs/join dates without auth is using a different (authenticated) surface. I documented that limitation right in the README instead of burying it.

What it does

  • No Telegram account needed — reads the public web profile (t.me/<chat>), nothing to authenticate or configure
  • Groups and channels, one input — detects the chat type automatically and returns the right size metric (members for groups, subscribers for channels)
  • One dataset item per chat — clean JSON, ready for pipelines
  • Optional preview probe — for channels, collects visible author accounts from the /s/ post preview

Example output

{
  "chatUsername": "DatascienceChats",
  "chatType": "group",
  "chatTitle": "Data Science,ML & AI Nugget Chats",
  "chatDescription": "Discussion community for DS, ML, IOT, AI, DEEP LEARNING and much more…",
  "memberCount": 13871,
  "onlineCount": 380,
  "subscriberCount": null,
  "photoUrl": "https://cdn4.telegram-cdn.org/file/…",
  "profileUrl": "https://t.me/DatascienceChats",
  "messagePreviewAvailable": false,
  "previewAuthors": [],
  "scrapedAt": "2026-08-10T12:00:00+00:00"
}
Enter fullscreen mode Exit fullscreen mode

Smoke test (before shipping)

Three chats, all public, no login:

Chat Type Size
DatascienceChats group ~13.9K members, ~340 online
durov channel ~11.2M subscribers
python_community group 51 members

3/3 extracted non-zero, titles and counts verified against the live pages.

Input

{
  "chats": ["@DatascienceChats", "https://t.me/durov"],
  "checkPreview": true
}
Enter fullscreen mode Exit fullscreen mode
Field Type Description
chats array Public group/channel usernames (@name, name) or links (t.me/name, t.me/s/name) — required
checkPreview boolean Probe the /s/ message preview for channels and collect visible authors (default true)

Use cases

  1. Growth tracking — chart member/subscriber counts of competitor or topic communities over time
  2. Community segmentation — classify public groups vs broadcast channels and their relative sizes
  3. Market research — size the Telegram audience for a niche before launching a channel or product
  4. Lead-list hygiene — confirm a group exists, is public, and roughly how many people it reaches before outreach
  5. AI / datasets — build metadata corpora of public Telegram communities for classification and analytics

Try it

The tool is live and free on the Apify Store: Telegram Members Scraper

Pass a few chat usernames, get back their public profile and membership size as JSON. No account, no API keys, no phone number, no proxy.

Limitations (stated plainly)

  • Public chats only — private groups/channels are not accessible without authentication
  • No member roster — Telegram hides member lists from the web; you get the membership size and chat profile, not per-user rows
  • Counts are as displayed — Telegram rounds large numbers on the public page (e.g. 13.9K13900)

If you need an actual member roster, that requires the authenticated Telegram API — a different architecture, legal posture and price point. This tool deliberately stays on the no-login web surface.

More from me

While you're here, these might be worth a read:

Top comments (0)