Telegram Channels Scraper avatar

Telegram Channels Scraper

Pricing

$0.90 / 1,000 channels

Go to Apify Store
Telegram Channels Scraper

Telegram Channels Scraper

Find public Telegram channels by keyword or enrich known @handles and t.me links. Export titles, usernames, descriptions, member counts, visible flags, profile photos, and optional recent message previews.

Pricing

$0.90 / 1,000 channels

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

82

Total users

35

Monthly active users

19 hours ago

Last modified

Share

🔎 Find public Telegram channels for research

Researchers, marketers, and community teams can use Telegram Channels Scraper to find public Telegram channels from search terms or enrich known @handles, usernames, and t.me links. It returns channel titles, usernames, public URLs, descriptions, member or subscriber counts, visible flags, profile photos, discovery evidence, and optional recent message previews in clean dataset rows.

📦 Public Telegram channel rows

Returned data

Each saved row is the first eligible public match from a search term or known target. The row keeps the source context for that first match. Depending on what Telegram and the discovery source show, it can include channel identity, public counts and flags, a profile photo URL, keyword directory evidence, and up to five recent public messages.

▶️ Search or enrich known targets

Run steps

  1. Add search terms, known public channels, or both.
  2. Set the saved-row and per-term limits, or leave either limit empty to return all available results until its public source is exhausted.
  3. Turn on Recent message preview only when you need a small sample of recent public posts.
  4. Start the Actor and open the dataset.

First-match rule

When the same channel appears again through another keyword, URL, handle, or similar submitted value, the Actor keeps the first eligible saved row and ignores the later match. The saved row shows only the first match's search term or known-target position.

⚙️ Input

Use search terms, known channels, or both in one run. The two limits can be left empty to return all available results until the public source is exhausted.

Input fields

FieldTypeWhat it does
searchTermsarray of stringsSearches for public Telegram channels by words or topics. Up to 50 non-empty values.
channelTargetsarray of stringsEnriches public Telegram usernames, @handles, t.me links, or telegram.me links. Up to 1,000 non-empty values.
maxChannelsintegerMaximum saved channel rows across search results and known targets. Leave it empty to return all available results until the public sources are exhausted.
maxChannelsPerSearchTermintegerMaximum channels to consider for each search term. Leave it empty to return all available results for each term until that public source is exhausted.
includeRecentMessagesPreviewbooleanAdds a small sample of recent public messages to each saved row. It is off by default.
maxPreviewMessagesPerChannelintegerSets the preview size when previews are on. Use 1 to 5, or leave it at 0 when previews are off.

Example input

This is the public input from a successful current-beta default-input run:

{
"searchTerms": [
"ai"
],
"channelTargets": [
"@telegram"
],
"maxChannels": 10,
"maxChannelsPerSearchTerm": 10,
"includeRecentMessagesPreview": false,
"maxPreviewMessagesPerChannel": 0
}

Public scope

Only public Telegram pages are supported. Private /c/ links, invite-only chats, hidden member lists, Telegram login, cookies, phone numbers, and Telegram API keys are not supported.

🧾 Output

Each saved row follows one public dataset shape. The output schema exposes results as a link to the default dataset. Values that Telegram or the discovery source does not show can be null, and recentMessages is an array that can be empty.

Output link

FieldTypeWhat it does
resultsstringLinks to the saved rows in the default dataset.

Dataset row fields

FieldTypeWhat it does
resultPositionintegerNumber of this row in the saved results.
matchedSearchTermstring or nullSearch term that first found the row; null for a known target.
inputIndexinteger or nullZero-based position of the known target; null for a keyword result.
usernamestringPublic Telegram username without the @ sign.
channelUrlstringCanonical public Telegram URL.
channelTitlestring or nullPublic channel or group title, when shown.
descriptionstring or nullPublic channel or group description, when shown.
entityKindstring or nullPublic Telegram entity type, such as channel, group, bot, user, or unknown.
memberCountinteger or nullPublic member or subscriber count, when shown.
isVerifiedboolean or nullSays whether Telegram shows the entity as verified.
isScamboolean or nullSays whether Telegram marks the entity as a scam.
isFakeboolean or nullSays whether Telegram marks the entity as fake.
isRestrictedboolean or nullSays whether Telegram marks the entity as restricted.
isBotboolean or nullSays whether Telegram identifies the entity as a bot.
profilePhotoUrlstring or nullPublic profile photo URL, when shown.
directoryobject or nullPublic directory evidence for a keyword match; null for a known target.
directory.titlestring or nullTitle shown by the public directory.
directory.descriptionstring or nullDescription shown by the public directory.
directory.memberCountinteger or nullMember count shown by the public directory.
directory.urlstring or nullPublic directory URL used to find the channel.
recentMessagesarray of objectsUp to five recent public messages when the preview is on.
recentMessages[].messageIdstringTelegram message ID in the channel.
recentMessages[].datestring or nullMessage date and time, when shown.
recentMessages[].textstring or nullVisible message text or caption, when present.
recentMessages[].viewsinteger or nullVisible view count, when present.

Keyword-search row

This is a complete row from a successful current-beta keyword run:

{
"matchedSearchTerm": "telegram",
"inputIndex": null,
"username": "hasbunallohi_va_nemal_vakii",
"channelUrl": "https://t.me/hasbunallohi_va_nemal_vakii",
"channelTitle": "Telegram",
"description": "You can view and join @hasbunallohi_va_nemal_vakii right away.",
"entityKind": "group",
"memberCount": 19,
"isVerified": false,
"isScam": false,
"isFake": false,
"isRestricted": false,
"isBot": false,
"profilePhotoUrl": "https://cdn4.telesco.pe/file/On14fWeRpkRD4mvrpEVmMpgzbLjkabmjubpHyFFASrifvkgrQFYoT1c7HfbL4OXoO17ofKYvGBoiX49RFFKDIdVTcl4_nvzwHmA51WRroejG_ACMPtYB5fyw1JDIbTAvhHM0r8a5roHvMfQptknyCtOSNalwvb_ELLGnraqFhAtj-GhPoVPv06guiAt60Tv0Nn6tw_Tsg7ts4vKenJZzCPscznjjIdtm1ARAp6vn_NJboVoJdUjksdd3SdMYYjnf3-d8lLXV_lLZM1TfWL9x6p9yyKrywLf-K5gBiavnxpOvMvIe9ulCqvYjam1h2B9RlW6yGbosqbdhDTb0OlhfzA.jpg",
"directory": {
"title": "Telegram",
"description": null,
"memberCount": null,
"url": "https://lyzem.com/search?q=telegram&f=channels"
},
"recentMessages": [],
"resultPosition": 1
}

Known-target row with a preview

This is a complete row from a successful current-beta run with one recent public message preview:

{
"matchedSearchTerm": null,
"inputIndex": 0,
"username": "telegram",
"channelUrl": "https://t.me/telegram",
"channelTitle": "Telegram News",
"description": "The official Telegram on Telegram. Much recursion. Very Telegram. Wow.",
"entityKind": "channel",
"memberCount": 9916916,
"isVerified": true,
"isScam": false,
"isFake": false,
"isRestricted": false,
"isBot": false,
"profilePhotoUrl": "https://cdn1.telesco.pe/file/p3pErmy-bGr0R07jl-Jy_EJ_3ZsthT0VjKSUY8IrImZ8Clyo0bO_9bHryNzQbN_Ok1wfKhfk-9A8Zv3T09upqHm33pOwnCowWNod3lUl-rVTzs7xp8_JUquGVrrVVVV0dcBnKC5gTGZvhfrwI-8k4ehIzjaSb97DgTYHzXck4ID8jTQfP7ttLrAetoIqP41-2kot9mwBZp_DVSHVT2Wp4LTFggHU2AOiUinPlSDsUvW5qKpWcwAtTCPAPZmN3uN6RICabnEDoGW_XkdeLarVudWjMbMThSxYgBaGbIbZSD1gYIt8zlKAFmy5MeTdr_oPp542KJJJnzu23ID0dLF7kQ.jpg",
"directory": null,
"recentMessages": [
{
"messageId": "435",
"date": null,
"text": "AI Text Editor. The message bar now has a built-in editor that can instantly fix grammar, translate your text or rewrite it in several styles:🤝 Formal🎯 Short🍖 Tribal🗿 Zen🕯 Biblical💼 CorpTelegram AI features are 100% private and optional – powered by the Cocoon AI Network.March Features1 • 2 • 3 • 4 • 5 • 6 • 7 • 8 • 9 • More",
"views": 1500000
}
],
"resultPosition": 1
}

Exports

You can export the dataset as JSON, CSV, Excel, XML, RSS, or HTML, or read it through the Apify API.

💳 Pricing

Pay-per-event

This Actor uses pay-per-event pricing. The charged event is one saved public Telegram channel row. Apify shows the current price before you start a paid run.

🔌 Integrations

Apify access

Run the Actor from the Apify API and move the default dataset into your own script, sheet, dashboard, CRM, or data workflow. Dataset exports are available as JSON, CSV, Excel, XML, RSS, or HTML.

Video guide

❓ FAQ

What happens when the same channel matches more than once?

The first eligible match is saved at once. Later matches from another keyword, URL, handle, or similar submitted value are ignored, so the row keeps only the first match's source context.

What happens when I leave a channel limit empty?

maxChannels returns all available results until the public sources are exhausted. maxChannelsPerSearchTerm does the same for each search term when it is empty.

Can I search for public Telegram channels?

Yes. Add one or more topics or keywords to Search terms, such as markets, products, regions, creators, or communities. The saved rows include the first matching search term when the source provides it.

Can I enrich a channel I already know?

Yes. Add a public username, @handle, t.me link, or telegram.me link to Known channels. You can use known targets alone or with search terms.

Can I add recent Telegram messages?

Yes. Turn on Recent message preview and set maxPreviewMessagesPerChannel from 1 to 5. The row can then include a small sample of recent public messages when they are visible.

Does it need a Telegram account or API key?

No. It uses public Telegram pages and does not need a Telegram login, cookies, phone number, or API key.

Can it scrape Telegram members or private channels?

No. It can return a public member or subscriber count when shown, but it does not collect member lists or private content.

Does it export full Telegram message history?

No. It adds only a small recent-message preview. Use a dedicated Telegram channel messages scraper when you need more than a small preview.

Can it return every channel that matches a keyword?

No exhaustive match set is promised. Available source results, your limits, and first-match deduplication affect which rows are saved.

Why use this instead of the Telegram API?

The Telegram API can fit an authenticated app workflow. This Actor is for public channel discovery and known-target enrichment without Telegram credentials.

📝 Changelog

1.0: More reliable channel results and clearer output

  • Return completed public channel rows during larger runs, even when some individual lookups are unavailable.
  • Provide focused channel rows with canonical URLs, search or target context, public details, and optional recent-message previews.

0.0: Initial release

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré