ActorStack.dev

893 posts, 29 channels, zero attachments — and why the fields were removed

Documents, voice notes, audio, stickers, locations and round videos never appeared once in the anonymous preview. Fields that would always be false were cut rather than shipped.

By Oswaldo Carabano5 min read

Short answer

A search across 893 posts in 29 public Telegram channels found zero documents, voice notes, audio files, stickers, locations and round videos, which is strong evidence that Telegram's anonymous web preview does not render attachments at all rather than that the sample missed them. The fields that would have carried them were removed from the output rather than shipped permanently false, because a column that is always false looks like a measurement and is not one. A client signed in with a phone number can download those files; an anonymous reader cannot, and that limit is stated up front.

Key points

  • Zero positive cases across 893 posts in 29 channels, for six separate attachment types.
  • The absence is almost certainly structural — the preview does not render attachments — rather than a sampling gap, because photos and videos are flagged in the same sample at 52.4% and 11.6%.
  • Fields that would always be false were removed. A permanently false column reads as a measurement that came back negative, which is a different claim from nothing to measure.
  • A signed-in MTProto client can download attachments. That capability is exactly what the anonymous design gives up, and it is the honest cost of a pipeline with no account to ban.
  • `has_photo` and `has_video` do ship, because those flags were observed positive in the same sample.
On this page5 sections

The output schema of this Actor has a hole in it, and the hole is deliberate. This is the measurement that put it there.

What was searched for

Six attachment types, each of which Telegram supports and each of which a signed-in client can download: documents, voice notes, audio files, stickers, locations and round videos. The sample was 893 posts across 29 public channels, chosen across niches rather than from one kind of channel.

The result, and why it is not a sampling gap

TypePositive casesShipped?
Document0 of 893No — field removed
Voice note0 of 893No — field removed
Audio file0 of 893No — field removed
Sticker0 of 893No — field removed
Location0 of 893No — field removed
Round video0 of 893No — field removed
Photo52.4% of 893Yes — has_photo
Video11.6% of 893Yes — has_video

The last two rows are what make the first six convincing. The same sample, read by the same code, found photos on half the posts and videos on one in nine. A sample that can detect media is not a sample that missed six other media types entirely — the preview does not render them.

Why the fields were removed instead of shipped

A column that is always false looks exactly like a measurement that came back negative. A consumer reading has_document: false on every row concludes that these channels post no documents, which is a claim about the channels. The truth is a claim about the preview, and the two are not the same statement.

What does ship: photo and video flags

has_photo at 52.4% and has_video at 11.6%, both measured, both useful for filtering. The media URLs they carry are Telegram CDN links with a token in them, and those expire — they are a reference, not a permanent link, and a pipeline that stores them without fetching them will find dead URLs later.

If you actually need the files

Then you need a signed-in MTProto client and the account risk that comes with it. That is a real trade rather than a rhetorical one, and the comparison of the three routes lays out what each side costs.

Frequently asked questions

Can this Actor download files from a Telegram channel?
No. Across 893 posts in 29 channels the anonymous preview rendered no documents, voice notes, audio, stickers, locations or round videos, so there is nothing to download from it. A client that signs in with a phone number can; that is the capability the anonymous design trades away.
Why not ship the fields as false?
Because a column that is always false reads as a measurement that came back negative, and this one is not — it is a field the source never populates. Shipping it would put a fact in your dataset that nobody measured.
Are photos and videos detectable at all?
Yes. `has_photo` was true on 52.4% of the same 893 posts and `has_video` on 11.6%, so the flags ship. The media URLs they carry are Telegram CDN links with a token and they expire, so they are a reference rather than a permanent link.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 9 Sept 2026
    Telegram Channel Scraper — Actor README and input schemaActorStack / Apify Store
  2. Platform docschecked 9 Sept 2026
    Obtaining api_idTelegram
A laptop screen showing a plain text-mode terminal with a command prompt.
TelegramMeasured

Stemming false positives

Telegram's search stems words rather than matching substrings, so it returns morphological relatives of your term. Filtering them out afterwards is free, and it has to happen before billing.

5 min
Racks of network equipment in a dimly lit server room, lit blue by their indicators.
TelegramMeasured

Search versus crawl

Reading a channel's history to find 20 posts about one term took 25 requests and 712 KB. Asking Telegram to filter took 1 request and 24 KB. Same 20 results.

6 min
A person reading on a smartphone in a dark room, their face lit only by the screen.
TelegramGuide

Scrape Telegram channels

A walkthrough of reading public Telegram channels anonymously: the four modes, when search beats reading a history, and what the anonymous preview does and does not render.

9 min