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.
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.
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
Type
Positive cases
Shipped?
Document
Positive cases0 of 893
ShippedNo — field removed
Voice note
Positive cases0 of 893
ShippedNo — field removed
Audio file
Positive cases0 of 893
ShippedNo — field removed
Sticker
Positive cases0 of 893
ShippedNo — field removed
Location
Positive cases0 of 893
ShippedNo — field removed
Round video
Positive cases0 of 893
ShippedNo — field removed
Photo
Positive cases52.4% of 893
ShippedYes — has_photo
Video
Positive cases11.6% of 893
ShippedYes — 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.
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.
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.
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.