Telegram Channel Scraper
Posts of public Telegram channels: text, views, reactions, links, subscribers. No account needed. From $0.001 / post, pay per result, no browser, no login.
▶ Run it on Apify · Python example · All scrapers
Export posts from any public Telegram channel as JSON, CSV or Excel: text, date, views, reactions (including paid Stars), hashtags, links, photos, video thumbnails, forwarded-from and the channel’s subscriber count. No Telegram account, no phone number, no API keys, no browser. 300 posts take about 20 seconds.
✅ Full channel history, newest posts first ✅ Views, reactions and Stars per post — measure engagement ✅ Subscriber count, channel name and description on every row ✅ Search inside channels (word or hashtag) ✅ Only posts since a date — perfect for daily monitoring ✅ Links, hashtags, link previews, photos, forwarded-from ✅ Up to 200 channels per run; private or missing channels are skipped and never charged ✅ No personal data: channel posts only — no members, no private chats, no author signatures
🚀 Why this Telegram scraper is different
| This Actor | Typical Telegram scrapers | |
|---|---|---|
| Price | $0.001 per post | $0.005 per post |
| Telegram account / phone number | Not needed | Often required (session strings) |
| Reactions, Stars, subscribers | Yes | Partial |
| Date limit and in-channel search | Yes | Rarely |
| Private / missing channels | Skipped, not charged | Run fails |
| Blocked pages | Retried with new IPs, residential fallback | Lost |
💡 Use cases
- Crypto & trading signals: collect calls and announcements from signal channels every hour.
- News & OSINT monitoring: follow news channels and track what is said, when, and how far it spreads (views).
- Brand & competitor monitoring: search channels for your brand or product name.
- Influencer & ad research: compare channels by subscribers, views per post and reactions before buying a promo.
- AI datasets & sentiment analysis: clean post text with dates and engagement for LLMs and dashboards.
🛠️ How to use it (3 steps)
- Enter channel usernames (
durov,@telegram) or links (https://t.me/durov). - Optionally set a date limit or a search word.
- Click Start and download posts as CSV, Excel or JSON, or use the API.
📥 Input example
{
"channels": ["telegram", "durov", "https://t.me/s/bbcnews"],
"maxPostsPerChannel": 300,
"newerThan": "2026-01-01",
"searchQuery": "AI"
}
📤 Output example (real post)
{
"channel": "durov",
"channelTitle": "Pavel Durov",
"channelDescription": "Founder of Telegram.",
"subscribers": 10200000,
"postId": 551,
"url": "https://t.me/durov/551",
"date": "2026-10-10T14:22:43+00:00",
"text": "💸 If your wallet doesn’t look like this, don’t even bother sending me money for my birthday! 🎂",
"views": 1920000,
"reactions": [
{ "emoji": "⭐ stars", "count": 60200 },
{ "emoji": "custom emoji", "count": 37700 },
{ "emoji": "custom emoji", "count": 12800 },
{ "emoji": "custom emoji", "count": 9820 }
],
"totalReactions": 120520,
"hashtags": [],
"links": [],
"photos": [],
"videoThumbnails": ["https://cdn4.telesco.pe/file/v-XoXsm08FMDR1tohWip0eM9ZxG_JGJzSggl_IU0phnM3ISO0hoRP_g0K_It0qPbyPjUGpSqfPneEZDAEOHz6v5Dms621asSRMFRMQEDRQzWKYQGVz8ViDkqm_2zQegry9gke8wLp8C9IHtRTrOy9Di4y7-z6aNOh-_O4prqmbi0V_Rj5KXD0ztdSY6Zk-JG9jEXxMDm9BYIdh-apAwDJXDATgo17qyGPjOu_mQg2wHE6J7jYikVQmFf8drDi4oqQHzRiN3lK6YCQPMNVDjmRTC2-7iPxtNY84GslD6S4CHCl-UCbT9uFdtyVGKX6qt0OfyiXWNxUbI2JR7H6DFueA"],
"linkPreview": null,
"forwardedFrom": null,
"isEdited": false
}
Counts are shown by Telegram rounded (“1.92M” → 1920000).
⚙️ Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
channels |
array | ["telegram"] |
Channel usernames (“durov”, “@telegram”) or links (“https://t.me/durov”). Private channels and groups without a web preview are skipped and never charged. |
maxPostsPerChannel |
integer | 100 |
Newest posts first. |
newerThan |
string | — | YYYY-MM-DD. Stop at older posts (great for daily monitoring). |
searchQuery |
string | — | Only posts containing this word or hashtag. |
proxyConfiguration, maxRetries |
object, integer | Apify Proxy, auto | Proxy and retries; the defaults work for most runs. |
📋 Output fields
| Field | Type | Description |
|---|---|---|
channel |
string | Channel username |
channelTitle |
string | Channel name |
channelDescription |
string | Channel description |
subscribers |
integer | Subscribers |
postId |
integer | Post number |
url |
string | Post link |
date |
string | Publication time (UTC) |
text |
string | Post text |
views |
integer | Views |
reactions |
array | Reactions and counts |
totalReactions |
integer | All reactions |
hashtags |
array | Hashtags |
links |
array | Links in the text |
photos |
array | Photo URLs |
videoThumbnails |
array | Video thumbnail URLs |
linkPreview |
string | Previewed link |
forwardedFrom |
string | Original channel of a forwarded post |
isEdited |
boolean | Edited post |
Export as JSON, CSV, Excel, XML or HTML, or read it through the API.
💰 Pricing — pay per post
| What you run | Posts | Cost (free plan) |
|---|---|---|
| 1 channel, last 100 posts | 100 | $0.10 |
| 10 channels × 300 posts | 3,000 | $3.00 |
| Daily monitoring, 20 channels × ~10 new posts | ~6,000/month | ~$6.00/month |
Higher Apify plans pay less: $0.0009 (Bronze), $0.0008 (Silver), $0.0006 (Gold and above). Platform usage and proxies are included. Private, missing or empty channels are never charged.
🔌 API & integrations
Python
from apify_client import ApifyClient # pip install "apify-client>=3"
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("victorrodi/telegram-channel-scraper-api").call(
run_input={"channels": ["durov"], "newerThan": "2026-10-01"}
)
for post in client.dataset(run.default_dataset_id).iterate_items():
print(post["date"], post["views"], post["text"][:80] if post["text"] else "")
cURL
curl -X POST "https://api.apify.com/v2/acts/victorrodi~telegram-channel-scraper-api/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"channels": ["telegram"], "maxPostsPerChannel": 20}'
Works with Google Sheets, Make, Zapier, n8n and MCP / AI agents: “Summarize what these 5 crypto channels posted today and which post got the most views.”
🤖 Use it from AI agents (Claude, ChatGPT, Cursor…)
This Actor is available to AI assistants through the Apify MCP server. Add the server to Claude Desktop, Claude Code, Cursor or any MCP client, then simply ask:
“Summarize what these 5 crypto Telegram channels posted today and which post got the most views.”
“Search the durov channel for posts about AI since January and list them with their views.”
The clean, flat output is designed to be read directly by LLMs.
🛡️ Reliability
- Requests are paced and retried with a new IP and exponential backoff.
- If the site keeps blocking, the Actor switches to residential IPs automatically.
- One failing item never stops the run, and you are never charged for it.
- Every run writes a
RUN_SUMMARYrecord (results, failures, retries, blocks). - Measured on a real run: 600 posts from 2 channels in 46 seconds with 0 blocks.
More examples and docs for all our Actors: Vicshock/trendpulse-scrapers.
📌 Tips
- For monitoring, schedule the Actor daily with
newerThanset to a recent date: you only pay for new posts. - Engagement rate ≈
views / subscribersandtotalReactions / views— handy to compare channels. - Channels whose owners turned off the web preview cannot be read without an account; they are listed under
noPublicPreviewin the run summary.
❓ FAQ
Do I need a Telegram account or API ID? No. The Actor reads Telegram’s public web preview (t.me/s/…).
Can it read groups or members? No. Only public channel posts — no member lists, no private chats, no personal data.
Is it legal? The Actor reads posts that channels publish publicly on the web. Respect Telegram’s terms and the laws that apply to you.
💬 Support
Missing a field? Open an issue in the Issues tab — it is answered fast.