Can a Telegram scraper bot pull a group's member list?
No, not a bot in the sense Telegram uses the word.
The Bot API offers three ways to look at membership and none of them is a list. getChatMember answers a question about one person whose ID you already hold. getChatMemberCount returns an integer. getChatAdministrators returns the admins. There is no method that enumerates a group, and the omission is not an oversight somebody clever routes around.
Telegram's own bot page settles the rest of it, stating plainly that bots can't start conversations with users and that a bot dropped into a group sees only relevant messages by default. So a product advertised as a telegram scraper bot that hands you a membership export is not running on a bot token. It holds a logged-in account and speaks MTProto, the protocol Telegram Desktop speaks, and the word bot is doing marketing work rather than technical work.
Which surface a tool runs on decides everything downstream: the errors that arrive, whose account absorbs them, and how much is at stake when a run goes wrong.
Why one phrase covers two different Telegram scrapers
Two things are sold under it, and they read completely different data.
The first reads content. A telegram channel scraper pulls what a public channel published — posts, timestamps, view counts, links to media — and because a public channel carries a web preview, a tool can read it without holding an account at all. Browser extensions and hosted crawlers serve that tier, as does Telegram Desktop's built-in chat export for one chat at a time, and as data jobs go it is fairly boring.
The second reads people. A telegram group scraper pulls who is inside a group: user IDs, usernames where they exist, whatever profile fields are visible. There is no logged-out route to that, because the request has to come from an account that is already a member, which is exactly why the second kind always asks you for a session and the first kind never does.
Look at what people actually type. What is telegram scraper, telegram scraper github, telegram scraper bot github, telethon telegram scraper, telegram scraper online, telegram scraper software — six queries with at least three different people behind them. One wants a definition, one wants a repository to clone, one wants a licence and somewhere to ask questions. Every result on the first page answers whichever of the three it was built for, which is why the search never quite lands.
A telegram scraper online, meaning anything that runs in a browser tab and never asks you to log in, obeys the same rule. It can read a public channel's posts. It cannot read a member list, because that list is not published to a logged-out visitor, and where an online tool does return members it is either driving your own logged-in web session or holding an account of its own.
What does a telegram group members scraper actually get?
Less than the column headers promise.
The export is a spreadsheet, one row per user, and in the July 2026 build it carries columns for user ID, group ID, message ID, username, first and last name, bio, gender, photo, a premium flag, last-seen status and time. Read down the phone column on a real run and it is almost entirely empty. Telegram surfaces a number only where the account holder's privacy setting allows it. The default does not. The API returns nothing where the setting says nothing, and that one column is the widest gap in this category between what gets advertised and what gets delivered.
Username is optional too. Plenty of accounts have never set one, and those rows carry an ID and an access hash instead, which stay valid only in the context that produced them. Last seen is a bucket rather than a clock: where an account hides its exact time, the API hands back a category — online, recently, last week, last month — and the export records the status string it was given rather than a date. Filtering on activity this month therefore means filtering on that bucket, which is a real signal and a coarser one than the column makes it look.
Everything above assumes you are already inside the group. The participants method returns CHANNEL_PRIVATE, documented as "You haven't joined this channel/supergroup", to an account that is not a member, and CHAT_ADMIN_REQUIRED for the filters reserved to admins. It also pages: Telegram's note on pagination puts the limit "typically between 1 and 100" per call, so a forty-thousand-member group is hundreds of sequential round trips and each one is a chance to collect a wait, which is what the Delay between targets field is for.
When the member list is hidden, what is left to read?
The people who talk.
A supergroup can hide its participant list outright. The channel's full record carries a flag Telegram's documentation describes as "Whether the participant list is hidden", and when it is set there is nothing to enumerate while the member count keeps displaying as normal. This is what the repositories promising hidden members are really doing, and they are not defeating the flag. They read who spoke, because message senders stay visible when the roster does not.
It is a different data source and, for large channels, the more honest one. The module in the video takes a channel link, finds the discussion group Telegram attached to it, and scrapes the commenters instead of the membership — which also means the rows arrive pre-qualified, since somebody who posted last week is demonstrably a live account. Every filter on that screen exists to narrow the same trade: fewer rows, better rows.
Telethon script, GitHub repo or scraper software: what actually differs
Not the scraping code.
A telethon telegram scraper is genuinely short. Twenty lines resolve a group and iterate its participants, and against one account and one public group that really is the whole job. The cost shows up later, because MTProto is versioned and the layer moves, so a telegram scraper github project inherits its author's attention span and a repository that last built two years ago fails on a constructor that quietly changed shape. That is not an accusation aimed at anybody — it is what unmaintained free software is, in every language, and several of the more useful projects in this niche are archived rather than broken.
| Approach | What you supply | What it can read | Where it stops |
|---|---|---|---|
| A Telethon script | One account and your own error handling | Members and posts of groups that account joined | The first wait you did not write code for |
| A GitHub scraper and adder | Accounts, proxies, a Python environment | Whatever the API layer it targeted still supports | A layer change, with nobody maintaining it |
| An online scraper | Nothing, or your logged-in browser session | Public channel posts | The member list, which is not public |
| Desktop scraper software | Accounts and proxies, on your own machine | Members, senders and content into one export | The same Telegram limits as everything else |
A telegram scraper software licence does not buy a better API call, since there is only one and everybody is making it. It buys the pool, the pacing and the export format. Whether that is worth paying for depends almost entirely on scale: one session against one public group, write the script and enjoy it; a hundred sessions, and the pacing engine is the product. You can see the shape of the argument in the screens from the shipping build, where the scraper configuration and the session manager are the same application looking at the same pool.
Why the adder breaks long before the scraper does
The list is the easy half.
Sold as a telegram scraper and adder, as a telegram member scraper and adder, or shortened to a telegram scraper adder, the pairing is always the same two jobs bolted together — and the second one carries nearly all of the failure. Adding is a separate method with a separate error surface, and its errors are not about speed. The invite documentation lists USER_PRIVACY_RESTRICTED, "The user's privacy settings do not allow you to do this", and USER_NOT_MUTUAL_CONTACT, "The provided user is not a mutual contact". No delay setting clears either one, because both are the recipient's decision rather than yours.
Alongside them sits USER_CHANNELS_TOO_MUCH, "One of the users you tried to add is already in too many channels/supergroups". Neither your fault nor something pacing repairs.
A ten-thousand-row export is not ten thousand additions, and nobody can tell you the addable share before the run.
So the number vendors quote is the wrong number. Export size is easy to sell and easy to hit. The figure that decides whether a run was worth doing is how many of those rows can be actioned at all, and it depends on settings nobody can read in advance. A hard ceiling sits above all of it: USERS_TOO_MUCH, "The maximum number of users has been exceeded". The figure circulating hardest in this niche is a wall around two hundred added members, after which a group grows only by people following a link themselves — Telegram's API pages publish no such number, though its own client library documents a version of it that applies to channels rather than groups, so treat whichever figure you were quoted as an observation that needs pinning down, and note that the ceiling Telegram does document sits at the far end, where supergroups support up to 200,000 members each.
Filtering is the part we can defend, and it runs before the adder rather than after. Only users with a username drops rows that cannot be messaged or added at all. Skip deleted accounts drops accounts that no longer exist, and Skip bots drops most of the remaining noise. Minimum messages per user set to two or more drops drive-by posters and keeps the regulars. Shrinking a list before anything touches it is cheaper than learning the same lesson one USER_PRIVACY_RESTRICTED at a time, and once the list is filtered, what actually sends the messages is a separate question with its own ladder of limits.
Where does a scraped list leave you, and what will this software not do?
In possession of other people's personal data, a position that comes with obligations attached.
A member export is personal data wherever that concept exists, and messaging the people in it is direct marketing under GDPR, CAN-SPAM and their local equivalents. You need a lawful basis before the first message goes out, and the software cannot supply one. Telegram's Terms of Service ask you to agree not to send spam or scam users, and that judgement lands on whoever picked the source and wrote the message.
The honest limits are short. Nothing here raises Telegram's ceilings, because they are enforced on Telegram's servers against every client and a panel is one more client. It cannot read a participant list a group has hidden, it cannot return a phone number Telegram has not disclosed, and it does not supply accounts or proxies.
On cost: the licence runs $120 a month, and the scraping modules are not sold apart from the rest. If a particular source needs checking before you decide anything, tell us what you want to scrape — the neighbouring modules get the same treatment across the rest of these write-ups.