Telegram Channel Scraper — Posts, Messages, Views & Monitoring avatar

Telegram Channel Scraper — Posts, Messages, Views & Monitoring

Pricing

from $0.80 / 1,000 messages

Go to Apify Store
Telegram Channel Scraper — Posts, Messages, Views & Monitoring

Telegram Channel Scraper — Posts, Messages, Views & Monitoring

Telegram channel scraper, no API key or login: posts and messages from public Telegram channels with views, reactions, media URLs. Delta mode makes it a Telegram monitoring feed: each run returns only new posts. For OSINT, crypto signals and brand monitoring. Telethon mode adds groups and members.

Pricing

from $0.80 / 1,000 messages

Rating

0.0

(0)

Developer

Sami

Sami

Maintained by Community

Actor stats

1

Bookmarked

64

Total users

5

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

Telegram channel scraper for public channels: extract posts (messages), view counts, reactions and media metadata. No login and no API key required, from $0.80 per 1,000 messages. Turn on delta mode to monitor channels: each scheduled run returns only the new posts. Groups and member lists need the optional Telethon mode with your own Telegram credentials.

What is this Telegram channel scraper?

This Apify Actor scrapes public Telegram channels and groups, extracting messages with full metadata including view counts, reactions (emoji + counts), media URLs, forwarded message info, hashtags, mentions, and channel statistics.

It supports two scraping modes:

  • Web Preview (default): Zero-friction, no credentials needed. Uses Telegram's public t.me/s/ endpoint.
  • Telethon API: Full access with your Telegram API credentials — complete message history (10,000+), member lists, and more.

Telegram API alternative — no login required

Looking for a Telegram scraper that works without API credentials? This Actor's default mode (Web Preview) requires zero setup — no API key, no phone number, no login. Just paste channel URLs and get structured data.

For power users who need full message history (10,000+) and member lists, the Telethon API mode provides complete access with your own Telegram API credentials.

Features at a glance

FeatureThis Actor
No login neededYes (Web Preview mode)
Reactions dataYes
Media metadataYes
Messages limit10,000+
Member extractionYes (optional, Telethon mode)
Date filteringYes
Multi-channelYes

Quick Start

Step 1: Paste channel URLs

{
"channels": [
"https://t.me/durov",
"t.me/techcrunch",
"coindesk"
]
}

Step 2: Click Run

The actor accepts full URLs, short URLs, or just the channel username. All formats work.

Step 3: Download Results

Export to JSON, CSV, Excel, or connect via API. Each message is an individual row for easy analysis.

⏰ Turn it into a monitor: only NEW messages (delta mode)

Most of this Actor's value is in watching channels, not pulling them once. Turn on deltaMode and every run returns only messages posted since the previous run of that stream. You pay only for what is new: $0.0008 per new message plus the channel fee ($0.003 web preview, $0.05 Telethon) for each channel that returned something; a channel with no new messages costs nothing.

{
"channels": ["durov", "coindesk"],
"maxMessagesPerChannel": 1000,
"deltaMode": true,
"deltaStateKey": "crypto-alpha"
}

How it behaves

  1. First run returns the current history (up to maxMessagesPerChannel per channel, billed per message like any run) and sets the baseline (per channel).
  2. Every run after that returns only genuinely new messages — already-seen ones are skipped and not returned.
  3. A quiet channel costs nothing: if nothing new was posted, nothing is pushed and no scrape event is billed.

Then attach a schedule — Apify Console → Schedules → Create, pick this Actor and your saved input, and set a cron (0 * * * * hourly, 0 8 * * * daily at 8am). You now have a hands-off "what's new in these channels" feed that grows a timestamped archive you own.

💡 deltaStateKey names an independent stream, so several monitors never collide — e.g. crypto-alpha for signal channels and tipsters for betting channels, each tracked separately even if they share channels. Delta works in both modes (web preview and Telethon API); member lists are snapshots and are not delta-filtered.

Use Cases

  • OSINT & Intelligence: Monitor public channels for threat intelligence, track disinformation, and analyze information operations.
  • Marketing & Competitive Analysis: Analyze competitor community engagement, content strategy, and audience reactions.
  • Crypto & Web3 Research: Track token launches, monitor signal channels, and measure community sentiment across crypto groups.
  • Compliance & Archival: Archive channel history for regulatory requirements, legal discovery, or organizational record-keeping.
  • Academic Research: Collect data for studies on online communities, information spread, and public discourse patterns.

Two Scraping Modes

Mode 1: Web Preview (Default — No Login)

Uses Telegram's public web preview at t.me/s/. Perfect for quick data collection without any setup.

  • No credentials needed — works out of the box
  • Public channels only — channels must have web preview enabled
  • Full channel history — the public preview paginates all the way back, 20 messages per page, no API key
  • Extracts: text, HTML, views, reactions, media URLs, forwards, replies, links, hashtags, mentions

Mode 2: Telethon API (Full Access)

Uses Telegram's official API via the Telethon library. Unlocks complete channel data.

  • Requires API credentials — api_id + api_hash from my.telegram.org
  • Full message history — up to 10,000+ messages per channel
  • Member extraction — optional, requires appropriate permissions
  • Bot token support — use a Bot Token from @BotFather as an alternative

How to Get API Credentials

  1. Go to my.telegram.org
  2. Log in with your phone number
  3. Create a new application (or use an existing one)
  4. Copy the API ID (number) and API Hash (string)

How to Generate a Session String

Run this Python script locally (one time only):

from telethon.sync import TelegramClient
from telethon.sessions import StringSession
api_id = 12345 # Your API ID
api_hash = "abc123" # Your API Hash
with TelegramClient(StringSession(), api_id, api_hash) as client:
print("Your session string:")
print(client.session.save())

This will prompt you for your phone number and a verification code. Copy the output string and paste it into the actor's sessionString input field.

Using a Bot Token Instead

If you only need to read public channel messages (no member lists), you can use a Bot Token:

  1. Message @BotFather on Telegram
  2. Create a new bot with /newbot
  3. Copy the token and paste it into the botToken input field
  4. Add your bot to the channel as an admin (or the channel must be public)

Input Parameters

ParameterTypeRequiredDefaultDescription
channelsarrayYes—Telegram channel URLs or usernames
modestringNoweb_previewweb_preview or telethon_api
maxMessagesPerChannelintegerNo1000Max messages per channel (up to 10,000). Billed per message delivered ($0.0008 each), so a lower cap costs proportionally less.
deltaModebooleanNofalseRecurring monitor: return ONLY messages posted since the previous run of this stream. First run sets the baseline; a quiet channel costs nothing, and new messages bill $0.0008 each plus the channel fee. Works in both modes.
deltaStateKeystringNodefaultNames an independent delta stream so multiple monitors don't collide (e.g. crypto-alpha vs tipsters). Only used when deltaMode is on.
extractMediabooleanNotrueInclude media metadata in output
extractReactionsbooleanNotrueInclude reaction counts
extractMemberDatabooleanNofalseExtract member list (Telethon only)
dateFromstringNo—Only messages after this date (ISO format)
dateTostringNo—Only messages before this date (ISO format)
apiIdintegerNo—Telegram API ID (Telethon only)
apiHashstringNo—Telegram API Hash (Telethon only, secret)
sessionStringstringNo—Pre-generated session string (Telethon only, secret)
botTokenstringNo—Bot Token from @BotFather (Telethon only, secret)

Input Example

Web Preview Mode (No Login)

{
"channels": [
"https://t.me/durov",
"coindesk"
],
"mode": "web_preview",
"maxMessagesPerChannel": 200,
"extractMedia": true,
"extractReactions": true,
"dateFrom": "2026-01-01"
}

Telethon API Mode (Full Access)

{
"channels": ["https://t.me/durov"],
"mode": "telethon_api",
"maxMessagesPerChannel": 5000,
"apiId": 12345,
"apiHash": "your_api_hash_here",
"sessionString": "your_session_string_here",
"extractMemberData": false
}

Output Example

Each message is stored as an individual item in the dataset:

{
"id": 350,
"date": "2026-04-05T18:30:00+00:00",
"text": "Today we're launching a new feature...",
"text_html": "Today we're launching a <b>new feature</b>...",
"views": 2100000,
"views_display": "2.1M",
"author": null,
"forwarded_from_name": null,
"forwarded_from_url": null,
"reply_to_message_id": null,
"media_type": "photo",
"media_url": "https://cdn4.telesco.pe/file/...",
"reactions": [
{ "emoji": "\ud83d\udc4d", "count": 42000 },
{ "emoji": "\u2764\ufe0f", "count": 15000 }
],
"reactions_total": 57000,
"links": ["https://telegram.org/blog/new-feature"],
"hashtags": ["#telegram"],
"mentions": null,
"message_url": "https://t.me/durov/350",
"channel_name": "Durov's Channel",
"channel_username": "durov",
"channel_url": "https://t.me/durov",
"channel_subscribers": 10300000,
"channel_verified": true,
"scrape_mode": "web_preview",
"scraped_at": "2026-04-12T15:00:00+00:00"
}

Pricing

This actor uses Pay Per Event pricing.

EventPrice
Actor run started$0.00005 (per GB of memory, minimum 1 event)
Channel scraped (web preview)$0.003 per channel
Channel scraped (Telethon API)$0.05 per channel
Message (each message delivered)$0.0008 ($0.80 per 1,000)
1,000 members extracted$1.00

Cost Examples

Messages are billed one by one at $0.0008 ($0.80 per 1,000), plus one channel fee for each channel that returned messages. There is no per-channel minimum: 100 messages cost $0.08 and 1,000 cost $0.80. Set maxMessagesPerChannel to what you need: 100 for a quick look, higher for an archive. The public preview really does paginate that deep (measured: 11 years of history in one run).

ScenarioCost
1 channel, 100 messages (web preview)~$0.08
@durov's whole public history, about 430 messages (web preview, the prefilled run)~$0.35
5 channels, 100 messages each (web preview)~$0.42
10 channels, 200 messages each (web preview)~$1.63
1 channel, 5,000 messages (Telethon)~$4.05
1 channel, 1,000 messages + 1,000 members (Telethon)~$1.85
Daily delta run, 1 channel posting ~20 messages a day (web preview)~$0.02 per day

With deltaMode on, a channel with nothing new in a run charges nothing — not even the per-channel event. A channel with new messages bills $0.0008 per new message plus the channel fee ($0.003 web preview, $0.05 Telethon), so a scheduled monitor costs in proportion to what the channels actually post.

No compute or proxy charges — you pay only the listed events.

How to Scrape Telegram Channels

Scraping Telegram channels for data analysis, research, or monitoring is straightforward with this actor:

  1. Find the channel: Navigate to the Telegram channel in your browser or app. The URL format is t.me/channelname.
  2. Configure the actor: Paste the channel URL(s) into the input. Choose your scraping mode and set the message limit.
  3. Run the actor: Click "Start" on Apify. The actor handles pagination, rate limiting, and error recovery automatically.
  4. Export your data: Download results as JSON, CSV, or Excel. Or connect via API for automated pipelines.

The actor automatically handles:

  • Rate limiting with exponential backoff
  • Pagination to collect all available messages
  • Private/non-existent channel detection
  • Multiple input formats (URLs, usernames, with/without @)

Integration Examples

Python SDK

from apify_client import ApifyClient
client = ApifyClient("your_api_token")
run = client.actor("zhorex/telegram-channel-scraper").call(run_input={
"channels": ["https://t.me/durov"],
"maxMessagesPerChannel": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['date']}: {item['text'][:80]}")

cURL

curl "https://api.apify.com/v2/acts/zhorex~telegram-channel-scraper/runs" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{"channels": ["durov"], "maxMessagesPerChannel": 50}'

Webhook / n8n Integration

Set up an Apify webhook to trigger when the actor finishes, then process results in n8n, Zapier, or any automation tool.

FAQ

Does this require a Telegram API key?

No (for web preview mode). The default mode uses Telegram's public web preview at t.me/s/ which requires no authentication. For Telethon mode, you need API credentials from my.telegram.org.

Can I scrape private channels?

Only with Telethon mode if you are a member of the channel. Web preview mode only works with public channels that have web preview enabled.

What about rate limits?

The actor handles rate limits automatically. Web preview mode waits 0.75 seconds between page requests. Telethon mode handles Telegram's FloodWaitError with automatic sleep and retry. You should never see rate limit errors in your results.

Is this GDPR compliant?

The actor extracts publicly available data. When extracting member data (Telethon mode), ensure you have a legitimate legal basis under GDPR or applicable data protection laws. Member data extraction is disabled by default.

What formats can I export?

Apify supports JSON, CSV, Excel (XLSX), and XML. You can also access data via the Apify API, integrate with Google Sheets, or connect to 2,000+ apps via webhooks.

Why do I need a phone number for Telethon mode?

Telegram's API requires phone-based authentication. You generate a session string once locally, then use it in the actor. The actor never stores or transmits your phone number.

What's the maximum number of messages?

Web preview mode reads the FULL channel history with no API key (measured 2026-08-27: 22 consecutive pages, no login). Raise maxMessagesPerChannel for deep backfills; the run simply takes longer. Telethon mode, with your own credentials, adds member data, groups, and the channels that switch their public preview off entirely.

Is there a free Telegram scraper?

This one is not free, but the free plan's $5 monthly credit goes a long way on real data: the prefilled run (@durov's whole public history, about 430 messages) costs about $0.35, and about 6,000 messages fit in $5. Web preview mode costs $0.0008 per message plus $0.003 per channel.

How much does it cost to scrape Telegram channels?

$0.0008 per message ($0.80 per 1,000), plus $0.003 (web preview) or $0.05 (Telethon) per channel that returned messages: ~$0.08 for 100 messages from one channel and $0.80 for 1,000 in web preview ($0.85 in Telethon). Member lists (Telethon only) add $1.00 per started block of 1,000 members.

Can I use this Telegram scraper in Python?

Yes. Use the Apify Python client (pip install apify-client) to call this Actor programmatically. See the Python SDK example above.

This Actor accesses publicly available data through Telegram's public web preview (t.me/s/) and official Telegram API. No authentication is bypassed and no private data is accessed without authorization. Always consult legal counsel for your specific use case.

What does this Telegram scraper cover?

This Actor has two scraping modes (web preview + Telethon API). It supports reactions, media metadata, date filtering, and multi-channel scraping.

Other scrapers by Zhorex

Chinese Social Intelligence Suite:

B2B Review Intelligence:

Streaming Analytics:

Other Tools:

This actor accesses publicly available data through Telegram's public web preview (t.me/s/) and official Telegram API. No authentication is bypassed and no private data is accessed without authorization.

Personal data. Some fields describe people: in messages, author (post signature), sender_id (Telethon), forwarded_from_name and mentions; in the member export (Telethon only, extractMemberData, disabled by default, saved to a separate members-<channel> dataset), user_id, username, first_name, last_name, is_premium and status (online/last-seen status). Under Apify's Standard Actor Contract you, as the person running the Actor, decide what is collected and are the controller of that data: you need a lawful basis (e.g. GDPR) and must respect Telegram's terms. Collect only what you need and delete what you no longer need. Do not use the output to harass, stalk or build profiles of private individuals.

Users are responsible for ensuring their use of extracted data complies with applicable laws and Telegram's Terms of Service.

Not affiliated with, endorsed by or sponsored by Telegram. Names are used only to describe the data source.


Reviews, good or bad, help other users decide: leave one on the reviews page.

Found a bug? Open an issue and it will be looked at.

⌂ 换网址