Telegram Channels Scraper — No Login, Up to 1K Posts avatar

Telegram Channels Scraper — No Login, Up to 1K Posts

Pricing

from $0.50 / 1,000 post scrapeds

Go to Apify Store
Telegram Channels Scraper — No Login, Up to 1K Posts

Telegram Channels Scraper — No Login, Up to 1K Posts

Scrape public Telegram channels via the t.me/s/ web preview: channel info plus posts (text, views, date, media). No login or API key. Up to 1,000 posts/channel. $0.0005/post.

Pricing

from $0.50 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Gio

Gio

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

3

Monthly active users

6 days ago

Last modified

Share

Why use this scraper

Public Telegram channels carry real signal for OSINT researchers, social listening teams, and anyone tracking a brand, a public figure, or a community: Pavel Durov's own channel, a news outlet's feed, a crypto project's announcements. But Telegram's API requires an authenticated session to pull channel history programmatically, which is a heavier lift than most monitoring tasks justify, and a banned or rate-limited session can take down the whole pipeline.

This scraper reads the same public web preview (t.me/s/<channel>) that anyone can open in a browser without an account, and turns it into structured JSON: channel metadata plus recent posts, with view counts, dates, and media flags. No login, no API key, no session to keep alive.

Overview

Give it one or more public channel usernames and it returns, per channel, one metadata record (title, description, subscriber count, avatar) followed by one record per recent post (text, publish date, view count, forwards when present, whether it has media and what kind, and a reply reference when the post is part of a thread). A typical channel with light to moderate posting returns 20 to 50 posts per page of the web preview; set maxPostsPerChannel higher to paginate further back.

Supported inputs

  • Channel usernames — channels: a list of public Telegram channel usernames without the @ (e.g. durov, telegram, cnnbrk). Only public channels that expose the /s/ web preview work; private or invite-only channels are out of scope.
  • Max posts per channel — maxPostsPerChannel: how many recent posts to collect per channel, from 1 to 1,000 (default 50). Each /s/ page shows roughly 20 posts, so a higher value paginates further back in the channel's history.
  • Debug logs — debug: turn on verbose logging for troubleshooting a channel that isn't returning the posts you expect.

Use cases

  • OSINT researchers and journalists pulling a public figure's or organization's channel history for timeline analysis without needing a Telegram account tied to the investigation.
  • Social listening teams monitoring a competitor's or a community's announcement channel for new posts, comparing view counts over time to gauge reach.
  • Crypto and Web3 teams tracking a project's official announcement channel for price-sensitive posts, since many projects post exclusively or first on Telegram.
  • Content and PR teams auditing their own channel's recent post history and view counts for a performance report, without screenshotting each post by hand.
  • Trend and sentiment analysts collecting post text at scale across several related channels to feed into downstream keyword or sentiment analysis.
  • Due diligence and compliance teams building a dated record of what a project or public figure posted on their own channel, useful when a later dispute hinges on exactly when a claim was made public.
  • News desks keeping a lightweight watch on multiple official channels in one place (government agencies, news outlets, emergency services) instead of switching between several open Telegram tabs during a breaking story.

How it works

The scraper requests the public t.me/s/<channel> web preview page for each channel you give it, the same page anyone can open in a browser with no account, and parses the channel header (name, bio, subscriber count, avatar) and the post feed directly from that page's own markup. It walks the preview's "load more" pagination mechanism to collect older posts until it reaches maxPostsPerChannel or runs out of history, reading each post's text, timestamp, view counter, and media indicators exactly as Telegram renders them for an anonymous visitor.

Input configuration — 3 examples

1. Single channel, default depth:

{
"channels": ["durov"],
"maxPostsPerChannel": 50
}

2. Several channels in one run:

{
"channels": ["durov", "telegram", "cnnbrk"],
"maxPostsPerChannel": 30
}

3. Deep pull on one channel's history:

{
"channels": ["telegram"],
"maxPostsPerChannel": 500,
"debug": false
}

Output sample

Real output (channels=["durov"]):

{
"channel": "durov",
"kind": "channel_meta",
"channelTitle": "Pavel Durov",
"description": "Founder of Telegram.",
"subscribers": 10300000
}
{
"channel": "durov",
"kind": "post",
"postId": "532",
"postPath": "durov/532",
"date": "2026-07-19T21:45:01+00:00",
"text": "Telegram now supports carousels. One small step for messaging, one giant leap toward turning cat photos into keynote presentations.",
"views": 6540000,
"forwards": null,
"hasMedia": false,
"mediaType": null,
"replyTo": null
}

Key output fields

FieldTypeDescription
channelstringChannel username this record belongs to.
kindstringchannel_meta for the one per-channel header record, post for every message.
channelTitle / description / subscribers / avatarstring/numberChannel metadata, present only on channel_meta rows.
postId / postPathstringPost identifier and its path within the channel.
datestringPost publish date, ISO 8601.
textstringPost text content.
viewsintegerView count shown on the public preview at scrape time.
forwardsinteger or nullForward count when Telegram exposes it on the preview; often null.
hasMedia / mediaTypeboolean/stringWhether the post has attached media and its type.
replyTostring or nullReference to the post this one replies to, when the channel uses threaded replies.

Pricing

Pay-per-event, no subscription:

EventPrice
Actor start (per run)$0.00005
Post scraped (errors not charged)$0.0005

A run pulling 50 posts each from 3 channels (150 posts) costs about $0.075.

What makes this richer than the competition

automation-lab/telegram-scraper (189 users/30d) and tri_angle/telegram-scraper (152 users/30d) both scrape public channels and profiles with no login required, same as this actor, and both are larger, more established listings. The differentiator here is cost structure: automation-lab/telegram-scraper charges $0.005 per actor start alone, a hundred times this actor's $0.00005 start fee, before any per-post charge is added — for a workflow that runs many small jobs (one channel at a time, on a schedule) rather than one large batch, that start-fee gap adds up fast.

This actor also keeps its output flat and simple: one channel_meta row plus one post row per message, with no nested objects to unpack, which is a lighter shape to pipe straight into a spreadsheet or a database table than a deeply nested channel/message tree.

Notes & limitations

  • Only works on public channels that expose the /s/ web preview; private channels, invite-only groups, and channels that have disabled the web preview are out of scope.
  • forwards and replyTo are frequently null because most channels either don't surface a forward count on the public preview or don't use threaded replies; don't rely on them being populated for every post.
  • View counts reflect what Telegram shows on the public preview at the moment of the run; they will keep climbing after you scrape, so treat them as a snapshot, not a final count.
  • This actor does not authenticate as a Telegram user, so it cannot read anything a logged-out visitor couldn't already see on t.me/s/<channel>.
  • Media itself (photos, videos) is flagged via hasMedia/mediaType but the binary files are not downloaded by this actor; you get the flag and type, not the file.
  • A channel that renames its username will break a saved channels list silently (the old username will 404); re-check the channel's current @handle if a previously working run suddenly returns nothing for it.

FAQ

Do I need a Telegram account or bot token? No, it reads the public web preview that works for any anonymous visitor.

Can I scrape a private channel I'm a member of? No, only public channels with the /s/ web preview enabled are supported.

How far back can I go in a channel's history? Up to maxPostsPerChannel, capped at 1,000; very old posts beyond what the web preview still serves may not be reachable.

Why is forwards null on most posts? Telegram's public web preview does not always expose a forward counter; when it's absent, the field is null rather than a fabricated number.

Can I run this on a schedule to track new posts? Yes, run it periodically and compare postId values against your last run to detect new posts.

For AI Agents & LLM Apps

This Actor is MCP-compatible and works as a tool call for any LLM agent that needs to read public Telegram channel activity.

Via MCP (mcp.apify.com): add this Actor as a tool in your MCP-compatible client and call it with a channels array; the agent gets back structured channel and post JSON ready to summarize or monitor for keywords.

Via API (run-sync-get-dataset-items):

curl "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-X POST -H "Content-Type: application/json" \
-d '{"channels": ["durov"], "maxPostsPerChannel": 20}'

This returns the dataset items directly in the response, ideal for a single synchronous tool call from an agent pipeline.

Disclaimer

This Actor is an independent tool that reads publicly available web pages on telegram.org/t.me. It is not affiliated with, endorsed by, or sponsored by Telegram FZ-LLC. "Telegram" and related marks are trademarks of their respective owners, used here only to describe the data source.

SEO Keywords

Telegram channel scraper, Telegram public channel API, Telegram OSINT tool, Telegram posts scraper no login, social listening Telegram, Telegram channel monitor.