Telegram Scraper | Channel Posts, Views and Reactions
Pricing
from $1.49 / 1,000 posts
Telegram Scraper | Channel Posts, Views and Reactions
Telegram scraper (Телеграм, تلگرام, 电报) for public channels, no account or API key. Export every post with text, views, reactions, photos, videos, links, forwards and exact subscriber counts. Search channels by keyword or paste post links. 100 posts in 7 seconds, 29 fields each, to JSON or CSV.
Pricing
from $1.49 / 1,000 posts
Rating
0.0
(0)
Developer
SilentFlow
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Security
Limited permissionsShare
Telegram Scraper (Телеграм) | Channel Posts, Views, Reactions and Keyword Search (2026)
From SilentFlow. Creators of Pinterest Scraper (#1 for “pinterest pins scraper” in Apify Store search) and Leboncoin Scraper Ppe, with 230,000+ combined lifetime runs.
Every post of any public Telegram channel, as one clean row: text, views, reactions, photos, videos, links, forwards, replies and the channel's exact subscriber count. Our test run returned 100 posts from two channels in 7 seconds, with no Telegram account, no phone number and no API key.
Why choose this actor?
Scrolling a channel for an hour to copy posts into a sheet? Getting "10.7M subscribers" when you need the real number? Filling a ten-field form and picking a mode before you get a single post?
- 29 fields filled per post, not 16. On the default run (100 posts from
durovandcointelegraph), 29 fields carry a value on at least half the rows: text, views, every reaction with its count,reactionsCount, links, photos, the post signature, the edited, forwarded and reply flags, the channel's id, title, description, photo, verified badge, exact subscriber count and its photo, video, file and link counters, the date and the post link. The most used Telegram keyword scraper announces 16 fields. - Five ways in, in one field. A username (
durov), an @handle, a channel link (https://t.me/cointelegraph), a single post link (https://t.me/durov/528) or a search link (https://t.me/s/cointelegraph?q=bitcoin), plus keywords searched inside every channel with Telegram's own search. In our keyword run, 80 posts of 80 contained their keyword. The most used Telegram keyword scraper takes keywords and channel names, not links. - Five form fields, none of them required. Paste channels and press Start: the prefilled input runs as is. The most used Telegram keyword scraper has ten fields and asks you to pick a mode first.
Try your first 100 posts
Paste this input in the JSON tab of the Input page and press Start. It reads the 50 latest posts of Pavel Durov's channel and the 50 latest posts of Cointelegraph, newest first.
{"startUrls": ["durov", "https://t.me/s/cointelegraph"],"maxItems": 50}
It runs on the Apify Free plan. Each post becomes one row of your dataset: open the Output tab to see the table, or export it as JSON, CSV or Excel.

Copy to your AI assistant
Paste this block into Claude, ChatGPT or Cursor to give it the full picture of this scraper:
You have access to the Telegram Scraper on Apify: silentflow/telegram-scraperIt reads public Telegram channels (no account) and returns one row per post, newest first.Input schema (no field is required):- startUrls (array of strings): channels and posts. Accepts a username (durov), an @handle (@telegram),a channel link (https://t.me/cointelegraph or https://t.me/s/cointelegraph), a post link(https://t.me/durov/528) or a search link (https://t.me/s/cointelegraph?q=bitcoin).Groups, private chats and invite links (t.me/+...) have no public posts and are skipped.- keywords (array of strings): words searched inside every channel of startUrls with Telegram's own search.Keywords need at least one channel.- maxItems (integer, default 100): max posts per channel and per keyword search. Post links always return their post.- oldestPostDate (string): only posts newer than this date. Absolute (2026-09-01) or relative (7 days, 1 month).- debugMode (boolean, default false): detailed logs.Output per post (45 fields, null when absent):- id (string, "channel/messageId"), url (string, permanent post link), messageId (integer)- text (string), mediaType (text | photo | video | album | link | document | audio | voice | sticker | poll | location)- links, hashtags, mentions (arrays of strings)- isEdited, isForwarded, isReply (booleans), forwardedFrom, forwardedFromUrl, replyToUrl, replyToText (strings)- author (string, post signature)- channelUsername, channelTitle, channelUrl, channelDescription, channelPhotoUrl (strings), channelId (integer), channelIsVerified (boolean)- views (integer), reactions (array of {emoji, emojiId, count, isPaid}), reactionsCount (integer)- channelSubscribers (integer, exact), channelPhotos, channelVideos, channelFiles, channelLinks (integers)- date (string, RFC 3339 UTC)- imageUrls, videoUrls (arrays of strings), videoThumbnailUrl (string), videoDuration (integer, seconds), documentTitle (string)- linkPreviewUrl, linkPreviewSiteName, linkPreviewTitle, linkPreviewDescription, linkPreviewImageUrl (strings)- foundBy (channel | search | post), searchKeyword (string), scrapedAt (string, RFC 3339 UTC)Use apify-client for Python or JavaScript: client.actor("silentflow/telegram-scraper").call(run_input=...).
How to scrape Telegram channel posts
Three inputs, from the simplest to the most complete. Each one runs as is.
Export the latest posts of one channel
{"startUrls": ["durov"],"maxItems": 100}
The 100 latest posts of the channel, newest first, each with its text, views, reactions, media and link. A username, an @handle and a t.me link all work.
Find every Bitcoin post in two crypto channels
{"startUrls": ["cointelegraph", "https://t.me/s/binance_announcements"],"keywords": ["bitcoin", "ETF"],"maxItems": 20}
Each keyword is searched inside each channel with Telegram's own search, so a row always matches its keyword and says which one found it in searchKeyword. In our test run this input returned 80 posts in 5 seconds, 20 per channel and keyword, and every one of them contained its keyword.
Pull the last 7 days of several channels
{"startUrls": ["cointelegraph", "durov", "https://t.me/telegram", "@tginfo"],"oldestPostDate": "7 days","maxItems": 500}
Each channel is read newest first and stops at the first post older than 7 days, so a quiet channel is done after one page and a busy one gives you its whole week. Set the date to 1 day and schedule the run every morning for a daily digest.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array of strings | prefilled with durov and https://t.me/s/cointelegraph | Channels, post links and search links to read. See the accepted formats below. |
keywords | array of strings | none | Words searched inside every channel of startUrls with Telegram's own search: bitcoin, ETF, #AI. Empty reads the whole history. |
maxItems | integer | 100 | Max posts per channel and per keyword search. Post links always return their post. No fixed limit. |
oldestPostDate | string | none | Only posts published after this date: 2026-09-01, or an age such as 7 days, 2 weeks, 1 month. |
debugMode | boolean | false | Detailed logs, only needed when something looks wrong. |
Accepted formats in startUrls:
| You paste | The run reads |
|---|---|
durov, @durov | the channel's posts, newest first |
https://t.me/durov, t.me/durov, https://telegram.me/durov | the channel's posts, newest first |
https://t.me/s/durov (the web preview) | the channel's posts, newest first |
https://t.me/durov/528, https://t.me/s/durov/528 | that single post |
https://t.me/s/cointelegraph?q=bitcoin | Telegram's search for bitcoin inside that channel |
tg://resolve?domain=durov | the channel's posts, newest first |
{"url": "https://t.me/durov"} | the same as the plain link, for lists exported from other tools |
Invite links (https://t.me/+..., https://t.me/joinchat/...), private chat links (https://t.me/c/...), groups and personal accounts have no public posts: the run skips them and names them in the log, and the rest of the input still runs.
What data can you extract from Telegram?
Each row is one post, with 45 top-level fields grouped the way you read them. Each reaction in reactions carries 4 fields of its own.
| Group | Fields |
|---|---|
| Identity (3) | id (channel/messageId, stable), url (permanent post link), messageId |
| Content (12) | text, mediaType, links, hashtags, mentions, isEdited, isForwarded, forwardedFrom, forwardedFromUrl, isReply, replyToUrl, replyToText |
| Author and channel (8) | author (the post signature), channelUsername, channelTitle, channelUrl, channelId, channelDescription, channelPhotoUrl, channelIsVerified |
| Measures (8) | views, reactions, reactionsCount, channelSubscribers, channelPhotos, channelVideos, channelFiles, channelLinks |
| Time (1) | date (RFC 3339, UTC) |
| Media and links (10) | imageUrls, videoUrls, videoThumbnailUrl, videoDuration (seconds), documentTitle, linkPreviewUrl, linkPreviewSiteName, linkPreviewTitle, linkPreviewDescription, linkPreviewImageUrl |
| Meta (3) | foundBy (channel, search or post), searchKeyword, scrapedAt |
What the values look like:
- Numbers are numbers. Telegram shows
16.5M views; the row says16500000. Views and reaction counts are the figures Telegram displays, so above a thousand they are rounded the way Telegram rounds them.channelSubscribersis the exact count from the channel's own page:10656365for Pavel Durov's channel on 24 Sep 2026, where the preview only shows10.7M. - Reactions keep their kind. A standard reaction has its
emoji("😍"). A custom reaction only has the id of its custom emoji inemojiId, andemojiisnull. Paid star reactions haveisPaid: trueand the emoji"⭐". - Albums are one row. A post with several photos and videos is one row with
mediaType: "album"and every link inimageUrlsandvideoUrls. - Absent is
null. A post without a signature hasauthor: null, never an empty string. Lists are empty lists.
Output example
A real row from the default run (the long image links are shortened here):
{"id": "durov/525","url": "https://t.me/durov/525","messageId": 525,"text": "🔄 Telegram’s new update is out. Lots of great new features.\n\n😂 But most importantly: the announcement is actually fun to read.","mediaType": "link","links": ["https://telegram.org/blog/watch-apps-and-more"],"hashtags": [],"mentions": [],"isEdited": false,"isForwarded": false,"forwardedFrom": null,"forwardedFromUrl": null,"isReply": false,"replyToUrl": null,"replyToText": null,"author": "Pavel Durov","channelUsername": "durov","channelTitle": "Pavel Durov","channelUrl": "https://t.me/durov","channelId": 1006503122,"channelDescription": "Founder of Telegram.","channelPhotoUrl": "https://cdn4.telesco.pe/file/jmUrXq4NGgJZk5-drukGUq79pujfyRNIZNcp1H9AwRICo3kuLNp.jpg","channelIsVerified": true,"views": 16500000,"reactions": [{ "emoji": "⭐", "emojiId": null, "count": 4450, "isPaid": true },{ "emoji": null, "emojiId": "5265077361648368841", "count": 19900, "isPaid": false },{ "emoji": null, "emojiId": "5465587407350942612", "count": 8080, "isPaid": false },{ "emoji": null, "emojiId": "5399847211989246390", "count": 6090, "isPaid": false },{ "emoji": null, "emojiId": "5936157098181135162", "count": 1180, "isPaid": false },{ "emoji": null, "emojiId": "5373223594484587136", "count": 273, "isPaid": false }],"reactionsCount": 39973,"channelSubscribers": 10656365,"channelPhotos": 102,"channelVideos": 46,"channelFiles": null,"channelLinks": 200,"date": "2026-06-12T19:15:19Z","imageUrls": [],"videoUrls": [],"videoThumbnailUrl": null,"videoDuration": null,"documentTitle": null,"linkPreviewUrl": "https://telegram.org/blog/watch-apps-and-more","linkPreviewSiteName": "Telegram","linkPreviewTitle": "Smartwatch Apps, Rich Text for Bots, AI Guardians for Groups, and Much More","linkPreviewDescription": "Today’s update brings Telegram to Apple Watch and Android smartwatches, adds filthy rich text for bots, lets AI admins screen new group members, and introduces smarter polls, browser controls, and much more.","linkPreviewImageUrl": "https://cdn4.telesco.pe/file/rKIjM7Jntr0cso3unW32hMD8muIiacTHPWGFOB68PfgHn.jpg","foundBy": "channel","searchKeyword": null,"scrapedAt": "2026-09-24T02:53:37Z"}
Advanced usage
Five recipes for what the examples above do not show. Each JSON runs as is.
Build a daily digest of 10 channels
{"startUrls": ["cointelegraph", "durov", "telegram", "tginfo", "binance_announcements", "nytimes", "whale_alert_io", "meduzalive", "tass_agency", "svtvnews"],"oldestPostDate": "1 day","maxItems": 300}
Schedule this input every morning in the Schedules tab. Each channel stops at the first post older than 24 hours, so the run only reads what is new and every row is a post you have not seen yet. Send the dataset to Slack, Google Sheets or your warehouse with an Apify integration.
Turn a list of post links into full rows
{"startUrls": ["https://t.me/durov/528","https://t.me/durov/300","https://t.me/telegram/441","https://t.me/cointelegraph/72289"]}
A list of links from a spreadsheet, a newsletter or a monitoring tool comes back with the text, views, reactions, media, date and channel of each post. A link to one photo of an album returns the album. A deleted post gives no row and is counted in the run log.
Paste a search you made in the browser
{"startUrls": ["https://t.me/s/cointelegraph?q=ETF", "https://t.me/s/binance_announcements?q=listing"],"maxItems": 100}
Search a channel on its web preview, copy the address, paste it here. Each search link is read page after page, newest first, and searchKeyword keeps the word you searched.
Track a brand or a ticker across a set of channels
{"startUrls": ["cointelegraph", "binance_announcements", "whale_alert_io"],"keywords": ["BlackRock", "SEC", "#BTC"],"oldestPostDate": "1 month","maxItems": 200}
Every keyword runs inside every channel (nine searches here) and a post found by two keywords is delivered once. Hashtags work as keywords too. Filter the dataset on searchKeyword to count mentions per word, and on views and reactionsCount to see which ones got attention.
Archive a channel's history
{"startUrls": ["cointelegraph"],"maxItems": 5000}
A channel is read back as far as you ask. In our test, 500 posts of Cointelegraph took 30 seconds and reached back six weeks, to 10 Aug 2026. Media links expire, so download the images and videos you want to keep soon after the run; the post link in url stays valid.
FAQ
Do I need a Telegram account, a phone number or an API key?
No. The scraper reads the public web preview every public channel has at t.me/s/{channel}. Nothing is asked of you except the channels you want.
What is Telegram? Telegram (Телеграм in Russian, تلگرام in Persian, 电报 in Chinese) is a messaging app. Its public channels are one-to-many feeds, used by news outlets, crypto projects, brands, creators and governments, and many of them publish on Telegram first.
Can I search all of Telegram by keyword? No, and no tool can do it without an account: Telegram has no public search across all channels. Keywords here run Telegram's own search inside each channel you give, which returns every post of that channel that matches, not a sample. To cover a topic, list the channels of that topic and add your keywords.
Can it read groups, private channels or comments? No. Groups, private channels, personal chats and the comment threads under posts are not public on the web. The run names every group or private link it skips in the log and delivers the rest.
Why do some channels return nothing? Three reasons, each named in the log: the name is a group, a user or a bot, not a channel; the channel turned off its web preview; or the channel is restricted in the country the run connects from. The run ends with a message that says which one.
How fresh is the data? Live. Every run reads the channels at that moment: a post published a minute before the run is in it, and views and reactions are the counts at run time.
How far back can I go?
As far as the channel's public history goes. maxItems sets how many posts per channel, oldestPostDate sets how old; the run stops at whichever comes first. There is no fixed limit on either.
Are views and subscriber counts exact?
channelSubscribers is exact: it comes from the channel's own page (10,656,365 for Pavel Durov's channel on 24 Sep 2026). Views and reaction counts are the numbers Telegram displays under each post, so above a thousand they are rounded as Telegram rounds them (16.5M, 19.9K).
Which links are permanent?
url (the post link), channelUrl and the links inside the post text are permanent. imageUrls, videoUrls, videoThumbnailUrl, channelPhotoUrl and linkPreviewImageUrl point to Telegram's media servers and expire after a while: download the files you want to keep soon after the run.
Can I combine keywords, several channels and a date?
Yes. startUrls with five channels, keywords with three words and oldestPostDate: "7 days" runs 15 searches and returns every matching post of the last week, each post once.
Can I run it on a schedule?
Yes. Save your input as a task and add a schedule in Apify. With oldestPostDate set to 1 day, a daily run returns only the new posts.
How do I get the data into my tools?
Every run's dataset exports to JSON, CSV, Excel, XML or RSS from the Output tab, or from the API: https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv. Apify integrations send it to Google Sheets, Slack, Zapier, Make or a webhook.
Is it legal to scrape Telegram channels? The scraper reads public posts that anyone can see in a browser without logging in. How you use them is up to you: see the Legal compliance section below.
More SilentFlow scrapers
🛒 E-commerce
Pinterest - Pinterest Scraper | Pins, Boards and Profiles
Leboncoin Ppe - Leboncoin Scraper Ppe
Back Market - Back Market Scraper | Refurbished Prices
TikTok Shop - TikTok Shop Scraper
1688 Wholesale - 1688 Wholesale Scraper
Leboncoin - Leboncoin Ad Details Scraper
ImportYeti - US Customs Records, Suppliers & Trade Data - ImportYeti Scraper - US Customs Records, Suppliers & Trade Data
Store Leads - Store Leads Scraper | Shopify Data
Bring a Trailer - Bring a Trailer Scraper
Walmart - Walmart Product Scraper
Udemy Course - Udemy Course Scraper
Vinted Marketplace - Vinted Marketplace Scraper
Agoda - Agoda Scraper | Hotel Prices and Guest Ratings
AutoScout24 - AutoScout24 Scraper
Avito - Avito Scraper | Listings, Prices and Sellers
Google Hotels - Google Hotels Scraper | Prices, Offers and Ratings
Mobile.de - Mobile.de Scraper
Taobao - Taobao Scraper | Products, Prices and Sellers
Amazon Marketplace - Amazon Marketplace Scraper
eBay Listings - eBay Listings Scraper
Europages - Europages Scraper | Suppliers and B2B Companies
💼 Jobs
ZipRecruiter - ZipRecruiter Jobs Scraper | Salary, Company & Location Filters
LinkedIn Job Search - LinkedIn Job Search Scraper | Salaries & Seniority
Glassdoor Job Listings - Glassdoor Job Listings Scraper
Welcome to the Jungle - Welcome to the Jungle Job Scraper
🔥 Glassdoor - 🔥 Glassdoor Scraper
Indeed - Indeed Company Reviews Scraper
Multi Board - Multi Board Job Scraper
Indeed Jobs Ppr - Indeed Jobs Scraper Ppr
Jora - Jora Jobs Scraper
ATS - ATS Jobs Scraper | Greenhouse, Lever and Ashby
Dice Tech - Dice Tech Jobs Scraper
Malt - Malt Scraper | Freelance Profiles
Naukri & NaukriGulf - Naukri & NaukriGulf Jobs Scraper
StepStone - StepStone Scraper
Arbeitsagentur - Arbeitsagentur Jobs Scraper
Seek - Seek Job Scraper
🏠 Real estate
SeLoger - SeLoger Scraper | Real Estate Listings
Bien'ici - Bien'ici Scraper | Property Listings
Zillow - Zillow Scraper
Airbnb Pro Host Contact & - Airbnb Pro Host Contact & Email Scraper
Idealista - Idealista Scraper
Realestate.com.au - Realestate.com.au Scraper
Realtor Rental Listings - Realtor Rental Listings Scraper
Rightmove - Rightmove Scraper
Airbnb Search - Airbnb Search Scraper
Trulia Rental Listings - Trulia Rental Listings Scraper
📣 Social media
LinkedIn Post Search - LinkedIn Post Search Scraper | Keywords, Hashtags & Profiles
Facebook Search - Facebook Search Scraper
LinkedIn Leads - LinkedIn Leads Scraper | Sales Navigator Export
OnlyFans - OnlyFans Profile Scraper
Skool Community - Skool Community Scraper
TikTok - TikTok Scraper
YouTube - YouTube Channel Scraper | Videos, Shorts and Views
YouTube - YouTube Transcript Scraper
Facebook Business Page - Facebook Business Page Scraper
Instagram Engagement - Instagram Engagement Scraper
Meta Ad Library - Meta Ad Library Scraper
Weibo - Weibo Scraper | Posts, Profiles and Engagement
Bilibili - Bilibili Scraper
Reddit - Posts, Comments, Communities & - Reddit Scraper - Posts, Comments, Communities & Users
🏢 Business data
LinkedIn People Search - LinkedIn People Search Scraper | Profiles & Companies
Website Tech Stack - Website Tech Stack Scraper
Company Data - Company Data Scraper | Emails, Phones and Tech Stack
SEC - SEC Scraper | EDGAR Filings and Company Data
Teachable - Courses, Prices & Instructors - Teachable Scraper - Courses, Prices & Instructors
Trustpilot - Trustpilot Enricher
✈️ Travel
Google Maps - Google Maps Scraper
Booking.com Hotel - Booking.com Hotel Scraper
Flight Price - Flight Price Scraper
🎯 Lead generation
Northdata - Northdata Company Scraper
Dealroom - Dealroom Scraper | Companies and Investors
SIRET - SIRET Company Enricher
ZocDoc - Pay Per Result - ZocDoc Scraper - Pay Per Result
ThomasNet Suppliers - ThomasNet Suppliers Scraper
BuiltWith - BuiltWith Scraper | Tech Stacks and Top Sites
CNPJ Brazilian - CNPJ Brazilian Company Enricher
French Company Prospector - French Company Prospector
Google Ads Transparency - Google Ads Transparency Scraper
Clutch Agency - Clutch Agency Scraper
Domain - Domain Enricher
G2 - G2 Reviews Scraper
PagesJaunes - PagesJaunes Business Scraper
UK Companies House - UK Companies House Enricher
🔎 SEO
Google News - Google News Scraper
Support
Need something this scraper doesn't do yet? We ship features fast.
- Feature requests go straight to our backlog
- Enterprise needs? We do custom integrations and high-volume plans
- Pricing questions? Check the Monetization tab on the actor page
Response time: usually under 24 hours.
Legal compliance
This Actor extracts publicly available data from Telegram's public channel previews on t.me. It does not bypass any login, paywall or CAPTCHA, and never uses a Telegram account. Users are responsible for complying with Telegram's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). Posts can name people, and post signatures (author) and channel titles can be personal data: handle them accordingly, keep only what you need, and honor removal requests. The data returned is informational; verify accuracy for regulated use cases.
Telegram Scraper by SilentFlow: public channel posts, views and reactions, ready for your spreadsheet.
