Telegram Channel Scraper — Posts, Views, Reactions & Monitor avatar

Telegram Channel Scraper — Posts, Views, Reactions & Monitor

Pricing

from $0.99 / 1,000 telegram posts

Go to Apify Store
Telegram Channel Scraper — Posts, Views, Reactions & Monitor

Telegram Channel Scraper — Posts, Views, Reactions & Monitor

Scrape public Telegram channels into JSON: posts, views, reactions, media, forwards, and channel profiles. No login. Incremental monitor for scheduled runs. A Telegram API alternative for Python, Node.js, and MCP.

Pricing

from $0.99 / 1,000 telegram posts

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Telegram Channel Scraper — Public Posts, Views & Monitor

Unofficial tool for publicly accessible Telegram web preview data. Telegram and related trademarks belong to their respective owners. Not affiliated with, sponsored by, or endorsed by Telegram FZ-LLC. Provided for informational use only; users must comply with applicable terms and laws. Public channels with web preview only — no private chats, members, or phone numbers.

Social listeningProduct launches
Telegram Channel Scraper ◄── you are hereBluesky Scraper
Public posts, views, reactions, profiles, keyword filter, monitorPosts, profiles, search, threads, graph, monitor

Telegram scraper for Apify — extract public channel posts, views, reactions, media URLs, forwards, link previews, and channel profiles from the public web preview, with no login, phone number, or bot token. Use it as a Telegram API alternative from Python, Node.js, or MCP.

Monitor mode stores per-channel watermarks in a named key-value store and returns only posts newer than the last run — built for hourly/daily schedules, brand listening, and competitor tracking.

When to use this Actor

  • Archive public channel posts (news, crypto, government, brand, OSINT)
  • Pull view counts, reaction tallies, and media CDN URLs without an MTProto session
  • Resolve channel profiles (title, bio, subscriber count, verified)
  • Keyword / hashtag filter across a list of channels you already follow
  • Scheduled incremental monitoring of new posts (optional webhook / bot alerts)

When not to use

  • Private groups, invite links (t.me/+, joinchat), or t.me/c/… numeric chats
  • Member lists, phone numbers, last-seen, or adding users
  • Channels that disabled the public web preview
  • Comments from a linked discussion group (not exposed on the public preview)

Key features

  • No login — HTTP parse of the public preview (t.me/s/{channel} + embed), not a shared user session
  • 4 modes — posts, profiles, keyword search inside given channels, incremental monitor
  • Full public post contract — text + HTML, views (1.59M → integer), reactions when present, photos/videos, documents, polls, forwards, replies, link previews, hashtags, mentions
  • Multi-channel input — usernames, @handles, t.me / t.me/s URLs, or a single post URL
  • Date bounds — ISO dates or relative lookback (7 days, 2 weeks)
  • Stable paginationrel=prev + ?before= with per-channel caps
  • Monitor watermarkslastPostId in a named KV store; optional baseline-only first run
  • Preview-disabled channels — one error row, the rest of the run continues
  • RateGate — client RPS budget + 429/403 backoff; proxy optional

Input

ParameterDescription
modeposts, profiles, search, monitor
startUrlst.me / t.me/s URLs or a single post URL
channelsUsernames or @handles
searchQuery / searchQueriesKeyword filter (required for search)
sinceDate / untilDateISO or relative lookback
maxItemsDataset row cap (0 = unlimited)
maxPostsPerChannelPer-channel cap
includeChannelInfoCopy profile fields onto every post (default true)
includeReactionsParse reaction tallies when the preview includes them
onlyWithMedia / messageTypesOptional filters
monitorStoreNameNamed KV store for watermarks
monitorBaselineOnlyFirst run: set watermark, push nothing
webhookUrl / telegramToken / telegramChatIdMonitor alerts
concurrency / maxRequestsPerSecondThroughput (keep modest)
proxyConfigurationOptional; enable if you see HTTP 403

Channel archive:

{
"mode": "posts",
"channels": ["telegram", "durov"],
"maxItems": 100,
"includeChannelInfo": true,
"includeReactions": true,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Keyword search inside channels:

{
"mode": "search",
"channels": ["telegram"],
"searchQuery": "polls",
"maxItems": 50,
"sinceDate": "7 days"
}

Monitor (schedule after a baseline run):

{
"mode": "monitor",
"channels": ["telegram"],
"monitorStoreName": "telegram-monitor-brand-x",
"monitorBaselineOnly": true,
"maxItems": 200
}

After the baseline run, set monitorBaselineOnly to false (or omit it) so later runs push only new posts. Use a distinct monitorStoreName per schedule.

Output

One dataset row per post (or one profile / error row). Channel fields are copied onto each post so you do not need a join.

FieldDescription
typepost, profile, or error
channelUsername / channelTitle / channelSubscriberCountChannel identity
postId / url / dateMessage identity
text / textHtmlBody
viewsInteger view count
reactions / totalReactionsTallies when the preview exposes them
mediaType / photos / videosMedia CDN URLs (time-limited)
linkPreview / forwardedFrom / replyToUrlGraph
hashtags / mentions / urlsExtracted entities
errorpreview_disabled, not_found, private_invite, …
monitorTargetPresent on monitor rows
{
"type": "post",
"channelUsername": "examplechannel",
"channelTitle": "Example Channel",
"channelVerified": true,
"channelSubscriberCount": 125000,
"postId": 123,
"url": "https://t.me/examplechannel/123",
"date": "2025-01-15T12:00:00Z",
"text": "This is an example channel post.",
"views": 1590000,
"mediaType": "photo",
"photos": [{ "url": "https://cdn4.telesco.pe/file/example.jpg" }],
"reactions": [{ "emoji": "⭐", "isPaid": true, "count": 12 }],
"totalReactions": 12,
"hashtags": ["#example"]
}

Export JSON, JSONL, CSV, Excel, or XML from the default dataset.

Use cases

  • Brand / OSINT listening — schedule monitor on public announcement channels
  • Crypto / news research — archive posts with views and reaction totals
  • Content pipelines / RAG — structured post text + source URLs for search indexes
  • Competitor tracking — profile subscriber counts plus new posts only
  • MCP / agents — call the Actor from an AI assistant without writing a Telethon client

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/telegram-channel-scraper').call({
mode: 'posts',
channels: ['telegram'],
maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/telegram-channel-scraper").call(
run_input={"mode": "posts", "channels": ["telegram"], "maxItems": 20}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("type"), item.get("channelUsername"), item.get("views"), item.get("text"))

cURL

curl "https://api.apify.com/v2/acts/crawloop~telegram-channel-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"posts","channels":["telegram"],"maxItems":20}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/telegram-channel-scraper.

Example prompts:

  • "Run Telegram Channel Scraper posts for telegram max 20 and return text, views, and reactions"
  • "Search the telegram channel for posts about polls in the last 7 days"
  • "Chain Telegram Channel Scraper then Bluesky Scraper for cross-network brand listening"

Suite next step

For public social search and incremental author feeds, use Bluesky Scraper.

FAQ

Do I need a phone number, bot token, or API id?
No. The Actor reads the public web preview. Private data is out of scope.

Why are reactions missing on some channels?
The public preview does not always include reaction HTML. The Actor returns them when present and omits a fake MTProto contract.

Do media URLs last forever?
CDN links from the preview are time-limited. Re-run the Actor when you need a fresh URL. Original file download is not part of this Actor.

What happens if a channel disabled preview?
You get one type: error row with error: preview_disabled. Other channels in the same run continue.

Can I scrape group members?
No. Member lists are not on the public preview and are not collected.

ActorRole
Telegram Channel Scraper ◄── you are herePublic Telegram posts, profiles, search, monitor
Bluesky ScraperBluesky / AT Protocol public data
Product Hunt ScraperProduct launches, reviews, comments