Telegram Channel Finder avatar

Telegram Channel Finder

Pricing

$3.00 / 1,000 channel discovereds

Go to Apify Store
Telegram Channel Finder

Telegram Channel Finder

Turn a few Telegram channels you know into hundreds you do not. It follows the channels your seeds link to, forward from and name, then returns each one with its exact subscriber count, name, description and alphabet, filtered to the size you want. Every result says which channel led to it.

Pricing

$3.00 / 1,000 channel discovereds

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a month ago

Last modified

Share

Telegram Channel Finder & Discovery Tool

Give it a handful of Telegram channels you already know and it maps the network around them. It reads what those channels publish, follows every channel they link to, forward from or name in their description, and works out what each one actually is — most turn out to be people, bots or group chats, and those are quietly dropped. What comes back is a clean list of real channels, each with its exact subscriber count, name, description, verified badge and the alphabet it writes in, filtered to the size range you want, and each one labelled with which of your channels led to it and how. Built for anyone who needs more channels in a niche than they can find by hand.

What you can do with it

  • Build a media list for a niche. Start with three channels you already advertise on and come back with two hundred more in the same space, each with its subscriber count so you can sort and shortlist them yourself.
  • Find reachable channels, not just the giants. Set a maximum subscriber count and get the mid-size channels that still answer their messages.
  • Map a competitor's network. See which channels a rival promotes, quotes and forwards from — and which channels several of them point at, which is usually where the audience actually is.
  • Research one language at a time. Narrow the results to a single alphabet so a Russian-market list does not fill up with English channels, or the other way round.
  • Feed a bigger pipeline. Every result carries the channel's name and link, and almost all of them carry its stable numeric identifier too, so you can hand the list straight to a posts, comments or analytics job without cleaning it first.
  • Watch a space grow. Run it on a schedule with the same seeds and each run gives you a fresh snapshot of the network to compare against the last one.

What you get

One row per channel found. An abridged real row:

{
"handle": "contest",
"canonicalHandle": "telegram",
"channelId": -1005640892,
"title": "Telegram News",
"description": "The official Telegram on Telegram. Much recursion. Very Telegram. Wow.",
"isVerified": true,
"subscriberCount": 9907724,
"subscriberCountIsExact": true,
"subscriberCountRaw": "9 907 724 subscribers",
"writingSystem": "latin",
"depth": 1,
"isSeed": false,
"discoveredFrom": "durov",
"discoveredVia": "post_link",
"mentionCount": 2,
"referencedByCount": 1,
"hasPublicPosts": true,
"latestPostDate": "2026-07-19T17:58:20.000Z",
"postsScanned": 20,
"linkedHandles": ["tginfo", "betainfo"],
"linkedHandleCount": 2,
"scrapedAt": "2026-08-05T09:14:02.118Z"
}

A channel that keeps its posts private still comes back as a full row, with hasPublicPosts set to false and its subscriber count intact.

Input reference

FieldTypeDefaultWhat it does
seedChannelsarray of strings— (required)The channels to start from, one per line. Accepts @name, a plain name, or a full Telegram link; a link to a single post is accepted too and resolves to the channel it belongs to. Private invite links are skipped, because nothing about them is public.
depthinteger1How many rounds of exploring to do, from 1 to 3. Round 1 returns the channels your seeds point at; each extra round explores what round before it found. More rounds widen the net a lot and drift further from your topic.
maxChannelsinteger200Stop once this many channels have been returned. This is also your bill. Maximum 5,000.
minSubscribersinteger0Skip channels smaller than this.
maxSubscribersintegernoneSkip channels larger than this. Leave empty for no upper limit.
languagestringanyKeep only channels writing in one alphabet — Latin, Cyrillic, Arabic, Hebrew, Greek, Chinese, Japanese, Korean, Thai, Devanagari, Armenian or Georgian. Matched against the writingSystem column.
postsToScaninteger50How many recent posts to read on each explored channel while looking for the channels it points at. More posts find more channels and take longer. Maximum 500.
includeSeedChannelsbooleantrueWhether your own seed channels get a row of their own. Turn it off when you only want channels you did not already know about; they are still explored either way.
countrystringusWhich country to browse from if Telegram cannot be reached the usual way. Most runs never need it and are unaffected by it; on the ones that do, a few channels are restricted in some places, so it can change what is found.
channelsAtOnceinteger16How many channels to work through simultaneously. Higher finishes a big job sooner; 32 is the ceiling.

Output fields

FieldTypeDescription
handlestringThe channel's name, as the link that led to it wrote it.
canonicalHandlestring | nullThe name Telegram itself publishes for the channel, which can differ from the one above.
urlstringLink to the channel on Telegram.
channelIdnumber | nullThe channel's own stable numeric identifier — the only one that survives a rename. Empty for channels that keep their posts private.
titlestring | nullDisplay name.
descriptionstring | nullThe channel description, as written.
avatarUrlstring | nullDirect address of the channel picture. Empty when there is no real picture.
isVerifiedbooleanWhether Telegram shows the verified badge.
isScamboolean | nullWhether Telegram flags the channel as a scam. Empty on the rare row whose channel page could not be read, because the warning is published there and nowhere else — an empty value means "not known", never "not flagged".
subscriberCountnumber | nullSubscribers at the moment of collection.
subscriberCountIsExactbooleantrue when the number is precise, false when it is the rounded figure Telegram published.
subscriberCountRawstring | nullThe audience line exactly as Telegram published it.
writingSystemstringThe alphabet the channel writes in, worked out from its name and description: latin, cyrillic, arabic, hebrew, greek, chinese, japanese, korean, thai, devanagari, armenian, georgian or unknown.
depthnumberWhich round found it. 0 is a seed you supplied, 1 is a channel your seeds point at, and so on.
isSeedbooleanWhether this is one of the channels you supplied.
discoveredFromstring | nullThe channel that led here.
discoveredViastring | nullHow it led here: post_link, post_mention, forward, link_card, description or seed.
sourceUrlstring | nullThe exact post the reference appeared in, so every result is auditable.
mentionCountnumberHow many times this channel was referenced in total.
referencedByCountnumberHow many different channels referenced it — the better signal of the two, and what the results are prioritised by.
hasPublicPostsbooleanWhether this channel publishes its posts publicly.
latestPostIdnumber | nullIdentifier of the most recent public post.
latestPostDatestring | nullWhen that post went out (ISO 8601).
postsScannednumberHow many of its posts were read while looking for further channels.
linkedHandlesarray | nullThe Telegram names this channel points at, up to 50 of them, exactly as it wrote them. These are names, not verified channels — a good share of them are people, bots and group chats, and none of them has been looked up. An empty list means it named nobody; null means its posts could not be read, so nothing can be said either way.
linkedHandleCountnumber | nullHow many names it points at in total, on the same terms as above.
scrapedAtstringWhen this row was collected (ISO 8601).

Pricing

You pay per channel returned, and nothing else.

What you pay forPrice
Channel discovered — one row per channel returned$3.00 per 1,000

Worked example: a run that returns 200 channels costs $0.60. Set maxChannels and you have capped your bill before you start — nothing else is billable, however many names the run had to look at along the way to find them. Names that turn out to be people, bots, group chats or nothing at all are never charged, and neither is the same channel arriving twice under two different names.

Limits & what this actor cannot do

  • Discovery grows from your seeds, and only from your seeds. Telegram publishes no directory of channels and no "channels like this one" list, so there is nothing global to search. Everything returned is a channel that one of your seeds — or something they led to — actually points at. Better seeds are worth more than more rounds.
  • Only public Telegram channels are covered. Private channels, invite-only groups and one-to-one chats are not publicly viewable and are reported as unavailable rather than returned empty.
  • Group chats, people, bots and sticker sets are found constantly and are not returned as channels. They are counted and named in the run log — bots, people, group chats and sticker sets each on their own line — so you can see what was skipped and why. The same is true of the linkedHandles on each row: those are the names a channel points at, before any of them has been looked up, so expect people, bots and group chats among them.
  • Subscriber counts are a snapshot at the moment of collection and keep changing afterwards.
  • Telegram publishes very large counts in rounded form in some places. Where that is what was available, the row says so through subscriberCountIsExact, so a rounded figure is never presented as a precise one — and if you set a size limit that such a figure rounds across, that channel is skipped and named in the run log rather than admitted or rejected on a number that could be wrong either way.
  • The alphabet a channel writes in is worked out from its own name and description. A channel that publishes neither is reported as unknown, and is skipped whenever an alphabet filter is set.
  • Some channels keep their posts private while remaining public channels. They are returned with their subscriber count and description, but they have no posts to read, so they contribute nothing to further exploring.
  • Some channels are restricted in some countries. The country setting only comes into play on the runs where Telegram cannot be reached the usual way, so on most runs it changes nothing.
  • Results are written in the order they are found, which is by how many different channels point at each one — not by size. Sort by subscriberCount afterwards if that is the order you want.
  • Speed depends on the size of the job and on Telegram's own response times; no fixed throughput is promised.
  • Telegram's terms govern automated access. You are responsible for using the data lawfully and in line with the source site's terms, and for handling any personal data in line with applicable privacy law.

FAQ

Do I need a Telegram account? No. Nothing is needed but the channels you want to start from.

Does it need my phone number or login? No. There is no sign-in step of any kind, and you are never asked for a phone number, a password or anything else personal.

Can I schedule it? Yes. Set it to run daily, weekly or monthly on Apify with the same seeds, and each run appends what it finds — which is how you watch a niche grow over time.

Is the data complete? It is everything Telegram publishes publicly about the channels your seeds point at, and nothing more. There is no complete list of Telegram channels anywhere, and this actor does not pretend to have one: it returns the network around what you gave it, which is why the seeds matter so much.

Why did I get fewer channels than I asked for? Because a lot of what channels link to is not a channel. People, bots, group chats, sticker sets and Telegram's own links all show up in posts, and none of them belongs in a channel list. Add more seeds, raise depth, raise postsToScan, or widen the subscriber range.

How do I get more results? In this order: more seed channels, then more posts read per channel, then one more round of exploring. Extra rounds grow fastest but drift furthest from your topic.

Why do two rows sometimes describe the same channel? They should not. One channel can answer on several different names, and this actor groups by the channel's own identifier rather than by name, so those collapse into one row before you are billed for them. Channels that keep their posts private do not publish that identifier, and are the one case where two names could both appear.

Can it give me the posts as well? Not in this actor — it answers "which channels exist around these ones?". Once you have the list, collecting posts, comments or engagement statistics is a separate job.