Telegram Channel Scraper – Posts, Messages & Views, No Login avatar

Telegram Channel Scraper – Posts, Messages & Views, No Login

Pricing

from $1.50 / 1,000 post scrapeds

Go to Apify Store
Telegram Channel Scraper – Posts, Messages & Views, No Login

Telegram Channel Scraper – Posts, Messages & Views, No Login

Telegram channel scraper for public channels, without login or API keys: posts and messages with text, views, reactions, photos, videos, polls, link previews, forwards and replies, plus channel info (subscribers, description). Search inside channels and filter by date.

Pricing

from $1.50 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Enes Bulanık

Enes Bulanık

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Telegram channel scraper for public channels, without login or API keys: posts and messages with text, views, reactions, photos, videos, polls, link previews, forwards and replies, plus channel info (subscribers, description). Search inside channels and filter by date.

Price: $1.50 per 1,000 posts. Channels that fail produce a free error row.

What does Telegram Channel Scraper do?

Telegram Channel Scraper reads the official public web preview of a channel (https://t.me/s/<channel>) – the same page anyone can open in a browser – and turns it into clean, structured data:

  • Posts – full text (with line breaks and emoji), optional original HTML, hashtags and outbound links
  • Views – parsed into real integers ("1.2K" → 1200, "3.4M" → 3400000)
  • Reactions – emoji + count for every reaction, including custom emoji and paid Star reactions
  • Media – media type (photo, video, sticker, poll, voice, document, audio…) and direct media URLs (photos, video files, stickers), plus video thumbnails
  • Polls – question, poll type and the percentage for each option
  • Link previews – URL, site name, title, description and image
  • Forwards and replies – the source channel of forwarded posts and the post a message replies to
  • Edited flag, author signature, post URL and ISO date
  • Channel info – title, @username, verified badge, description, subscribers, number of photos/videos/files/links and avatar URL

It walks back through the channel history page by page, so you can get the latest 20 posts or the whole archive of thousands of posts.

Details

  • No login, no API keys, no phone number – it reads only public pages, so your Telegram account is not involved.
  • Pay per result – $1.50 per 1,000 posts, $0.002 per channel profile.
  • No browser – plain HTTP requests. About 1,000 posts in under a minute in our tests.
  • Errors are free – channels that don't exist, bots, groups and channels without a public preview produce an error row that is not charged.
  • Cost control – set Max posts per channel, a date limit and Apify's Max cost per run; the Actor stops when your budget is reached.

Use cases

  • Media monitoring & news tracking – follow news, political or crypto channels and pull new posts on a schedule.
  • Marketing & competitor analysis – compare views, reactions and posting frequency of competitor channels.
  • Influencer research – check subscriber counts and real engagement (views/reactions per post) before buying ads.
  • Crypto & trading signals – collect posts from public signal channels into a spreadsheet or database.
  • Academic research & OSINT – build datasets of public channel content for NLP, sentiment or propaganda research.
  • AI / LLM pipelines – feed fresh channel content into RAG, summarization or classification workflows.

How to scrape Telegram channels

  1. Click Try for free / Start.
  2. Enter one or more channels in Telegram channels – durov, @durov or https://t.me/durov all work.
  3. Optionally set Max posts per channel, Only posts newer than (e.g. 7 days or 2025-01-01) and a Search keyword.
  4. Click Start and download your data as JSON, CSV, Excel, XML or HTML – or connect it to Make, Zapier, Google Sheets, Slack, webhooks or the Apify API.

Input

FieldTypeDescription
channelsarray of stringsRequired. Channel usernames or links (durov, @durov, https://t.me/durov, https://t.me/s/durov).
maxPostsPerChannelintegerMax posts per channel, newest first. 0 = whole history. Default 100.
onlyNewerThanstringSkip older posts. Absolute date (2025-01-01) or relative (7 days, 2 weeks, 3 months).
searchQuerystringOnly posts containing this keyword or #hashtag.
includeChannelInfobooleanAdd one channel-profile item per channel. Default true.
includeTextHtmlbooleanAlso save the original post HTML in textHtml. Default false.
proxyConfigurationobjectOptional proxy. Not needed in normal use.

Example input:

{
"channels": ["telegram", "durov", "https://t.me/bloomberg"],
"maxPostsPerChannel": 200,
"onlyNewerThan": "30 days",
"includeChannelInfo": true
}

Output

Each dataset item has a type: post, channel or error. Real sample output (shortened):

Post

{
"type": "post",
"channel": "durov",
"channelTitle": "Pavel Durov",
"postId": 540,
"url": "https://t.me/durov/540",
"date": "2026-08-10T09:29:58.000Z",
"text": "🇺🇿 The 2026 International Olympiad in Informatics starts today in Tashkent.\n\n🏆 The IOI is the ultimate coding competition for high-school students. ...",
"views": 4550000,
"author": "Pavel Durov",
"edited": false,
"forwardedFrom": null,
"replyTo": null,
"hasMedia": true,
"mediaType": "photo",
"mediaUrls": ["https://cdn4.telesco.pe/file/dWETKtgBqJjVJf6v9r4y...jpg"],
"thumbnailUrls": [],
"documents": [],
"poll": null,
"linkPreview": null,
"reactions": [
{ "emoji": "⭐", "customEmojiId": null, "paid": true, "count": 9110 },
{ "emoji": null, "customEmojiId": "5373223594484587136", "paid": false, "count": 42500 },
{ "emoji": null, "customEmojiId": "5399847211989246390", "paid": false, "count": 15600 }
],
"reactionsTotal": 77210,
"hashtags": [],
"links": [],
"scrapedAt": "2026-10-07T18:06:46.386Z"
}

Channel info

{
"type": "channel",
"channel": "durov",
"title": "Pavel Durov",
"username": "durov",
"url": "https://t.me/durov",
"verified": true,
"description": "Founder of Telegram.",
"subscribers": 10500000,
"photosCount": 102,
"videosCount": 46,
"filesCount": null,
"linksCount": 200,
"avatarUrl": "https://cdn4.telesco.pe/file/e2rpvz6z6aZTf...jpg"
}

Error (free)

{
"type": "error",
"channel": "nodejs_ru",
"url": "https://t.me/nodejs_ru",
"errorCode": "GROUP_NO_PREVIEW",
"error": "@nodejs_ru is a group/chat. Telegram does not provide a public web preview for groups, so its messages can't be scraped without login."
}

Possible errorCode values: NOT_FOUND, BOT, GROUP_NO_PREVIEW, CHANNEL_NO_PREVIEW, NO_PREVIEW, INVALID_INPUT, SCRAPE_FAILED.

Other post fields you may see: poll (question, type, options[{text, percent}]), linkPreview (url, siteName, title, description, imageUrl), forwardedFrom (name, url, username), replyTo (postId, url, author, text), documents (title, extra), textHtml.

mediaType is one of photo, video, sticker, poll, voice, audio, document, location, mixed (album with several kinds), unsupported (media Telegram only shows inside the app) or null (text-only post).

The dataset has ready-made views in Apify Console: Posts, Engagement, Media & links and Channel info & errors.

Pricing

This Actor uses pay-per-event pricing – you only pay for the data you get. Platform usage is included.

EventPriceWhen it is charged
post$0.0015 per post ($1.50 / 1,000)Each post saved to the dataset
channel-info$0.002 per channelEach channel profile item (only if Include channel info is on)
ErrorsFreeMissing channels, bots, groups, channels without preview

Examples:

JobCost
20 latest posts from 2 channels + channel info40 × $0.0015 + 2 × $0.002 = $0.064
1,000 posts from 1 channel$1.50 (+ $0.002)
10,000 posts from 10 channels$15.00 (+ $0.02)

Tip: set Max cost per run in the run options – the scraper stops cleanly when your budget is reached.

Use with AI agents (MCP)

Add the Actor to the Apify MCP server (https://mcp.apify.com?tools=openharvest/telegram-channel-scraper) or let agents find it with search-actors ("telegram channel").

Example call-actor input for "What did the Telegram channel @durov post in the last two weeks, and which post got the most views?":

{
"channels": ["durov"],
"onlyNewerThan": "14 days",
"maxPostsPerChannel": 50,
"includeChannelInfo": false
}

The agent reads text, date, views and reactionsTotal.

FAQ

Do I need a Telegram account or API key? No. The scraper only reads the public t.me/s/ web preview that anyone can open without logging in.

Can it scrape private channels or groups? No. Private channels, invite links (t.me/+...) and groups/chats have no public web preview. They are reported as a free error item. Some public channels also disable their web preview – those are reported as CHANNEL_NO_PREVIEW.

How many posts can I get? As many as the channel shows publicly – set maxPostsPerChannel to 0 to get the full history. Posts that were deleted are skipped.

How does search work? The scraper first uses Telegram's own channel search (t.me/s/<channel>?q=keyword) for the newest matches and then continues through older posts, keeping only posts whose text, hashtags, poll or link preview contain all the words of your query.

Why do some videos have no mediaUrls? For larger videos Telegram's web preview shows only a thumbnail (saved in thumbnailUrls) and asks viewers to open the app. Media URLs are served by Telegram's CDN and may expire after some time – download files soon after scraping if you need them.

Why is emoji null for some reactions? Those are custom (premium) emoji. They have no Unicode character, so the scraper returns their customEmojiId instead.

Can I run it on a schedule? Yes. Use Apify Schedules with onlyNewerThan set to e.g. 1 day to get only new posts every day.

Can I use it via API or in my code? Yes – use the Apify API, the JavaScript/Python API clients, or integrations such as Make, Zapier, n8n, Google Sheets and webhooks.

This Actor only extracts publicly available data that Telegram itself publishes on the open web without login. It does not access private messages, private channels or personal account data. Still, scraped content may contain personal data or copyrighted material, so make sure your use complies with applicable laws (e.g. GDPR) and with Telegram's Terms of Service. Do not use this tool or its data for spam, harassment or any unsolicited messaging. If you are unsure, consult a lawyer.

  • RSS Feed Reader & Feed Finder – RSS/Atom to JSON, Full Text
  • Substack Scraper – Newsletter Posts, Full Text & Comments
  • Bluesky Scraper (coming soon)

Support & feedback

Found a bug or missing field? Open an issue in the Issues tab with the channel name. Feature requests are welcome.