Telegram Channel Scraper (No Login) avatar

Telegram Channel Scraper (No Login)

Pricing

from $1.00 / 1,000 messages

Go to Apify Store
Telegram Channel Scraper (No Login)

Telegram Channel Scraper (No Login)

Scrape public Telegram channels without login or API keys: messages, views, reactions, media, links, forwards and channel subscribers. Filter by keyword and date.

Pricing

from $1.00 / 1,000 messages

Rating

0.0

(0)

Developer

Smoldesk Studios

Smoldesk Studios

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Telegram Channel Scraper – Messages, Views, Reactions & Subscribers

Scrape public Telegram channels without a Telegram account, phone number or API keys (no api_id / api_hash, no Telethon session). Get every message with its views, reactions, photos, videos, links, forwards and hashtags, plus channel info like subscriber count and verified badge.

Filter by keyword and date range, scrape many channels in parallel, and export the channel to JSON, CSV, Excel or via API. Schedule it to monitor channels for new posts.

What you can use it for

  • Crypto & trading signal tracking: collect every call from signal channels with timestamps for backtesting.
  • Brand & competitor monitoring: track what channels in your niche post and which posts get the most views and reactions.
  • News & research: archive channels for media analysis, OSINT research or academic datasets.
  • Lead generation & influencer research: compare channels by subscribers and engagement before buying ads.
  • AI / LLM pipelines: feed clean message text into summarisation, sentiment or RAG workflows.

How to scrape a Telegram channel

  1. Create a free Apify account (no credit card needed to start) and open this Actor.
  2. Add channels. Paste public channel links or @usernames (one per line) in Channels. Private channels and groups you must join are not available.
  3. Set the limits. Max messages per channel is how many of the newest messages to read. Use Messages newer than / older than to cut a period, or Keyword search to read only matching messages.
  4. Choose extras. Leave Include channel info on to also get subscribers, description and photo count.
  5. Click Start. Results appear in the Output tab while it runs.
  6. Download or connect. Export as JSON, CSV, Excel or HTML, or read the dataset through the API, Make, Zapier, n8n, Google Sheets or a webhook.
  7. Automate it. Open Schedules, add a daily schedule and set Messages newer than to yesterday to build a running archive of a channel.

Tips

  • Channels must be public, with a preview at t.me/s/
  • Use Keyword search to track a brand or ticker inside a channel without reading everything.
  • Raise Delay between pages if you scrape many channels in one run.

Why this scraper

  • ✅ No login, no phone number, no ban risk to your account: it only reads Telegram's public web preview (t.me/s/<channel>).
  • ✅ Rich data: views, per-emoji reactions (including paid ⭐ Stars reactions), media URLs, link previews, polls, forwards, replies, hashtags.
  • ✅ Full history: paginates back through the whole channel, or stops at your date.
  • ✅ Fast & cheap: plain HTTP, no browser. Hundreds of messages in seconds.
  • ✅ Pay only for results: you are charged per message returned, nothing for failed or skipped channels.

Input

FieldDescription
channelsUsernames or links: durov, @durov, https://t.me/durov
maxMessagesPerChannelNewest first. 0 = whole history
searchQueryKeyword or #hashtag, using Telegram's in-channel search
dateFrom / dateToOnly messages within this range
includeChannelInfoAdd one item per channel with title, description and subscribers
{
"channels": ["durov", "https://t.me/telegram"],
"maxMessagesPerChannel": 500,
"dateFrom": "2026-01-01",
"searchQuery": "update"
}

Output

Each message:

{
"type": "message",
"channel": "durov",
"messageId": 531,
"url": "https://t.me/durov/531",
"date": "2026-07-16T20:45:25+00:00",
"text": "Telegram now has a Rich Text Editor...",
"views": 5800000,
"reactions": [{"emoji": null, "customEmojiId": "5265077361648368841", "paidStars": false, "count": 54600}],
"totalReactions": 95000,
"photos": [],
"videos": ["https://cdn4.telesco.pe/file/....mp4"],
"links": [],
"hashtags": [],
"forwardedFrom": null,
"linkPreview": null,
"channelTitle": "Pavel Durov",
"channelSubscribers": 10400000,
"scrapedAt": "2026-10-14T03:00:00+00:00"
}

Each channel (when includeChannelInfo is on):

{
"type": "channel",
"channel": "durov",
"title": "Pavel Durov",
"description": "Founder of Telegram.",
"verified": true,
"subscribers": 10400000,
"photos": 102,
"videos": 47,
"links": 200
}

Pricing

Pay per result, no monthly rental:

EventPrice
Message$1.00 per 1,000 messages
Channel info (only when includeChannelInfo is on)$2.00 per 1,000 channels

Example: the last 500 posts from 10 channels (5,000 messages) cost $5. Set "Maximum cost per run" in the run options to stay within budget. The scraper stops cleanly when the limit is reached and never charges for messages it doesn't return.

Use with AI (LangChain / LlamaIndex / CrewAI)

Each message's text field is clean plain text, so channels drop straight into summarisation, sentiment or RAG pipelines. With LangChain (pip install langchain-apify):

from langchain_apify import ApifyWrapper
from langchain_core.documents import Document
apify = ApifyWrapper() # reads APIFY_API_TOKEN
loader = apify.call_actor(
actor_id="smoldesk/telegram-channel-scraper",
run_input={"channels": ["durov", "telegram"], "maxMessagesPerChannel": 100},
dataset_mapping_function=lambda m: Document(
page_content=m.get("text") or "",
metadata={k: m.get(k) for k in ("url", "channel", "date", "views", "totalReactions")},
),
)
docs = loader.load()

Already have a run? Load its dataset with ApifyDatasetLoader(dataset_id="<run's dataset ID>", dataset_mapping_function=...). LlamaIndex: ApifyActor from llama-index-readers-apify. CrewAI / Claude / MCP clients: add it as a tool via the Apify MCP server: https://mcp.apify.com?actors=smoldesk/telegram-channel-scraper.

Limitations

  • Only public channels that have web preview enabled. Private channels, groups and user chats are not accessible (by design).
  • Counts are as Telegram displays them (e.g. 10.4M → 10400000), so large numbers are rounded.
  • Video URLs from Telegram's CDN are temporary; download them soon after scraping.

FAQ

Do I need a Telegram API key or phone number? No. Unlike Telethon or Pyrogram scripts, there is no api_id, api_hash, phone login or session file. Your Telegram account can't get banned because none is used.

Can it scrape private channels or groups? No. Only public channels with web preview (t.me/s/<channel>) are supported.

Do I need proxies? No. It works without a proxy.

How do I monitor a channel for new posts? Schedule the Actor (e.g. hourly) with dateFrom set to a recent date or a small maxMessagesPerChannel, and send results to Slack, Google Sheets or a webhook with Apify integrations.

Is it legal? This Actor only collects data that Telegram publishes openly on the web to anyone, without logging in. You are responsible for how you use the data. Respect privacy laws (e.g. GDPR) and Telegram's terms, and don't use personal data for spam.

Feedback

Found a bug or missing a field? Open an issue in the Issues tab. If the Actor saved you time, a short review on this page helps other people find it.

More Actors from Smoldesk Studios