Telegram Channel Scraper (Posts, Views, Reactions) avatar

Telegram Channel Scraper (Posts, Views, Reactions)

Pricing

from $0.70 / 1,000 post scrapeds

Go to Apify Store
Telegram Channel Scraper (Posts, Views, Reactions)

Telegram Channel Scraper (Posts, Views, Reactions)

Scrape posts from any public Telegram channel without login or API keys: text, date, views, reactions, photos, videos, links and forwards, plus channel title, subscribers and description. Full history with pagination. Export to Excel, CSV or JSON.

Pricing

from $0.70 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Julio Barcellos Rangel

Julio Barcellos Rangel

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

Telegram Channel Scraper collects posts from public Telegram channels with no login, no phone number and no API keys: text, date, views, reactions, photos, videos, links and forwards, plus the channel's title, subscriber count and description on every row. It is made for marketers, researchers, journalists, crypto and news watchers who need a Telegram channel scraper to export Telegram posts to Excel, CSV or JSON. It pages back through the channel history, so you can export thousands of posts per channel.

What does Telegram Channel Scraper do?

You give it channel usernames or links. For each channel, the scraper reads the channel's public web preview (the page at t.me/s/<channel>) and pages back from the newest post until it reaches your limit, your start date or the first post of the channel.

It accepts:

  • Usernames: durov
  • Usernames with @: @telegram
  • Channel links: https://t.me/durov or https://t.me/s/durov
  • Post links: https://t.me/durov/529 (the scraper reads the whole channel durov)

Each post becomes one row with the post text (line breaks kept), date, view count, reactions, media links and forward source. The channel's title, username, subscriber count, description and verified badge are repeated on every row, so the table is ready to filter and sort.

What data can you extract?

FieldWhat it meansExample
channelChannel username you entereddurov
channelTitleChannel namePavel Durov
channelUsernameChannel username as Telegram shows itdurov
subscribersSubscriber count shown on the preview page10400000
channelDescriptionChannel descriptionFounder of Telegram.
channelVerifiedtrue when the channel has the verified badgetrue
postIdPost number inside the channel548
urlLink to the posthttps://t.me/durov/548
textPost text with line breaks (empty for posts with no text)🤝 Telegram has become the sponsor of Codeforces…
datePost date and time (ISO 8601)2026-09-11T16:04:02+00:00
viewsView count2800000
authorSignature of the author, when the channel signs postsPavel Durov
forwardedFromName of the source when the post is a forwardnull
isEditedtrue when the post was editedfalse
photosImage URLs in the post[]
videoVideo URL in the posthttps://cdn4.telesco.pe/file/f4b10a0c75.mp4?token=…
hasDocumenttrue when a file is attachedfalse
linksWeb links inside the post text["https://codeforces.com/blog/entry/156620"]
reactionsList of reactions with emoji and count[{"emoji": "paid-stars", "count": 21800}]
totalReactionsSum of all reaction counts77090
scrapedAtWhen the post was scraped (ISO 8601)2026-10-10T20:31:49.377Z
errorOnly on error rows: why no posts came backChannel not found or has no public preview

About reactions: each item has emoji and count. emoji is the emoji itself for standard reactions, custom:<id> for custom emoji reactions, and paid-stars for paid Telegram Stars reactions.

How to use Telegram Channel Scraper

  1. Open Telegram Channel Scraper in Apify Console.
  2. Add channels to Channels, one per line (durov, @telegram, https://t.me/durov).
  3. Set Max posts per channel (default 100). Use a high number for the full history.
  4. Optional: pick a date in Only posts newer than to get only recent posts.
  5. Click Start and wait for the run to finish.
  6. Open the Output tab and export the posts as JSON, CSV, Excel or HTML.

To monitor channels, save the input as a task with a start date and schedule it daily.

Input

FieldTypeDefaultWhat it does
channelslist of text (required)["durov"]Public channel usernames or links, for example durov, @telegram or https://t.me/durov.
maxPostsPerChannelinteger100Maximum posts per channel, newest first. From 1 to 100,000. The scraper pages back through the history until this limit.
onlyPostsNewerThandate (YYYY-MM-DD)emptyOnly returns posts from this date on. The scraper stops when it reaches older posts.
proxyobject{ "useApifyProxy": true }Apify Proxy settings. The default works for most runs.

Example input:

{
"channels": ["durov", "@telegram", "https://t.me/contest"],
"maxPostsPerChannel": 500,
"onlyPostsNewerThan": "2026-01-01",
"proxy": { "useApifyProxy": true }
}

Output example

One real post from a recent run:

{
"channel": "durov",
"channelTitle": "Pavel Durov",
"channelUsername": "durov",
"subscribers": 10400000,
"channelDescription": "Founder of Telegram.",
"channelVerified": true,
"postId": 548,
"url": "https://t.me/durov/548",
"text": "🤝 Telegram has become the sponsor of Codeforces — the largest competitive programming platform in the world. \n\n ⚡CodeForces organizes over 100 coding contests every year and has 4 million contestants signed up.…",
"date": "2026-09-11T16:04:02+00:00",
"views": 2800000,
"author": "Pavel Durov",
"forwardedFrom": null,
"isEdited": false,
"photos": [],
"video": null,
"hasDocument": false,
"links": ["https://codeforces.com/blog/entry/156620"],
"reactions": [
{ "emoji": "paid-stars", "count": 21800 },
{ "emoji": "custom:5399847211989246390", "count": 35300 },
{ "emoji": "custom:5936157098181135162", "count": 10300 },
{ "emoji": "custom:5373223594484587136", "count": 9690 }
],
"totalReactions": 77090,
"scrapedAt": "2026-10-10T20:31:49.377Z"
}

How much does it cost?

Telegram Channel Scraper uses pay-per-event pricing. You pay $1.00 per 1,000 posts ($0.001 per post) on the Free plan. Apify platform usage is included in the price.

PlanPrice per 1,000 posts
Free$1.00
Bronze (-10%)$0.90
Silver (-20%)$0.80
Gold and higher (-30%)$0.70

Worked examples on the Free plan:

  • The latest 100 posts of one channel = $0.10
  • 10 channels, 1,000 posts each = 10,000 posts = $10.00
  • The full history of a channel with 50,000 posts = $50.00

What you are not charged for:

  • Error rows: channels that do not exist, private channels, groups and user accounts with no public preview, and channels where no posts were found.
  • Posts skipped by the Only posts newer than date.
  • Duplicate posts: a post seen twice while paging the same channel is returned once.

Use cases

  • News and crypto monitoring: follow announcement channels every day and alert your team about new posts.
  • Engagement analysis: compare views and reactions per post to see which content performs best.
  • Ad placement research: check subscribers against real post views before you buy an ad in a channel.
  • Competitor tracking: archive what competing brands post and how often.
  • Media and academic research: export a channel's full history for content, sentiment or narrative analysis.
  • Link and source tracking: use links and forwardedFrom to see what a channel shares and which channels it forwards from.
  • AI datasets: feed post text to summaries, classifiers or a searchable archive.

Tips and limits

  • Public channels only: the scraper works for channels with a public web preview at t.me/s/<channel>. Private channels, groups and user accounts have no preview and return an error row.
  • Counts are rounded: Telegram's web preview shows numbers like 2.8M or 55.9K, and the scraper turns them into 2800000 and 55900. Views, subscribers and reaction counts are therefore approximate for large numbers.
  • Paid stars count in the total: totalReactions adds up every reaction, including paid-stars.
  • Custom emoji: custom emoji reactions come as custom:<id> because the preview does not show them as normal emoji.
  • Media links are temporary: video and photos URLs point to Telegram's servers and can stop working after a while. Download the files soon if you need to keep them.
  • Date filter: posts are read newest first and paging stops at the first post older than your date.
  • Links: use usernames or t.me links. Other link formats are not recognized.
  • Enter each channel once: duplicates are not merged, so durov and https://t.me/durov in the same run scrape (and charge) the channel twice.
  • Error rows: Channel not found or has no public preview means the channel does not exist or is not public; No posts found means the channel loaded but no posts came back (for example, none newer than your date). Both are free.

Use it from the API, Python or JavaScript

You can run the scraper and read the posts with the official Apify clients. Replace YOUR_TOKEN with your Apify API token.

JavaScript (Node.js):

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const input = { channels: ['durov'], maxPostsPerChannel: 200 };
const run = await client.actor('juliob.rangel/telegram-channel-scraper-fast').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
input = {'channels': ['durov'], 'maxPostsPerChannel': 200}
run = client.actor('juliob.rangel/telegram-channel-scraper-fast').call(run_input=input)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

The scraper also works with Make, Zapier and n8n, can export results to Google Sheets, can call your webhook when a run finishes, and can be used by AI agents through the Apify MCP server.

FAQ

Do I need a Telegram account, phone number or API key? No. The scraper reads the public web preview of each channel. You do not need a Telegram account or the Telegram API.

Can I export Telegram posts to Excel or CSV? Yes. Open the Output tab after the run and download the dataset as Excel, CSV, JSON or HTML, or send it to Google Sheets.

How many posts can I get? Up to 100,000 per channel in one run, limited by how many posts the channel has.

Can I scrape Telegram groups or private channels? No. Only public channels with a web preview work. Groups, private channels and user accounts return an error row and are not charged.

Can I get the comments under channel posts? No. The scraper returns the posts, their views and their reactions, not the comments.

Is it legal to scrape Telegram channels? The scraper only collects publicly available data. You are responsible for complying with Telegram's terms and with privacy laws such as GDPR and LGPD. Posts can contain personal data, such as author signatures or names in the text, so you need a legitimate reason to collect and use it.

Why did I get an error row? The channel does not exist, is not public, or no posts were found (for example, none after your start date). Error rows are not charged.


Extrator de Canais do Telegram (PT-BR)

Colete posts de canais públicos do Telegram sem login nem chave de API: texto, data, visualizações, reações, fotos, vídeos e links, além do nome do canal e número de inscritos. Você paga só por post retornado.