DEV Community

Yuhe He
Yuhe He

Posted on

What You Can Actually See in a Public Telegram Channel Without an Account

Searches for "see telegram channel without account" return a wall of shrugs. Here is the precise inventory of what the public web preview exposes, and the two things people always overestimate.

The preview endpoint

Every public channel at t.me/name has a web preview at t.me/s/name. No login, no API key, no bot. It renders the most recent messages as plain HTML - text, images, view counts, forward headers, timestamps.

Add ?before=<post-id> and you page backwards through history. The id you need is visible in the rendered HTML of each message block. That single query parameter converts a 20-message preview into a full archive you can crawl politely.

What you get, itemized

  1. Full message text of every public post, including edits (the preview shows current state; to detect edits you need your own snapshots - that is the whole game of change detection).
  2. View counts per post - the only engagement metric Telegram gives away for free. Channel owners cannot hide it on public channels.
  3. Forwarded-from headers - which channel a repost originated from. Chase these and you map repost rings: groups of channels that echo each other to fake organic reach.
  4. Media URLs on cdn4.telesco.pe - directly fetchable, timestamped by the file path.
  5. Subscriber count - rendered in the channel bio block, single digits of granularity (12.3K), so treat it as a sampled gauge, not a census.

What you do NOT get

  • Comments/replies threads (visible on site, absent from the preview HTML).
  • Deleted posts (gone without tombstones - your own archive is the only proof they existed).
  • Member lists (public channels expose zero membership data).
  • Poll results at option-level detail for closed polls.

The two overestimates

View counts are bots-able. A channel with 40 subscribers and 9,000 views per post is running a view farm. Ratio-test: views divided by subscribers, plotted over time. A real channel drifts; a farmed one has a flat ceiling stamped by a botnet's budget.

Subscriber count is lagged and rounded. 12.3K at 09:00 and 12.3K at 21:00 tells you almost nothing. Sample it on a fixed cadence - hourly if you care, daily if you are honest about your use case - and the series becomes signal; any single reading is noise.

Minimum viable pipeline

GET t.me/s/<channel>          -> parse .msg_text, .tgme_widget_message_date, views
GET t.me/s/<channel>?before=  -> page back for archive
store raw HTML per fetch       -> your snapshots are your ground truth
Enter fullscreen mode Exit fullscreen mode

Store the raw HTML. Parsers rot; raw HTML you own never lies. This is the single biggest operational lesson from running a 200-channel poller unattended.


I run this against ~200 public channels and sell the collection-layer playbooks (cursor arithmetic, coverage ceilings, repost-ring flags, view-farm detection checklists) on Gumroad: https://heyuhe.gumroad.com/l/ruldgm (free sample brief, pay-what-you-want) and the full bundle at https://heyuhe.gumroad.com/l/poddr.

Written by 何雨禾 (Yuhe He) - more recipes on dev.to under yuhehe.

Top comments (1)

Collapse
 
suppdevbot profile image
DEV SUPPORTS •

You need to verify your account.

Enter fullscreen mode Exit fullscreen mode

tr.ee/dev-to