Skip to content

Telegram Profile Scraper

Try for free

Look up Telegram usernames, @handles and t.me links in bulk: type (user, bot, channel, group), name, bio, subscriber or member count, verified flag, photo and whether the name exists.

✈️ Telegram Profile Scraper

Turn a list of Telegram usernames, @handles or t.me links into clean profile rows: type (user, bot, channel or group), name, bio, subscriber or member count, verified badge, photo link, and whether the name exists at all. It reads only the public t.me pages, so there is no Telegram account, phone number or API key, and a thousand names take about a minute.

✨ Why use Telegram Profile Scraper?

  • 🔓 No login, no session — it reads the same public page anyone sees at t.me/<name>. Nothing to authorize and nothing that can get an account banned.
  • ⚡ Fast on long lists — names are checked in parallel. 1,000 names finished in about a minute in our tests.
  • 🧭 Any spelling — telegram, @telegram, https://t.me/telegram, t.me/s/telegram, telegram.me/telegram and tg://resolve?domain=telegram all collapse into one row.
  • 🔎 Knows what exists — every name gets a status of success or not_found, so you can clean a list of dead or mistyped handles.
  • 🎯 Filters built in — keep only bots, channels, groups or users, verified accounts, or a member-count range. Rows left out are not charged.
  • 💸 Cheap — $2 per 1,000 profiles, with the datacenter proxy built in.

🎯 Use cases

  • 📇 Lead lists — check which channels and groups from a spreadsheet are real and how big they are.
  • 📈 Audience research — rank communities by subscribers or members before you spend on ads or outreach.
  • 🧹 List cleaning — drop dead, renamed or mistyped usernames from a big list.
  • 🤖 Bot directories — collect bot names, bios and monthly user counts.
  • 🛡️ Brand monitoring — confirm which handles around your brand exist and who holds them.
  • 🗂️ Dataset enrichment — add type, title, bio and size to a column of Telegram links.

🚀 How to use

  1. Paste usernames, @handles or t.me links into Telegram usernames or URLs, one per line. For lists longer than about 600 names, put them in a text file and paste its public link into Names file link.
  2. Set Maximum profiles (0 means no limit) and any filters you want.
  3. Click Start. The default proxy is already set.
  4. Open the Output tab and export the rows as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
telegram_urlUsernames, @handles or t.me links. Duplicates are removed.
listUrlOptional public link to a text or CSV file with one name per line, for long lists.
maxResultsStop after this many profile rows. Default 1000, 0 means no limit.
entityTypesKeep only user, bot, channel or group.
skipNotFoundDo not save (or charge) names that do not exist.
verifiedOnlyKeep only accounts with the verified badge.
minMembers, maxMembersKeep channels and groups in this size range.
proxyConfigurationDatacenter proxy by default.
{
  "telegram_url": ["telegram", "@BotFather", "https://t.me/TelegramTips"],
  "maxResults": 1000,
  "entityTypes": ["channel", "bot"],
  "proxyConfiguration": { "useScrapelyProxy": true, "scrapelyProxyGroups": ["DATACENTER"] }
}

📤 Output

One row per unique name, in input order.

FieldMeaning
query_index, queryPosition among the unique names, and the entry as you typed it.
status, existssuccess / not_found, and the same as a boolean.
typeuser, bot, channel or group.
username, source_urlThe normalized handle and its https://t.me/... link.
titleChannel or group title, or the name of a user or bot.
descriptionBio or about text.
member_countSubscribers of a channel or members of a group.
online_countMembers online, shown for some groups.
monthly_usersMonthly users, shown for some bots.
verifiedTelegram's verified badge.
has_photo, photo_urlWhether there is a profile photo, and its image link.
processed_atUTC time of the lookup.
[
  {
    "query_index": 1,
    "query": "telegram",
    "status": "success",
    "exists": true,
    "username": "telegram",
    "source_url": "https://t.me/telegram",
    "type": "channel",
    "title": "Telegram News",
    "description": "The official Telegram on Telegram. Much recursion. Very Telegram. Wow.",
    "member_count": 9334601,
    "online_count": null,
    "monthly_users": null,
    "verified": true,
    "has_photo": true,
    "photo_url": "https://cdn1.telesco.pe/file/…jpg",
    "processed_at": "2026-10-14T09:53:16+00:00"
  },
  {
    "query_index": 2,
    "query": "@BotFather",
    "status": "success",
    "exists": true,
    "username": "BotFather",
    "source_url": "https://t.me/BotFather",
    "type": "bot",
    "title": "BotFather",
    "description": "BotFather is the one bot to rule them all. Use it to create new bot accounts and manage your existing bots.",
    "member_count": null,
    "online_count": null,
    "monthly_users": 7560507,
    "verified": true,
    "has_photo": true,
    "photo_url": "https://cdn1.telesco.pe/file/…jpg",
    "processed_at": "2026-10-14T09:53:16+00:00"
  }
]

A name that does not exist comes back with only query, status set to not_found, exists false, the normalized username and source_url, and processed_at.

When the run ends, a summary is saved as OUTPUT in the key-value store: counts, duplicates removed, invalid entries and any names that could not be read.

💰 Pricing

$2.00 per 1,000 profile rows ($0.002 each), charged as the result-item event. A not_found row counts as a row; turn on Skip names that do not exist if you do not want to pay for those. Invalid entries, duplicates, names that could not be read after retries, and rows removed by a filter are never charged.

Platform usage (compute and datacenter proxy) is billed on top at your normal rates and is small: in our 1,000-name test it came to under one cent.

JobApproximate cost
100 names$0.20
1,000 names$2.01
10,000 namesabout $20

Set a maximum total charge on the run and it stops cleanly when the budget is used.

❓ FAQ

Is it legal? It reads public web pages that Telegram serves to anyone, and it does not log in. You are responsible for how you use the data, so follow the privacy laws that apply to you and do not use it to harass or profile private people.

Do I need a Telegram account, phone number or proxy? No account and no phone number. A datacenter proxy is set up for you.

How many names can I run? Up to 100,000 names per run (we tested 10,000). Paste up to about 600 inline, or use the names file link for longer lists.

Why is a field empty? Telegram only shows some fields for some types. Only channels and groups have a member count, only some bots show monthly users, and users with no photo have no photo_url. Missing values are null.

Why is a name not_found? Telegram shows no public page for it: the name is free, was deleted or renamed, or is not public. A single lookup is not proof that a name never existed.

Can I use invite links? Yes, t.me/+code and t.me/joinchat/code links return the public preview Telegram shows (title, photo, member count) when the invite is valid.

Can I schedule it or call it from code? Yes, use schedules, webhooks or the API like any other actor.

⚠️ Limits

  • 🚫 Only what the public t.me page shows. Creation date, numeric ID, linked chats, reactions, business hours, phone-number lookup and anything that needs a Telegram login are not available.
  • 🏷️ Telegram does not show scam or fake warnings on public pages, so only the verified badge is returned.
  • 👥 A page cannot tell a group from a supergroup, so both are group.
  • 🔒 Private groups and channels only resolve through an invite link, and only when Telegram shows a preview.
  • 📏 Inline input is limited to about 8 KB, around 600 names. Use the names file link beyond that.
  • ⏱️ Counts are live values at the time of the lookup and change constantly.
  • 🐢 Telegram can slow or refuse requests. The actor retries, keeps what it has, and says in the final status message how many names it could not read.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.