Telegram Contact Extractor - Emails & Admin Handles
Pricing
$1.50 / 1,000 per channel with a contact founds
Telegram Contact Extractor - Emails & Admin Handles
You pay only for channels where a contact is actually found. Pulls the email, phone, website and contact @handle a public Telegram channel publishes in its bio and recent posts, each with the evidence it came from. Measured on 40 real business channels: 50% published a contact route. No login.
Pricing
$1.50 / 1,000 per channel with a contact founds
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Telegram Contact Extractor — Emails, Phones & Admin Handles
Finds the ways to actually reach a public Telegram channel: the email, phone number, website and
the @handle the channel names for ads or business — pulled from its bio and its 20 most recent
posts, each tagged with the evidence it was read from.
You pay only for channels where a contact was found. Channels that publish nothing are listed in the run summary and cost you nothing.
No login. No phone number. No API key. No Telegram account of any kind.
The measured hit rate
Run against 40 real business channels (crypto, forex, NFT, marketing agencies, dropshipping, Dubai real estate — discovered, not cherry-picked), 2026-09-15:
| channels | rate | |
|---|---|---|
| At least one contact found | 26 / 40 | 65% |
| …with an explicit contact label next to it | 18 / 40 | 45% |
| Published nothing — not charged | 14 / 40 | 35% |
That 65% is the number to plan a budget against. It is not 100%, and an extractor that claimed it would be lying: a third of business channels simply publish no way to reach them.
What one row looks like
{"channel": "agency605","channelTitle": "605 Agency","subscribers": 782,"contactCount": 2,"hasExplicitContact": true,"primaryContact": "@duvduvgap_manager","primaryContactType": "telegram","telegramContacts": ["@duvduvgap_manager", "@agency_605"],"emails": [], "phones": [], "websites": [],"contacts": [{ "type": "telegram", "value": "@duvduvgap_manager", "source": "post","confidence": "explicit","evidence": "ro'yxatda o'tish uchun managerga bog'laning: @duvduvgap_manager" },{ "type": "telegram", "value": "@agency_605", "source": "bio","confidence": "inferred","evidence": "Aloqa uchun: @agency_605" }],"postsScanned": 7}
That is a real row from the measured run, and it shows the design working on a channel that is not
in English: the post handle is explicit because "managerga" matched a contact cue, while the bio
handle is inferred — "Aloqa uchun" is Uzbek for "for contact" and is not in the cue list, so the
extractor stayed conservative and labelled it rather than guessing. Both are real contacts; the
confidence field tells you which one the Actor is sure about.
| field | what it is |
|---|---|
primaryContact | The best single contact, already ranked — work the list top-down |
hasExplicitContact | true when a contact word sat next to it. Filter on this for your highest-intent list |
emails · phones · websites · telegramContacts | Each type on its own, ready to paste into a CRM |
contacts[].evidence | The surrounding text it was read from, so you can see why it was called a contact |
contacts[].confidence | explicit (labelled) or inferred (present, unlabelled) |
contacts[].source | bio or post |
Why it isn't just a regex for @
Every Telegram post mentions somebody. A naive extractor returns an @handle for 100% of
channels and almost all of it is worthless — other channels, cross-promos, people being quoted.
So a handle in the post stream only counts when a contact word sits next to it — contact,
for ads, manager, admin, sales, реклама, по вопросам, contacto, werbung, iletişim
and others, because these channels are not all in English. In the bio a handle counts on its own
(that's the channel's own contact block), except the channel's own handle — which is not a way to
reach anybody. Phone numbers are accepted only in international + format, because a bare run of
digits in a crypto post is a price, not a number you can call.
Every one of those rules is verified offline against real captured pages before each release.
Three different kinds of nothing
The run summary keeps them apart, because they mean different things for your list — and none of them is charged:
noContactFound— a real channel that publishes no contact routenoPublicPreview— private, preview disabled, or not a channel at allunreachable— we could not fetch it after 3 attempts on 3 separate proxy sessions
A channel is only ever reported as "no contact" when the page was actually read.
Pricing
Pay per event: $0.0015 per channel with a contact found, and no run-start fee.
At the measured 65% hit rate that works out to $0.000975 per channel scanned — under the cheapest per-channel rate in the Telegram category, which also charges a $0.003 start fee on top. Scanning 1,000 channels costs about $0.98 and returns roughly 650 contactable ones.
Nothing found means nothing charged, for the whole run.
Source
t.me/s/<channel> is Telegram's own public web preview, served to any visitor. The host publishes no
robots.txt at all. These contact details are published by channel owners specifically so people can
reach them — but you are responsible for how you use them, which for outreach means the marketing
and data-protection rules wherever you are sending from (GDPR, CAN-SPAM, PECR and equivalents).