Telegram Channel Scraper avatar

Telegram Channel Scraper

Under maintenance

Pricing

from $1.00 / 1,000 message scrapeds

Go to Apify Store
Telegram Channel Scraper

Telegram Channel Scraper

Under maintenance

Scrape messages, views, reactions, media, polls, forwards and subscriber counts from any public Telegram channel. Date ranges, keyword search and incremental monitoring. No login, no API keys.

Pricing

from $1.00 / 1,000 message scrapeds

Rating

0.0

(0)

Developer

Borja GVO

Borja GVO

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Export the full message history of any public Telegram channel: text, date, view counts, reactions (including paid Telegram Stars), photos, videos, documents, polls, link previews, forwards and replies, plus the channel's exact subscriber count. No Telegram account, phone number, API ID or bot token needed.

Built for speed and low cost: it reads Telegram's lightweight public web preview (no browser), jumps straight to any date range instead of scrolling, and can run on a schedule to return only new posts since the last run.

What can this Telegram scraper do?

  • 📨 Scrape messages from many channels at once: paste usernames (durov), handles (@durov) or links (https://t.me/durov)
  • 📅 Date range filter with instant seek: get e.g. all posts from March 2024 without paging through everything newer
  • 🔎 Keyword search inside channels using Telegram's own search
  • 🔁 Monitoring mode: schedule the Actor and get only messages published since the previous run (perfect for alerts, dashboards and AI agents)
  • 📊 Engagement data: views, every reaction with its count, total reactions, paid Stars
  • 🖼️ Media: photo URLs, video URLs with duration and thumbnail, voice notes, documents, stickers, locations, full albums
  • 🧵 Context: forwarded-from channel, reply-to message, link previews (title, description, image), polls with options and percentages, hashtags, mentions and all outgoing links
  • 👤 Channel profiles: title, description, exact subscribers, verified badge, number of photos/videos/links, last post date
  • ⚡ Fast: ~1,000 messages per minute per channel, many channels in parallel

Why scrape Telegram?

Telegram has 1B+ users and is where crypto projects, news outlets, traders, brands, OSINT sources and communities publish first. Typical uses:

  • Crypto & trading: collect signals, announcements and sentiment from project and signal channels
  • News & media monitoring: track breaking news, propaganda and narratives across hundreds of channels
  • Marketing & influencer research: compare channels by subscribers, views per post and reaction rates before buying ads
  • OSINT & research: archive channels, study forwarding networks between channels, build datasets for academic work
  • AI & LLM pipelines: feed fresh channel content to RAG systems, summarizers or agents (works with the Apify MCP server)
  • Competitive intelligence: follow competitors' announcement channels automatically

How much does it cost to scrape Telegram?

This Actor uses pay-per-event pricing, so you only pay for data you get:

EventPrice
Message scraped$1.00 per 1,000 messages
Channel profile$0.002 per channel

Example: 10 channels × 500 messages = 5,000 messages ≈ $5.02. Apify's free plan includes monthly credits, enough to try the Actor on thousands of messages. You can cap spending per run with the "Maximum cost per run" setting; the Actor stops cleanly when the cap is reached.

How to use

  1. Click Try for free.
  2. Add one or more channels: durov, @telegram or https://t.me/nytimes.
  3. Optionally set Max messages per channel, a date range, a keyword, or enable monitoring mode.
  4. Click Start and download your data as JSON, CSV, Excel, XML or HTML, or fetch it through the API.

Input example

{
"channels": ["durov", "@telegram", "https://t.me/cointelegraph"],
"maxMessagesPerChannel": 500,
"fromDate": "2025-01-01",
"toDate": "2025-03-31",
"searchQuery": "",
"onlyNewMessages": false,
"includeChannelInfo": true
}

Dates accept absolute values (2025-01-31) or relative ones (7 days, 2 weeks, 3 months).

Output example

Each message is one record:

{
"type": "message",
"channel": "durov",
"id": 548,
"url": "https://t.me/durov/548",
"date": "2026-09-11T16:04:02.000Z",
"text": "🤝 Telegram has become the sponsor of Codeforces — the largest competitive programming platform in the world…",
"views": 2100000,
"viewsText": "2.1M",
"reactions": [
{ "emoji": null, "customEmojiId": "5399847211989246390", "count": 32300 },
{ "emoji": "🔥", "customEmojiId": null, "count": 9380 }
],
"totalReactions": 50580,
"paidStars": 21400,
"author": "Pavel Durov",
"isEdited": false,
"forwardedFrom": null,
"replyTo": null,
"media": [],
"mediaCount": 0,
"linkPreview": {
"url": "https://codeforces.com/blog/entry/156620",
"siteName": "Codeforces",
"title": "Telegram Returns as Title Sponsor of Codeforces!",
"description": "Hi, Codeforces!",
"imageUrl": "https://cdn4.telesco.pe/file/…jpg"
},
"poll": null,
"links": ["https://codeforces.com/blog/entry/156620"],
"hashtags": [],
"mentions": [],
"channelTitle": "Pavel Durov",
"scrapedAt": "2026-10-06T19:37:55.966Z"
}

And, when "Include channel profile" is on, one record per channel:

{
"type": "channel",
"channel": "durov",
"url": "https://t.me/durov",
"entityType": "channel",
"title": "Pavel Durov",
"verified": true,
"description": "Founder of Telegram.",
"subscribers": 10491942,
"photos": 102,
"videos": 46,
"links": 200,
"hasPublicPreview": true,
"latestMessageId": 548,
"latestMessageDate": "2026-09-11T16:04:02.000Z"
}

The dataset has two ready-made views, Messages and Channel profiles, so you can export each one separately as CSV or Excel.

Monitoring Telegram channels on a schedule

  1. Enable Only new messages since last run.
  2. Save the input as a task and add a schedule (e.g. every 15 minutes).
  3. Connect the output to Slack, Google Sheets, a webhook, Make, Zapier or n8n through integrations.

Each run returns only posts newer than the last one it saw, so you never pay twice for the same message.

Use it from code, AI agents and automation tools

  • API: run the Actor and fetch results with the Apify API or the JavaScript/Python clients.
  • AI agents: available through the Apify MCP server, so Claude, ChatGPT, Cursor and other MCP clients can call it as a tool.
  • No-code: Make, Zapier, n8n, Google Sheets and webhooks.

FAQ

Do I need a Telegram account or API keys? No. The Actor reads the same public web preview anyone can open at https://t.me/s/<channel>.

Can it scrape private channels or groups? No. Only public channels whose owners keep the web preview enabled. Public groups return a profile record (title, members, online count) but Telegram does not publish their message history on the web. Channels that disabled the preview are reported with hasPublicPreview: false.

How far back can it go? All the way to the first post of a public channel. Use toDate to jump to old periods instantly.

Why are some reactions shown with customEmojiId instead of an emoji? Channels can use custom (premium) emoji as reactions. Telegram's web preview only exposes their ID, which is returned so you can still count and group them.

Are view counts exact? Telegram rounds large view counts in public previews (e.g. 2.1M). The rounded value is converted to a number in views; the original text is kept in viewsText. Subscriber counts in channel profiles are exact.

Is scraping Telegram legal? The Actor only collects data that channel owners chose to publish publicly. You are responsible for how you use it, including compliance with GDPR and other privacy laws when processing personal data.

Support

Found a bug or need an extra field? Open an issue in the Issues tab — this Actor is actively maintained.