Telegram Channel Scraper avatar

Telegram Channel Scraper

Pricing

from $2.00 / 1,000 result items

Go to Apify Store
Telegram Channel Scraper

Telegram Channel Scraper

Scrape posts, views, media links and channel info from any public Telegram channel without login or API keys.

Pricing

from $2.00 / 1,000 result items

Rating

0.0

(0)

Developer

Trevor Ortega

Trevor Ortega

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Scrape posts, views, media links and channel info from any public Telegram channel without login or API keys.

Telegram Channel Scraper reads the public web preview of a channel (https://t.me/s/<channel>) and turns it into a clean dataset: every post with its text, date, view count, photos, videos, documents, polls, link previews, forwards, replies and reactions, plus one channel-info item with the subscriber count. No Telegram account, phone number, bot token or API ID is needed. Download the results as JSON, CSV or Excel, or pull them through the API into Google Sheets, n8n, or an LLM pipeline. You pay only for the items you get.

What data does Telegram Channel Scraper extract?

Each run produces two kinds of items, distinguished by the type field.

Post items (type: "post")

FieldDescription
channelChannel username, e.g. telegram
postIdNumeric message id inside the channel
urlPermalink, https://t.me/<channel>/<postId>
datePublish time, ISO 8601 with timezone (2026-05-14T16:08:31+00:00)
textPlain text with line breaks preserved
textHtmlOriginal formatted HTML (bold, links, spoilers, emoji)
viewsView count as an integer (1.4M becomes 1400000)
authorPost signature, when the channel signs posts
isEditedtrue when the post was edited
forwardedFrom{name, url, author} of the original channel/user for forwarded posts
replyToPostId, replyToUrlThe post this one replies to (comments-style replies inside the channel)
mediaList of attachments, see below
linksAll URLs in the text
hashtagsHashtags in the text, without #
mentions@usernames mentioned in the text, without @
reactions[{emoji, count}] when the channel shows reactions
isPinnedAlways null: the web preview does not expose pinned status

Media entries have a type of photo, video, round_video, audio, voice, document, sticker, location, poll or link_preview, plus whatever is available for that type: url (direct CDN file link for photos, videos, voice and stickers), thumbnail, duration in seconds, title/extra for documents and audio, question/options/voters for polls and siteName/title/description for link previews.

Channel items (type: "channel")

FieldDescription
usernameChannel username
urlhttps://t.me/<username>
titleDisplay name
descriptionChannel bio
subscribersSubscriber count as an integer (9.61M becomes 9610000)
photosCount, videosCount, filesCount, linksCountMedia counters when Telegram shows them
photoUrlChannel avatar
isVerifiedVerified badge present
webPreviewtrue when posts are available; false when only the channel card could be read

How to use Telegram Channel Scraper

  1. Paste channel usernames or links into Channels, one per line: durov, @telegram, https://t.me/telegram.
  2. Set Max posts per channel (newest first) and Max items to cap the run and the cost.
  3. Leave Include channel info on if you want the subscriber count and description.
  4. Click Start. Results appear in the Dataset tab; export from there or use the API.

Input example

{
"channels": ["telegram", "https://t.me/durov"],
"maxPostsPerChannel": 100,
"maxItems": 500,
"includeChannelInfo": true
}

Output example

{
"type": "post",
"channel": "telegram",
"postId": 441,
"url": "https://t.me/telegram/441",
"date": "2026-05-14T16:08:31+00:00",
"text": "Bot-to-Bot Communication. Bots are now able to respond to other bots, not just users.\n\nAI enthusiasts can utilize this to create custom workflows with autonomous agents.",
"textHtml": "<b>Bot-to-Bot Communication.</b> Bots are now able to respond to <b>other bots</b>, not just users.<br/><br/>…",
"views": 1400000,
"author": null,
"isEdited": false,
"forwardedFrom": null,
"replyToPostId": null,
"media": [
{
"type": "video",
"url": "https://cdn1.telesco.pe/file/c01503a63e.mp4?token=…",
"thumbnail": "https://cdn1.telesco.pe/file/ar1oQlpf….jpg",
"duration": 6
}
],
"links": ["https://t.me/telegram/440"],
"hashtags": [],
"mentions": [],
"reactions": []
}
{
"type": "channel",
"username": "telegram",
"url": "https://t.me/telegram",
"title": "Telegram News",
"description": "The official Telegram on Telegram. Much recursion. Very Telegram. Wow.",
"subscribers": 9610000,
"photosCount": 16,
"videosCount": 228,
"linksCount": 378,
"photoUrl": "https://cdn1.telesco.pe/file/….jpg",
"isVerified": true
}

Does it work without a Telegram account or API key?

Yes. The scraper uses only the public web preview that Telegram publishes for every public channel, the same page you see when you open https://t.me/s/telegram in a browser while logged out. No account, phone number, session file, bot token or api_id/api_hash is required, so there is nothing that can get banned.

How to scrape the full history of a Telegram channel

Set Max posts per channel to the number you need (and Max items at least as high). The scraper starts from the newest post and walks back through the history 20 posts per page until it reaches your limit or the first post of the channel. Every run re-reads from the top, so to keep a channel up to date schedule the Actor and use the url field to deduplicate.

Can it scrape private channels, groups or user chats?

No, and it never tries to. Only public channels with a username are supported. Invite links (t.me/+…, t.me/joinchat/…), private t.me/c/… links, groups and personal accounts are skipped with a clear message in the run log. A small number of public channels have the web preview switched off by their owner; for those the scraper can still return the channel card (title, description, subscriber count) but not the posts.

How to get Telegram post views and subscriber counts as numbers

Telegram shows counters as 1.4M or 9.61K. The scraper converts them into plain integers (views, subscribers, voters, reaction count) so they sort and sum correctly in spreadsheets and databases. Note that the displayed value is rounded by Telegram, so 1.4M means roughly 1.4 million, not an exact figure.

Can I download the photos and videos?

Every photo, video, voice message and sticker comes with a direct url on Telegram's CDN, and videos also include a thumbnail and duration. Video links carry a time-limited token, so download them shortly after the run if you need the files themselves. Large videos that Telegram does not stream in the browser only provide a thumbnail.

Pricing

Pay per result: each post or channel-info item costs a fraction of a cent, with no subscription and no minimum. Apify's free plan is enough to try it on a few thousand posts.

Integrations and API

Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the API tab for ready-made snippets, or schedule the Actor to keep a channel archive fresh.

This Actor collects only publicly available, non-personal data: content that Telegram itself publishes on the open web for anyone to read without an account. It does not access private channels, groups or direct messages and does not collect phone numbers or user profiles. You are responsible for how you use the data and for complying with Telegram's terms and applicable law, including the copyright of channel owners.

Support

Found a bug or need a field added? Open an issue in the Issues tab; it is usually answered within a day.