Telegram Channel Scraper – Posts, Messages & Views, No Login
Pricing
from $1.50 / 1,000 post scrapeds
Telegram Channel Scraper – Posts, Messages & Views, No Login
Telegram channel scraper for public channels, without login or API keys: posts and messages with text, views, reactions, photos, videos, polls, link previews, forwards and replies, plus channel info (subscribers, description). Search inside channels and filter by date.
Pricing
from $1.50 / 1,000 post scrapeds
Rating
0.0
(0)
Developer
Enes Bulanık
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Telegram channel scraper for public channels, without login or API keys: posts and messages with text, views, reactions, photos, videos, polls, link previews, forwards and replies, plus channel info (subscribers, description). Search inside channels and filter by date.
Price: $1.50 per 1,000 posts. Channels that fail produce a free error row.
What does Telegram Channel Scraper do?
Telegram Channel Scraper reads the official public web preview of a channel (https://t.me/s/<channel>) – the same page anyone can open in a browser – and turns it into clean, structured data:
- Posts – full text (with line breaks and emoji), optional original HTML, hashtags and outbound links
- Views – parsed into real integers (
"1.2K"→1200,"3.4M"→3400000) - Reactions – emoji + count for every reaction, including custom emoji and paid Star reactions
- Media – media type (photo, video, sticker, poll, voice, document, audio…) and direct media URLs (photos, video files, stickers), plus video thumbnails
- Polls – question, poll type and the percentage for each option
- Link previews – URL, site name, title, description and image
- Forwards and replies – the source channel of forwarded posts and the post a message replies to
- Edited flag, author signature, post URL and ISO date
- Channel info – title, @username, verified badge, description, subscribers, number of photos/videos/files/links and avatar URL
It walks back through the channel history page by page, so you can get the latest 20 posts or the whole archive of thousands of posts.
Details
- No login, no API keys, no phone number – it reads only public pages, so your Telegram account is not involved.
- Pay per result – $1.50 per 1,000 posts, $0.002 per channel profile.
- No browser – plain HTTP requests. About 1,000 posts in under a minute in our tests.
- Errors are free – channels that don't exist, bots, groups and channels without a public preview produce an error row that is not charged.
- Cost control – set Max posts per channel, a date limit and Apify's Max cost per run; the Actor stops when your budget is reached.
Use cases
- Media monitoring & news tracking – follow news, political or crypto channels and pull new posts on a schedule.
- Marketing & competitor analysis – compare views, reactions and posting frequency of competitor channels.
- Influencer research – check subscriber counts and real engagement (views/reactions per post) before buying ads.
- Crypto & trading signals – collect posts from public signal channels into a spreadsheet or database.
- Academic research & OSINT – build datasets of public channel content for NLP, sentiment or propaganda research.
- AI / LLM pipelines – feed fresh channel content into RAG, summarization or classification workflows.
How to scrape Telegram channels
- Click Try for free / Start.
- Enter one or more channels in Telegram channels –
durov,@durovorhttps://t.me/durovall work. - Optionally set Max posts per channel, Only posts newer than (e.g.
7 daysor2025-01-01) and a Search keyword. - Click Start and download your data as JSON, CSV, Excel, XML or HTML – or connect it to Make, Zapier, Google Sheets, Slack, webhooks or the Apify API.
Input
| Field | Type | Description |
|---|---|---|
channels | array of strings | Required. Channel usernames or links (durov, @durov, https://t.me/durov, https://t.me/s/durov). |
maxPostsPerChannel | integer | Max posts per channel, newest first. 0 = whole history. Default 100. |
onlyNewerThan | string | Skip older posts. Absolute date (2025-01-01) or relative (7 days, 2 weeks, 3 months). |
searchQuery | string | Only posts containing this keyword or #hashtag. |
includeChannelInfo | boolean | Add one channel-profile item per channel. Default true. |
includeTextHtml | boolean | Also save the original post HTML in textHtml. Default false. |
proxyConfiguration | object | Optional proxy. Not needed in normal use. |
Example input:
{"channels": ["telegram", "durov", "https://t.me/bloomberg"],"maxPostsPerChannel": 200,"onlyNewerThan": "30 days","includeChannelInfo": true}
Output
Each dataset item has a type: post, channel or error. Real sample output (shortened):
Post
{"type": "post","channel": "durov","channelTitle": "Pavel Durov","postId": 540,"url": "https://t.me/durov/540","date": "2026-08-10T09:29:58.000Z","text": "🇺🇿 The 2026 International Olympiad in Informatics starts today in Tashkent.\n\n🏆 The IOI is the ultimate coding competition for high-school students. ...","views": 4550000,"author": "Pavel Durov","edited": false,"forwardedFrom": null,"replyTo": null,"hasMedia": true,"mediaType": "photo","mediaUrls": ["https://cdn4.telesco.pe/file/dWETKtgBqJjVJf6v9r4y...jpg"],"thumbnailUrls": [],"documents": [],"poll": null,"linkPreview": null,"reactions": [{ "emoji": "⭐", "customEmojiId": null, "paid": true, "count": 9110 },{ "emoji": null, "customEmojiId": "5373223594484587136", "paid": false, "count": 42500 },{ "emoji": null, "customEmojiId": "5399847211989246390", "paid": false, "count": 15600 }],"reactionsTotal": 77210,"hashtags": [],"links": [],"scrapedAt": "2026-10-07T18:06:46.386Z"}
Channel info
{"type": "channel","channel": "durov","title": "Pavel Durov","username": "durov","url": "https://t.me/durov","verified": true,"description": "Founder of Telegram.","subscribers": 10500000,"photosCount": 102,"videosCount": 46,"filesCount": null,"linksCount": 200,"avatarUrl": "https://cdn4.telesco.pe/file/e2rpvz6z6aZTf...jpg"}
Error (free)
{"type": "error","channel": "nodejs_ru","url": "https://t.me/nodejs_ru","errorCode": "GROUP_NO_PREVIEW","error": "@nodejs_ru is a group/chat. Telegram does not provide a public web preview for groups, so its messages can't be scraped without login."}
Possible errorCode values: NOT_FOUND, BOT, GROUP_NO_PREVIEW, CHANNEL_NO_PREVIEW, NO_PREVIEW, INVALID_INPUT, SCRAPE_FAILED.
Other post fields you may see: poll (question, type, options[{text, percent}]), linkPreview (url, siteName, title, description, imageUrl), forwardedFrom (name, url, username), replyTo (postId, url, author, text), documents (title, extra), textHtml.
mediaType is one of photo, video, sticker, poll, voice, audio, document, location, mixed (album with several kinds), unsupported (media Telegram only shows inside the app) or null (text-only post).
The dataset has ready-made views in Apify Console: Posts, Engagement, Media & links and Channel info & errors.
Pricing
This Actor uses pay-per-event pricing – you only pay for the data you get. Platform usage is included.
| Event | Price | When it is charged |
|---|---|---|
post | $0.0015 per post ($1.50 / 1,000) | Each post saved to the dataset |
channel-info | $0.002 per channel | Each channel profile item (only if Include channel info is on) |
| Errors | Free | Missing channels, bots, groups, channels without preview |
Examples:
| Job | Cost |
|---|---|
| 20 latest posts from 2 channels + channel info | 40 × $0.0015 + 2 × $0.002 = $0.064 |
| 1,000 posts from 1 channel | $1.50 (+ $0.002) |
| 10,000 posts from 10 channels | $15.00 (+ $0.02) |
Tip: set Max cost per run in the run options – the scraper stops cleanly when your budget is reached.
Use with AI agents (MCP)
Add the Actor to the Apify MCP server (https://mcp.apify.com?tools=openharvest/telegram-channel-scraper) or let agents find it with search-actors ("telegram channel").
Example call-actor input for "What did the Telegram channel @durov post in the last two weeks, and which post got the most views?":
{"channels": ["durov"],"onlyNewerThan": "14 days","maxPostsPerChannel": 50,"includeChannelInfo": false}
The agent reads text, date, views and reactionsTotal.
FAQ
Do I need a Telegram account or API key?
No. The scraper only reads the public t.me/s/ web preview that anyone can open without logging in.
Can it scrape private channels or groups?
No. Private channels, invite links (t.me/+...) and groups/chats have no public web preview. They are reported as a free error item. Some public channels also disable their web preview – those are reported as CHANNEL_NO_PREVIEW.
How many posts can I get?
As many as the channel shows publicly – set maxPostsPerChannel to 0 to get the full history. Posts that were deleted are skipped.
How does search work?
The scraper first uses Telegram's own channel search (t.me/s/<channel>?q=keyword) for the newest matches and then continues through older posts, keeping only posts whose text, hashtags, poll or link preview contain all the words of your query.
Why do some videos have no mediaUrls?
For larger videos Telegram's web preview shows only a thumbnail (saved in thumbnailUrls) and asks viewers to open the app. Media URLs are served by Telegram's CDN and may expire after some time – download files soon after scraping if you need them.
Why is emoji null for some reactions?
Those are custom (premium) emoji. They have no Unicode character, so the scraper returns their customEmojiId instead.
Can I run it on a schedule?
Yes. Use Apify Schedules with onlyNewerThan set to e.g. 1 day to get only new posts every day.
Can I use it via API or in my code? Yes – use the Apify API, the JavaScript/Python API clients, or integrations such as Make, Zapier, n8n, Google Sheets and webhooks.
Is it legal to scrape Telegram?
This Actor only extracts publicly available data that Telegram itself publishes on the open web without login. It does not access private messages, private channels or personal account data. Still, scraped content may contain personal data or copyrighted material, so make sure your use complies with applicable laws (e.g. GDPR) and with Telegram's Terms of Service. Do not use this tool or its data for spam, harassment or any unsolicited messaging. If you are unsure, consult a lawyer.
Related actors
- RSS Feed Reader & Feed Finder – RSS/Atom to JSON, Full Text
- Substack Scraper – Newsletter Posts, Full Text & Comments
- Bluesky Scraper (coming soon)
Support & feedback
Found a bug or missing field? Open an issue in the Issues tab with the channel name. Feature requests are welcome.