Telegram Channel Scraper - Posts, Views, No Login
Pricing
from $0.70 / 1,000 post results
Telegram Channel Scraper - Posts, Views, No Login
Scrape public Telegram channels without login, phone number or API keys. Get posts with text and HTML, date, views, reactions, forwards, replies, photos, video thumbnails, files and link previews, plus channel info with exact subscriber counts. Date range, keyword filter and deep history.
Pricing
from $0.70 / 1,000 post results
Rating
0.0
(0)
Developer
Wrenfield Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Telegram Channel Scraper - Posts, Views, Reactions & Media (No Login)
Telegram Channel Scraper extracts posts from public Telegram channels with no Telegram account, no phone number, no bot token and no API keys. Give it channel usernames or t.me links and get every post with its text (plain + HTML), date, views, reactions, forwarded-from, reply-to, photos, video thumbnails, file names, link previews, polls and the edited flag. Add one channel info row per channel with the title, description, exact subscriber count, photo and verified / scam / fake flags.
It reads Telegram's own public web preview (t.me/s/<channel>), the page anyone can open in a browser. Pagination goes as deep as the channel history: thousands of posts per channel, filtered by date range or keywords.
💸 $1 per 1,000 posts with views, reactions and media, and $2 per 1,000 channel-info rows (the top Telegram channel scrapers in the Store charge a median $3.50 per 1,000). No login or phone number needed. Try it on Apify's free plan ($5 of monthly credit, no credit card).
Sample output
| Channel | Date | Views | Reactions | Text |
|---|---|---|---|---|
| durov | 2026-10-11 | 1,140,000 | 28,400 | ✨ Designers × AI 🆕 The mockup er… |
| durov | 2026-10-10 | 1,410,000 | 116,430 | 💸 If your wallet doesn’t look lik… |
| durov | 2026-09-11 | 3,460,000 | 78,640 | 🤝 Telegram has become the sponsor… |
What data do you get?
- 📝 Post text as clean plain text (emoji and line breaks kept) and as HTML (bold, links, custom emoji)
- 📅 Date (UTC), views, edited flag, author signature
- ❤️ Reactions: each emoji (or custom emoji ID), its count and paid Star reactions, plus a total
- 🔁 Forwarded from (channel name, username, original post) and reply to (post ID, author, quoted text)
- 🖼️ Media: photo URLs, albums, video and GIF thumbnails (+ video URL when shown), round videos, voice, stickers, documents with file name and size, locations
- 🔗 Link previews (site, title, description, image), links, #hashtags and @mentions in the text
- 📊 Polls with options and percentages
- 📣 Channel info: title, description, exact subscriber count, photo, verified / scam / fake labels, number of photos, videos, files and links, newest post
Use cases
- Media monitoring & news tracking: follow news, crypto, finance or tech channels and pull new posts on a schedule
- Crypto & trading signals: collect posts from signal and announcement channels with views and reactions
- Market and competitor research: measure reach (views, reactions, subscribers) of channels in your niche
- OSINT and research: archive public channels for analysis (sentiment, topic modelling, fact-checking)
- Lead lists of channels: check which usernames are channels, groups, users or bots, with subscriber counts
How to scrape a Telegram channel
- Click Try for free / Start.
- Enter one or more channels:
durov,@telegram,https://t.me/s/bbcrussian,https://t.me/cointelegraph. - Set Max posts per channel and/or a date range (
2026-01-01to2026-03-31, orFrom date: 7 days). - Optionally add keywords to keep only matching posts.
- Run and download the data as JSON, CSV, Excel or HTML, or use the API, Make, Zapier, n8n or the Apify MCP server.
Input example
{"channels": ["durov", "https://t.me/s/telegram", "@cointelegraph"],"maxPostsPerChannel": 500,"dateFrom": "2026-09-01","dateTo": "2026-09-30","keywords": ["bitcoin", "ETF"],"includeChannelInfo": true}
- Max posts per channel: newest posts first.
0= no limit (use it with From date). - Date range:
YYYY-MM-DD, ISO date-time or relative (24 hours,7 days,3 months). For an old range the Actor jumps straight to that point in the history instead of paging through everything newer. - Keywords: Contains mode scans the history and keeps posts containing any keyword (or all, with Require all keywords). Telegram search mode uses Telegram's own search, which matches word forms but returns only about 20 of the newest matches per keyword.
- A post link (
https://t.me/durov/400) starts at that post and goes back in time.
Output example
{"type": "post","channel": "durov","channelTitle": "Pavel Durov","postId": 529,"url": "https://t.me/durov/529","date": "2026-06-16T15:05:29Z","text": "🚫 India’s IT ministry banned Telegram for one week because some users shared leaked exam questions.\n\n...","textHtml": "<tg-emoji emoji-id=\"5240241223632954241\">...</tg-emoji> India’s IT ministry banned Telegram ...","views": 9710000,"viewsText": "9.71M","isEdited": false,"author": "Pavel Durov","forwardedFrom": null,"replyTo": null,"mediaType": "text","media": [],"photoUrls": [],"videoThumbnailUrls": [],"documentNames": [],"linkPreview": null,"links": [],"hashtags": [],"mentions": [],"reactions": [{ "emoji": "⭐", "customEmojiId": null, "isPaid": true, "count": 6280, "countText": "6.28K" },{ "emoji": null, "customEmojiId": "5265077361648368841", "isPaid": false, "count": 69600, "countText": "69.6K" }],"reactionsTotal": 120838,"scrapedAt": "2026-10-09T01:33:36Z"}
Channel info row:
{"type": "channel","status": "ok","channel": "durov","url": "https://t.me/durov","title": "Pavel Durov","description": "Founder of Telegram.","subscribers": 10464256,"subscribersText": "10.5M","photoUrl": "https://cdn4.telesco.pe/file/...jpg","isVerified": true,"isScam": false,"isFake": false,"photosCount": 102,"videosCount": 46,"linksCount": 200,"lastPostId": 548,"lastPostDate": "2026-09-11T16:04:02Z"}
Channels that can't be scraped (free rows)
You get one free row with type: "error" and a status explaining why:
| status | meaning |
|---|---|
no_web_preview | The channel exists but its owner disabled the public preview (title and subscribers are still returned) |
private | Invite link (t.me/+..., joinchat) or t.me/c/... link to a private chat |
not_found | No public chat with this username (deleted, banned, private or mistyped) |
is_group / is_user / is_bot | The username is a group, a person or a bot, not a channel |
invalid_input | Not a valid username or t.me link |
no_posts / no_matches | The channel has no visible posts / no posts matched your keywords |
Pricing
This Actor uses pay-per-event pricing. You pay per post saved (post-result) and per channel info row (channel-result). Error rows, channels that can't be scraped, and posts removed by your date or keyword filters are free. Check the Pricing tab for current prices.
Cap your spending with the run's maximum cost or maximum paid results: the Actor stops cleanly at the limit.
How it works
- The Actor loads Telegram's public web preview
https://t.me/s/<channel>and pages back with?before=<post id>, 20 posts per page. No browser runs, so it's fast and cheap: about 1,000 posts in 10-20 seconds. - Large channels are split into parallel page streams; date ranges use a binary search over post IDs to jump to the right point.
- Requests go direct first. Only if Telegram rate-limits the run does it switch to the Apify datacenter proxy (configurable).
- Exact subscriber counts come from the channel's
t.me/<channel>page (the preview shows rounded numbers like 10.5M). - A run summary (key-value store record
SUMMARY) lists every channel with its status, posts and pages.
Limitations
- Only public channels with the web preview enabled. Private channels, groups, comments and member lists need a logged-in Telegram account and are not supported.
- Views and reaction counts are rounded by Telegram on large numbers (
18.9M,4.71K); the Actor converts them to numbers. - Some post types (stories, giveaways, paid media, some audio) show "Please open Telegram to view this post" in the preview; they are returned with
mediaType: "unsupported"and whatever metadata is visible. - Media URLs point to Telegram's CDN and are signed: download files soon after scraping if you need them.
- Telegram search mode returns at most ~20 newest matches per keyword (Telegram's limit); use Contains mode for deep keyword scans.
Related tools
Monitor the same topics on YouTube and in Google search interest.
- YouTube Transcript Scraper: transcripts and subtitles from videos, channels and searches
- Google Trends Scraper: interest over time, by region, related queries and Trending Now
All of these are maintained by the same developer and export flat JSON, CSV or Excel, so you can feed one tool's dataset into the next.
FAQ
Do I need a Telegram account, phone number or API ID? No. The Actor only reads pages that are public on the web.
How far back can it go? To the first post of the channel, as long as the posts are visible in the web preview.
Can I scrape private channels or groups? No. Only public channels expose a web preview.
Is scraping Telegram legal? The Actor only reads pages Telegram publishes openly on the web, without logging in. However, Telegram's Terms of Service and its Content Licensing and AI Scraping Terms restrict access to user-generated content beyond ordinary use and explicitly forbid using Telegram data to train or develop AI / machine-learning models. Posts are also copyrighted by their authors and can contain personal data (GDPR and similar laws apply). You are responsible for making sure your use is lawful and compatible with these terms; if in doubt, consult a lawyer. Do not use this Actor to build AI training datasets.
Can I monitor channels for new posts? Yes: schedule the Actor with dateFrom: "24 hours" (or 1 hour) and connect the dataset to Slack, Google Sheets, a webhook or your app.