Telegram Channel & Group Info Scraper (Bulk) avatar

Telegram Channel & Group Info Scraper (Bulk)

Pricing

$1.50 / 1,000 profile scrapeds

Go to Apify Store
Telegram Channel & Group Info Scraper (Bulk)

Telegram Channel & Group Info Scraper (Bulk)

Turn a list of Telegram handles into clean rows: channel, group, bot, user or sticker set, with exact subscriber and member counts, online numbers, name, description, picture and verified badge. Handles nobody uses are reported with the reason, never as blank rows.

Pricing

$1.50 / 1,000 profile scrapeds

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Paste a list of Telegram handles and get one clean row back for every single one: whether it is a channel, a group, a bot, a user or a sticker set, exactly how many subscribers or members it has, how many of them are online right now, its name, description, picture, verified badge and a stable numeric id you can join on later. Handles that nobody uses come back marked as such, with the reason — never as a silent blank row. Built for anyone who has a spreadsheet of Telegram handles and needs to know what is actually behind them.

What you can do with it

  • Qualify an advertising list before you spend. Check the real audience size of every channel a seller pitched you, in one go.
  • Clean a messy handle list. Sort a pile of pasted names into channels, groups, bots, users and handles that simply do not exist any more.
  • Track growth week by week. Run it on a schedule and keep a size history for the channels you care about, with the precise number rather than a rounded one.
  • Enrich competitor research. Pull names, descriptions, pictures and verified badges for hundreds of channels at once.
  • Prioritise deeper work. Rank discovered handles by audience size and only dig into the ones worth it.
  • De-duplicate properly. Several different handles can point at the same channel, and nothing on the surface says so — but every channel row carries that channel's own stable id, so grouping by it collapses the duplicates.

What you get

One row per handle. An abridged real row:

{
"requestedHandle": "@durov",
"handle": "durov",
"entityType": "channel",
"isAvailable": true,
"unavailableReason": null,
"title": "Pavel Durov",
"description": "Founder of Telegram.",
"isVerified": true,
"audienceCount": 11352734,
"audienceCountIsExact": true,
"subscriberCount": 11352734,
"subscriberCountIsExact": true,
"memberCount": null,
"onlineCount": null,
"countsLine": "11 352 734 subscribers",
"channelId": -1006503122,
"hasPublicPosts": true,
"latestPostId": 538,
"latestPostDate": "2026-08-04T15:20:04.000Z",
"scrapedAt": "2026-08-05T09:14:02.118Z"
}

A group comes back the same shape, with memberCount and onlineCount filled in instead of subscriberCount. A handle nobody uses comes back as "isAvailable": false with "unavailableReason": "not_found".

Input reference

FieldTypeDefaultWhat it does
handlesarray of strings— (required)The handles to identify, 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.
fetchExactCountsbooleantrueKeep it on to report the precise audience number, down to the last person. Turn it off for a lighter, faster run when a rounded figure is close enough — every row states which of the two it carries.
countrystringusThe country the run browses from. A few channels are restricted in some places, so this can change what a handle resolves to.
handlesAtOnceinteger16How many handles to work through simultaneously. Higher finishes a long list sooner; 32 is the ceiling.

Output fields

FieldTypeDescription
requestedHandlestringExactly what you pasted, so you can join the results back to your own list.
handlestringThe tidied handle the row is about.
urlstringLink to the profile on Telegram.
entityTypestringchannel, group, bot, user, sticker_set or unknown.
isAvailablebooleanWhether anything public was found behind this handle.
unavailableReasonstring | nullWhy not, when nothing was found: not_found, restricted, no_public_profile or unreadable.
titlestring | nullDisplay name.
descriptionstring | nullThe bio or channel description, as written.
avatarUrlstring | nullDirect address of the profile picture. null when there is no real picture.
isVerifiedbooleanWhether Telegram shows the verified badge.
isScambooleanWhether Telegram flags the profile as a scam.
audienceCountnumber | nullSubscribers for a channel, members for a group — one column to sort a mixed list by.
audienceCountIsExactbooleantrue when the number is precise, false when it is the rounded figure Telegram published.
subscriberCountnumber | nullSubscribers, for channels.
subscriberCountIsExactbooleanWhether that subscriber number is precise.
memberCountnumber | nullMembers, for groups.
memberCountIsExactbooleanWhether that member number is precise.
onlineCountnumber | nullMembers online at the moment of collection, for groups.
countsLinestring | nullThe audience line exactly as Telegram published it.
channelIdnumber | nullThe channel's own stable numeric id — the only identifier that survives a handle change.
hasPublicPostsbooleanWhether this channel publishes its posts publicly.
latestPostIdnumber | nullIdentifier of the most recent public post.
latestPostDatestring | nullWhen that post went out (ISO 8601).
photoCount, videoCount, linkCount, fileCountnumber | nullHow much of each kind of content the channel has published, when Telegram states it.
scrapedAtstringWhen this row was collected (ISO 8601).

Pricing

You pay per row, and nothing else.

What you pay forPrice
Profile scraped — one row per handle$1.50 per 1,000

Worked example: a list of 2,000 handles produces 2,000 rows and costs $3.00. Every handle produces exactly one row, including the ones that turn out to be unavailable — that answer is usually the reason people run this in the first place — so your bill is simply the length of your list. There is no charge for entries that were rejected before the run started, such as private invite links or text that is not a handle at all.

Limits & what this actor cannot do

  • Only public Telegram channels, groups, bots, users and sticker sets 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.
  • Subscriber, member and online numbers are a snapshot at the moment of collection and keep changing afterwards.
  • Telegram publishes very large numbers in rounded form on some surfaces. Where that is what was available, the row says so through audienceCountIsExact, so a rounded figure is never presented as a precise one.
  • Groups do not publish a readable post history, so a group row has no latestPostDate and no channelId. Group name, description, member count and online count are all reported.
  • Some channels switch their public post display off. They are still real channels and are reported as such, with hasPublicPosts set to false.
  • Bots, users and sticker sets do not publish an audience size at all, so those columns stay empty rather than showing a made-up zero.
  • Nothing here reveals who is inside a channel or group. Telegram publishes no public list of subscribers or members, and this actor does not attempt one.
  • Some channels are restricted in some countries, so the same handle can resolve differently depending on the country the run browses from.
  • Speed depends on the length of your list 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 list of handles.

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 and each run appends fresh rows, which is how you build an audience-size history for a set of channels.

Is the data complete? It is everything Telegram publishes publicly about a handle, and nothing more. Names, descriptions, pictures, verified badges and audience sizes are all covered; anything Telegram keeps inside the app — member lists, private channels, chat history — is not available to anyone from the outside and is not returned here.

What happens to a handle that does not exist? It still gets a row, marked isAvailable: false with the reason. That is deliberate: "this handle is free" and "this handle is a bot" are different answers, and both are worth knowing.

Why do two handles sometimes give identical rows? Because one channel can answer on several handles. Group your results by channelId and the duplicates collapse into one.

Can it give me the posts as well? Not in this actor — it answers "what is this handle?" for a long list, quickly and cheaply. Post collection is a separate job.