Telegram Channel Scraper - Posts, Channel Info & Search avatar

Telegram Channel Scraper - Posts, Channel Info & Search

Pricing

from $2.00 / 1,000 posts

Go to Apify Store
Telegram Channel Scraper - Posts, Channel Info & Search

Telegram Channel Scraper - Posts, Channel Info & Search

Scrape public Telegram channels: channel profile and subscriber counts, a channel's posts with views, reactions, media and link previews, single posts by t.me link, and keyword search inside a channel's recent posts. Export to JSON/CSV/Excel. No Telegram account or phone number needed.

Pricing

from $2.00 / 1,000 posts

Rating

0.0

(0)

Developer

VulnV

VulnV

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Telegram Channel Scraper - Posts, Channel Info & In-Channel Search

Scrape public Telegram channels and export channel profiles and posts to JSON, CSV or Excel. Get a channel's title, description, verified badge and subscriber count, pull its posts with views, reactions, photos, videos and link previews, fetch single posts by their t.me link, or search a channel's recent posts for a keyword - all from one Actor. Each result is one clean, flat row.

No Telegram account, no phone number, no session file and no proxies to configure - data is read from Telegram's public channel preview through a fast, managed pipeline. Just pick an operation, add your channels and press Start.

Unofficial notice: This is an independent tool and is not affiliated with, endorsed by, or connected to Telegram or Telegram Messenger Inc. "Telegram" is a trademark of its respective owner, used here only to describe what the Actor scrapes.

What is Telegram?

Telegram is a cloud messaging app with around a billion monthly users. Its public channels are one-to-many broadcast feeds used by news outlets, creators, brands, crypto projects, communities and public figures, some with tens of millions of subscribers. Every public channel has a web preview at t.me/s/<channel>. This scraper turns those public channels into structured data so you can monitor news, track engagement and archive posts at scale without logging in to Telegram.

Operations

Pick one Operation and fill in the matching field:

OperationInput fieldWhat you get
Channel infochannelsA channel's profile: title, description, verified badge, photo, subscribers, and photo / video / link counts.
Channel postschannelsA channel's posts, newest first, paginated back through its history, with views, reactions, media and link previews.
Post detailspostUrlsThe full detail of each post from its t.me link.
Search posts in a channelchannels + searchQueryPosts in each channel that contain your keyword.

channels accept https://t.me/<channel> links, @username or a bare username. postUrls accept links like https://t.me/durov/548 (or durov/548) - one per line.

About in-channel search: Telegram's public preview has no native search, so Search posts in a channel checks roughly the channel's 100 most recent posts, not its full history. To scan older posts, use Channel posts with a higher limit and filter the results yourself. There is no global search across all of Telegram.

Only public channels can be scraped. Private channels, groups, and channels that have turned off their public web preview are skipped with a clear log message. Post comments and "similar channels" are not available from the public preview, so this Actor does not offer them.

How to use it (step by step)

  1. Choose an Operation.
  2. Fill in the matching input:
    • Channel info / Channel posts -> add one or more Channels (e.g. durov, https://t.me/telegram).
    • Post details -> paste Post URLs (e.g. https://t.me/durov/548).
    • Search posts in a channel -> add Channels and a Search keyword.
  3. Set Maximum results per input (default 100, or 0 for all available) for Channel posts and Search.
  4. Press Start. Export the dataset as JSON, CSV, Excel, XML or via the API.

Input

FieldTypeDescription
operationstringRequired. channel_info, channel_posts, post_detail, or search_channel_posts.
channelsarrayChannel links, @usernames or usernames (for channel_info, channel_posts, search_channel_posts).
postUrlsarrayPost links like https://t.me/durov/548 (for post_detail).
searchQuerystringKeyword to look for (for search_channel_posts).
maxItemsintegerMax results per channel. 0 = all available. Default 100.

Output

Every row carries a record_type of channel or post. Post fields:

FieldDescription
post_id, channel, post_urlPost identity and its public t.me link.
post_type, date, text, authortext / photo / video, publish time (ISO-8601 UTC), plain text and signature.
views_countView count.
reactions_count, paid_reactions_count, reactionsFree emoji reactions, paid Star reactions, and the per-reaction breakdown.
is_forwarded, forwarded_from, forwarded_from_urlForward source, when the post was forwarded.
reply_to_url, reply_to_textThe post this one replies to, when it is a reply.
link_preview_url, link_preview_title, link_preview_siteThe link preview card.
photo_count, photo_urls, video_count, video_urls, video_thumbnail_url, video_duration_secondsAttached media.

Channel (channel) rows carry channel_url, title, description, verified, photo_url, subscribers_count, photos_count, videos_count and links_count. Search rows also carry the search_query that matched.

Telegram shows large numbers rounded (for example 1.81M views or 13.8K reactions). The Actor converts them to plain integers (1810000, 13800), so treat big counts as approximate.

Example post row:

{
"record_type": "post",
"operation": "post_detail",
"input": "https://t.me/durov/548",
"post_id": "548",
"channel": "durov",
"post_url": "https://t.me/durov/548",
"post_type": "text",
"date": "2026-09-11T16:04:02+00:00",
"text": "Telegram has become the sponsor of Codeforces...",
"author": "Pavel Durov",
"views_count": 1810000,
"reactions_count": 46370,
"paid_reactions_count": 13800,
"link_preview_url": "https://codeforces.com/blog/entry/156620",
"photo_count": 0,
"video_count": 0
}

Common use cases

  • News and media monitoring - follow news, government and industry channels and collect every new post.
  • Engagement tracking - compare views and reactions across posts and channels over time.
  • Brand and crypto project monitoring - watch announcements and mentions of a keyword inside the channels you care about.
  • Research and archiving - build datasets of public channel posts, media links and forward chains.

Notes on reliability

  • Photo and video URLs are served by Telegram's CDN and are temporary; download them promptly if you need them.
  • View and reaction counts reflect what Telegram shows at scrape time and are rounded for large numbers.
  • Custom (premium) emoji reactions are counted, but their emoji is empty because Telegram does not expose them in the public preview.
  • If a channel or post is private, deleted or unavailable, that input is skipped and the run continues.

FAQ

Do I need a Telegram account or phone number? No. Just add your channels and press Start.

Can I scrape private channels or groups? No. Only public channels that have a public web preview can be scraped.

Does the search cover the whole channel history? No. It covers roughly the channel's 100 most recent posts. Use Channel posts to go further back.

Can I get post comments? No. Comments are not available from the public channel preview.

Can I run several channels at once? Yes - add multiple lines. Duplicate posts across inputs are removed automatically.

Can I try it for free? Yes. Users on the free Apify plan can fetch up to 10 results in total to try the Actor. Upgrade to a paid Apify plan to run it without that limit.

What export formats are supported? JSON, CSV, Excel, XML and HTML, plus the Apify API and integrations such as Google Sheets, Zapier, Make and webhooks.

Pricing

This Actor is pay per result: you are charged for each record it returns (channel posts and channel profiles), plus standard Apify platform usage. Different record types have different prices; see the Pricing tab for current rates. You are never charged for inputs that return nothing.