Telegram Scraper avatar

Telegram Scraper

Pricing

from $1.40 / 1,000 results

Go to Apify Store
Telegram Scraper

Telegram Scraper

Tracking Telegram channels by scrolling misses posts and numbers. Scrape public channels in bulk: messages, views, reactions, media, links, polls, comments, subscriber counts and engagement stats, with keyword and date filters. No login needed.

Pricing

from $1.40 / 1,000 results

Rating

0.0

(0)

Developer

Crawl Craft

Crawl Craft

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

What is Telegram Scraper?

Telegram Scraper is an Apify Actor that collects public channel data from Telegram: messages, views, reactions, media links, comments and subscriber counts. Paste usernames or t.me links, press Start, and download one structured row per message. No Telegram account and no API key are needed.

  • Bulk input: Add many usernames, channel links, post links or search links, and this Telegram public channel scraper works through them in one run.
  • Message-level detail: Each row from this Telegram message scraper carries text, date, views, reactions, forwards, replies, media, links and polls.
  • Channel profiles: Telegram channel statistics such as average views, engagement rate and top hashtags can be added to every channel.
  • Filters: Narrow the results by date, message ID, keywords, content type, views, reactions and forwards.
  • Monitoring: Return only the messages that are new since your previous run.

To start, click Try for free, paste a channel username and press Start.

What data can you extract from Telegram?

You can export Telegram channel data in JSON, CSV or Excel from three tables: Messages, Channels and Comments. Pick the Telegram channel analytics fields you need, or keep them all. The field names below come from the dataset views of each table.

Messages table

The default dataset holds one row per message. Every row from this Telegram channel extractor has the same core fields, and the Output tab groups the fields into Overview, Engagement, Content, Media, Links and polls, and Compact tables. Each message is split into separate fields for text, date, links and media, which is what people usually expect from a Telegram channel parser.

FieldViewDescription
channel.usernameOverviewUsername of the channel the message belongs to
idOverviewMessage ID within the channel
dateOverviewMessage date and time in ISO format
textOverviewPlain text of the message
viewsOverviewView count as a number
reactionsTotalOverviewTotal of all reaction counts
contentTypesOverviewContent types found in the message, such as text, photo, video, poll or link preview
urlOverviewLink to the message on t.me
viewsTextEngagementView count as Telegram shows it
paidStarsEngagementTotal of paid-star reactions
engagementRateEngagementEngagement rate of the message; empty when views are not available
reactionsEngagementReaction breakdown with a type and a count for each entry
forwardedFromEngagementSource of a forwarded message: name, username, message ID, link and author
replyToEngagementThe message being replied to: message ID, link, author, text and quote
commentsCountEngagementNumber of comments; filled when comment collection is on
authorContentAuthor name shown on the message, when present
editedContentTrue when the message is marked as edited
hasSpoilerContentTrue when the message contains spoiler text
entitiesContentHashtags, mentions, links, emails, phone numbers, crypto addresses and Telegram channels found in the message; added when extraction is on
matchedKeywordsContentKeep-keywords that matched; present only when some matched
searchQueryContentSearch phrase that found the message; present only for search results
textHtmlContentFormatted message HTML; added when Include message HTML is on
mediaMediaMedia entries with type, link, thumbnail, duration and file details when Telegram shows them; saved files add localPath
albumMessageIdsMediaIDs of all messages in the same album
mediaNotRenderedMediaTrue when the public Telegram pages do not show the media
mediaUnavailableReasonMediaReason given for media that is not shown
linksLinks and pollsLinks found in the message text
linkPreviewLinks and pollsLink preview: link, site name, title, description, image and video links
pollLinks and pollsPoll question, options with percentages, voters and poll type
buttonsLinks and pollsInline buttons with text and link
usernameCompact layoutChannel username with an @ prefix
fullNameCompact layoutChannel name
followersCompact layoutSubscriber count of the channel
bioCompact layoutChannel description
urlCompact layoutLink to the public page of the channel
message.fulldateCompact layoutMessage date and time in ISO format
message.viewsCompact layoutView count as a number
message.descriptionCompact layoutPlain text of the message
message.imageCompact layoutLink to the first photo of the message
message.videoCompact layoutLink to the first video, GIF or round video of the message
message.linkCompact layoutLink to the message
message.replyCompact layoutText of the message being replied to

Channels table

The Channels dataset has one row per channel and holds the profile and the statistics. Subscribers and statistics sit side by side, so you can compare Telegram channel subscribers statistics across many channels at once.

FieldViewDescription
usernameOverviewChannel username
titleOverviewChannel name
statusOverviewResult of reading the channel: ok, error, not_found, no_public_preview or invalid_input
subscribersOverviewSubscriber count, exact when available and otherwise rounded
verifiedOverviewTrue when the channel has a verified badge
messagesScrapedOverviewNumber of messages saved for the channel
urlOverviewLink to the channel
avatarUrlOverviewLink to the channel picture
descriptionProfileChannel description
profileTypeProfilechannel, group, bot or user
subscribersTextProfileSubscriber count as Telegram shows it
subscribersExactProfileTrue when subscribers is an exact count
membersProfileMember count of a public group
onlineProfileOnline count of a public group, when shown
scamProfileTrue when the channel carries a scam label
fakeProfileTrue when the channel carries a fake label
countersProfileCounters from the channel header, keyed by name
descriptionLinksProfileLinks in the channel description
statusMessageProfileMay explain a missing post or a status other than ok
channelIdProfileNumeric channel ID
latestMessageIdProfileID of the newest message seen
stats.messagesAnalyzedStatisticsNumber of messages analysed
stats.postsPerDayStatisticsAverage posts per day over the analysed period
stats.avgViewsStatisticsAverage views per message
stats.medianViewsStatisticsMedian views per message
stats.maxViewsStatisticsHighest view count among the analysed messages
stats.avgReactionsStatisticsAverage reactions per message
stats.engagementRateStatisticsEngagement rate across the analysed messages
stats.viewsPerSubscriberStatisticsAverage views relative to the subscriber count
stats.forwardedShareStatisticsShare of analysed messages that are forwards, from 0 to 1
stats.editedShareStatisticsShare of analysed messages that were edited, from 0 to 1
stats.topHashtagsStatisticsUp to 10 most used hashtags with counts
stats.topDomainsStatisticsUp to 10 most linked domains with counts
stats.postingWeekdaysStatisticsMessage counts per weekday

Comments table

A Telegram comments scraper is useful only when a channel has a discussion group, because that is where the comments live. The Comments dataset holds one row per collected comment.

FieldDescription
channelUsername of the channel
postIdID of the post the comment belongs to
commentIdID of the comment
dateComment date and time in ISO format
authorNameDisplay name of the commenter
authorUsernameUsername of the commenter, when available
textPlain text of the comment
reactionsReaction breakdown with a type and a count for each entry
replyToCommentIdID of the comment being replied to
urlLink to the comment

Use cases for Telegram data

  • Topic and brand tracking: Run a Telegram keyword search across the channels you follow and keep only the messages that match your words.
  • Market research: Collect posts and views from industry channels with a Telegram data scraper and compare them over time.
  • Content archiving: Keep a searchable archive of text, media links and link previews by scheduling a Telegram posts scraper.
  • Channel benchmarking: Compare average views, engagement rate and posting frequency across several channels.
  • Contact and link discovery: Pull hashtags, links, emails, phone numbers and crypto addresses that appear in public message text.
  • Audience feedback: Read comments and reactions to see how followers respond to a post.
  • Data pipelines: Send clean JSON rows into databases, dashboards or scripts, which a Telegram data extractor makes easier than copying by hand.

How to scrape Telegram channel messages

  1. Create a free Apify account.
  2. Open Telegram Scraper in Apify Console.
  3. Add usernames, channel links, post links or search links to Channels, links or usernames (urls).
  4. Set Max messages per channel and any filters, such as dates or keywords.
  5. Click Start and watch rows appear while the run is going.
  6. Download the dataset as JSON, CSV or Excel to export Telegram channel posts into your own tools.

These steps are enough to scrape data from Telegram channel pages without writing code. A single run can also scrape Telegram messages from many channels at once.

Post links such as https://t.me/durov/528 return that single message, a request you may have for a Telegram post scraper.

How to run a Telegram keyword search inside channels

Add one or more phrases to Search inside channels (searchQueries) to collect the messages that match each phrase. You can also paste a search link such as https://t.me/s/durov?q=ton, which this Telegram search scraper handles as a ready-made search.

To filter further, use Keep messages containing (includeKeywords) and Drop messages containing (excludeKeywords). The mode keywordMatch decides whether any or all keep-words must match, keywordRegex treats the lists as regular expressions, and caseSensitive matches letter case exactly.

How to export Telegram channel history by date

Set Messages newer than (dateFrom) and Messages older than (dateTo), or use Messages from the last N days (scrapeLastNDays). Relative values such as 7 days or 2 weeks work as well. A Telegram channel history download can also be limited by message ID with messageIdFrom and messageIdTo.

How to set up Telegram channel monitoring

Turn on Only new messages since last run (incrementalMode) and schedule the Actor in Apify Console. Each run then returns only the messages newer than the newest one seen in your previous run of this mode. For Telegram channel monitoring you can also add a webhookUrl to receive a short JSON summary when a run finishes.

How to download Telegram channel media

Telegram file links expire, so turn on Save media files (downloadMedia) to keep them. Choose the types in Media types to save (photo, video, GIF, voice message, round video or sticker) and set a size limit with maxMediaSizeMB. To download Telegram channel media, open the saved file through the permanent link in localPath.

How much does it cost to scrape Telegram?

Telegram Scraper uses tiered pay-per-event pricing: $2 per 1,000 results on the Free plan, and less on paid plans. Each run also pays a tiny Actor Start event of $0.00005 per run start.

Apify planPrice per 1,000 results
Free$2
Bronze$1.8
Silver$1.6
Gold / Platinum / Diamond$1.4

One result is one message row. When you turn messages off, one result is one channel profile row. The Channels and Comments tables are not charged separately. For example, on the Free plan 1,000 results cost $2, plus the start event.

Free plan runs return up to 10 results per run. Paid plans have no per-run cap, and a maximum spend limit that you set on a run stops it cleanly when reached. See the Pricing tab for current rates.

Input

Only urls is required. The example below uses values taken from the input schema (pre-filled or default). It is an example, not a captured run.

Telegram Scraper input form with channel usernames and filters

{
"urls": ["durov", "https://t.me/telegram"],
"collectMessages": true,
"maxMessagesPerChannel": 10,
"forwards": "include",
"outputMode": "messages"
}

This Telegram messages scraper returns the newest messages first within each channel. Tip: keep Max messages per channel low for a first test run. See the Input tab for every option.

InputWhat it does
urlsChannel usernames, @handles, channel links, post links or search links
collectMessagesTurn off to get channel profiles only
maxMessagesPerChannelNewest messages to collect from each channel; 0 means no limit
dateFrom, dateTo, scrapeLastNDaysDate range for messages
messageIdFrom, messageIdToMessage ID range
searchQueriesPhrases to search inside channels
includeKeywords, excludeKeywords, keywordMatch, keywordRegex, caseSensitiveKeyword filters
contentTypesKeep only messages with selected content types
minViews, minReactionsDrop messages below these counts
forwardsinclude, exclude or only forwarded messages
includeServiceMessagesAlso return notices such as channel created
exactSubscriberCountReturn the full subscriber number instead of a rounded one
channelStatsAdd channel statistics
extractEntitiesAdd hashtags, mentions, links, emails, phone numbers and crypto addresses
includeHtmlAdd the formatted message HTML
collectComments, maxCommentsPerPostCollect public comments; 0 means all
discoverRelatedChannels, discoveryDepth, maxDiscoveredChannelsAlso read channels found in forwards, mentions and links
downloadMedia, mediaTypesToDownload (Media types to save), maxMediaSizeMBSave media files to the run storage
incrementalModeOnly messages new since the last run
webhookUrlReceives a short JSON summary when the run finishes
outputModemessages for the detailed layout or legacy for the compact layout
proxyConfigurationOptional proxy settings

Output

The scraped results are shown as a dataset in the Storage tab. The table view is for convenience and does not show all the fields.

Telegram Scraper output table with messages and channels

Use the Output tab for a Telegram channel data download in these formats:

  • JSON
  • CSV
  • Excel

The output has the Messages dataset, a Channels dataset, a Comments dataset when comment collection is on, and saved media files when media saving is on. The Compact result format gives one row per message with profile fields at the top and is chosen with the outputMode input. Example output is not shown on this page because no sample output exists for this Actor yet.

Limitations and error handling

This Telegram channel scraper reads only public channels with visible messages. Private channels, invite links and links that do not point to a channel are rejected, and public groups, bots and user accounts return a channel row with the status no_public_preview.

  • Free plan runs return up to 10 results per run.
  • Comments can be collected only for channels that have a discussion group.
  • Related channel discovery follows 1 to 3 levels and stops at your maxDiscoveredChannels value.
  • Some fields can be empty when Telegram does not show them; if the exact subscriber count is not available, the rounded value is used.
  • Max messages checked per channel (maxScanned) caps how many messages are checked in a channel when filters are very strict; 0 means no limit.
  • A media file larger than maxMediaSizeMB is skipped and noted in downloadError.

Each channel row has a status. Message rows can carry a commentsError when comments could not be loaded.

StatusMeaningWhat to do
okThe channel was readNothing
errorThe channel page could not be loaded or processedRun again later
not_foundThe username does not exist or is not publicCheck the spelling and that the channel is public
no_public_previewA public group, a bot, a user account or a channel whose public page is disabled by its ownerUse a different public channel
invalid_inputThe value in urls is not a valid username or linkFix the value; the reason is in statusMessage

Integrating Telegram Scraper with other apps

This Telegram scraping tool runs on the Apify platform, so you can schedule runs, start them through the API and read the results in JSON, CSV or Excel. Teams that want a Telegram channel API can start runs with the Apify API and read the dataset items over HTTP. See the API tab for ready-made code snippets.

Use the webhookUrl input for a short summary at the end of each run. The Apify integrations documentation and the scheduling documentation explain how to connect runs with other tools.

More Apify Actors by crawl_craft

This Telegram channel data extractor focuses on one source, so the Actors below are other public data Actors by crawl_craft.

ActorWhat it extractsWhen to use it
Facebook Posts Search ScraperPublic Facebook posts found by keyword or hashtag, with reactions, comments and sharesUse it when your target is Facebook posts instead of Telegram channels
TikTok Video ScraperTikTok video captions, hashtags, views, likes, comments, shares and author dataUse it when you have TikTok video links
Google Job ScraperGoogle Jobs listings with company, location, salary and apply linksUse it when you need job listings

Telegram Scraper only reads data that channel owners have made publicly available on Telegram and does not access private chats, private channels or accounts. Results can still contain personal data, for example names, usernames or contact details written in public posts and comments. Telegram channel scraping should therefore have a legitimate reason.

Consider GDPR (Regulation (EU) 2016/679) and the terms of the platform, and consult a lawyer if you are unsure. Apify explains the topic in Is web scraping legal? and Ethical web scraping.

FAQ

How much does it cost?

Pricing is tiered pay-per-event: $2 per 1,000 results on the Free plan and less on paid plans (see the table in the pricing section), plus an Actor Start event of $0.00005 per run start. Free plan runs return up to 10 results.

Do I need a Telegram account or API key?

No. Because this Telegram web scraper reads public channel pages, you do not need a Telegram account, a login or an API key.

How many messages can I get?

Set maxMessagesPerChannel to the number you want per channel, or to 0 for no limit. Free plan runs are capped at 10 results. You choose how many posts this Telegram channel posts scraper collects, and the newest messages come first.

Can I get the Telegram channel subscriber count?

Yes. Each channel row has subscribers and subscribersText. With Exact subscriber count (exactSubscriberCount) on, the Actor returns the full number, such as 10459608, instead of a rounded value such as 10.4M. Asking for the Telegram channel subscriber count may still return a rounded value when the exact one is not available.

Can I download photos and videos?

Yes. Every message lists its media entries with type and link, and Save media files stores selected types for you. This Telegram channel media scraper supports photos, videos, GIFs, voice messages, round videos and stickers. Teams that look for a Telegram channel downloader should know that only the types you select are saved, up to your size limit.

Can I collect comments?

Yes, for channels that have a discussion group. Turn on Collect comments (collectComments) and set maxCommentsPerPost. This Telegram comment scraper adds the comments to each message and to the separate Comments table.

Is this different from the Telegram API?

Yes. If you searched for Telegram API channel statistics, note that this Actor needs no API credentials. It reads public pages and calculates statistics from the messages it collects, not owner-only analytics.

Can I scrape private channels or groups?

No. Only public channels with visible messages can be read. Public groups, bots and user accounts return a channel row with a status note instead of messages.

Is this a Telegram crawler?

It does not crawl all of Telegram, because it reads only the channels you list. With Discover related channels on, you get Telegram channel crawler behavior limited to forwards, mentions and links, up to 3 levels deep.

Can I use it with the API?

Yes. A Telegram channel message scraper workflow can start this Actor through the Apify API and read the dataset items afterwards. The API tab shows ready-made snippets.

Your feedback

Found a bug or want a new feature? Open the Issues tab of this Actor on Apify. For custom solutions, write to hello.crawlcraft@gmail.com.