Telegram Channel Scraper
Pricing
from $1.00 / 1,000 rows
Telegram Channel Scraper
Scrapes posts from public Telegram channels with views, reactions, media and links, searches inside channels or finds channels by keyword, and adds exact subscriber counts.
Pricing
from $1.00 / 1,000 rows
Rating
0.0
(0)
Developer
Mina
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
What does Telegram Channel Scraper do?
Telegram Channel Scraper collects posts from public Telegram channels: the full text, date, views, reactions, paid Stars, photos, videos, files, polls, link previews, forwards and replies, plus each channel's exact subscriber count, title, description and photo. Paste channel links, single post links or a search inside a channel. You can also search all of Telegram by keyword, and every post you get back really contains your keyword.
Try it with the prefilled channel: open the Actor, click Start, and the first 20 posts arrive in a few seconds. Because it runs on the Apify platform, you also get API access, scheduled runs, integrations (Google Sheets, Make, Zapier, webhooks), run monitoring and automatic retries through Apify Proxy when Telegram is slow to answer.
Why scrape Telegram channels?
- Media and news monitoring: follow news, politics or industry channels and get every new post as structured data.
- Crypto and market research: track what signal, project and exchange channels post, and how many views and reactions each post earns.
- Brand and keyword tracking: find every public channel that mentions your brand, product or hashtag, with posts that really contain it.
- Audience research: compare channels by exact subscriber count, views per post and reactions.
- Archiving and AI datasets: save a channel's history with text, links and media URLs for analysis or model training.
How to scrape Telegram channels
- Find a public channel in Telegram and copy its link, such as
https://t.me/durov. A plain@durovworks too. - Paste it into Telegram links, one link per line.
- Optionally, paste a link to a single post (
https://t.me/durov/548) or a search inside a channel. To get a search link, open the channel athttps://t.me/s/durov, type in its search box, and copy the address bar. - Set Max posts per link and, if you only want recent posts,
Only posts newer than (a date or an age such as
7 days). - Click Start, then download the results when the run finishes.
To find channels you don't know yet, type words into Find channels by keyword instead. The Actor looks up public channels about each keyword and saves only their posts that contain every word of it.
Input
Everything is set on the Input tab. In JSON, the input looks like this:
{"startUrls": ["https://t.me/s/durov","https://t.me/telegram/441","https://t.me/s/tginfo?q=bot"],"maxPostsPerChannel": 100,"newerThan": "30 days","includeChannelInfo": true,"keywords": ["bitcoin etf"],"maxChannelsPerKeyword": 5}
| Field | What it does |
|---|---|
startUrls | Channel links (t.me/name, t.me/s/name, @name), single post links (t.me/name/123) or in-channel search links (t.me/s/name?q=word). |
maxPostsPerChannel | Stops after this many posts per link, newest first. Default: 100. Set 0 to save only channel profiles. |
newerThan | Skips posts older than a date (2026-09-01) or an age (7 days, 12 hours, 2 weeks). |
includeChannelInfo | Adds one profile row per channel with its exact subscriber count. Default: on. |
keywords | Optional. Finds public channels about each keyword and saves their posts that contain it. |
maxChannelsPerKeyword | How many channels to search for each keyword, from 1 to 10. Default: 5. |
proxyConfiguration | Optional; leave it empty. Telegram answers the Actor directly, and if it is ever refused, the Actor retries through Apify datacenter and then residential proxies by itself. |
Output
Each post and each channel profile becomes one row. Here is a real post, with its long media links shortened:
{"type": "post","channel": "durov","channelTitle": "Pavel Durov","postId": 537,"url": "https://t.me/durov/537","date": "2026-08-03T07:19:56+00:00","isEdited": false,"text": "🧠 The 2026 International Olympiad in Artificial Intelligence starts today.\n\nAs a token of support for those who will reinvent our civilization, we'll issue 🏆 240 exclusive Intelligence Cups to the winners. …","links": [],"views": 3610000,"reactions": [{ "emoji": null, "customEmojiId": "5399847211989246390", "count": 39400 },{ "emoji": null, "customEmojiId": "5936157098181135162", "count": 11200 }],"paidStars": 15500,"media": [{ "type": "photo", "url": "https://cdn4.telesco.pe/file/OITBwTjjdBxK…jpg" }],"linkPreview": null,"poll": null,"forwardedFrom": null,"replyTo": null,"author": "Pavel Durov","matchedKeyword": null,"sourceUrl": "https://t.me/s/durov","scrapedAt": "2026-10-01T18:11:30.442713+00:00"}
And the channel's profile row:
{"type": "channel","channel": "durov","title": "Pavel Durov","description": "Founder of Telegram.","subscribers": 10557247,"isVerified": true,"photoUrl": "https://cdn4.telesco.pe/file/Wy6pjko8IMI…jpg","url": "https://t.me/durov","scrapedAt": "2026-10-01T18:11:29.958551+00:00"}
The Output tab has two views, Posts and Channel profiles. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Data fields
Post rows (type is post):
| Field | Description |
|---|---|
channel | The channel's username. |
channelTitle | The channel's display name. |
postId | The post's number in the channel. |
url | Link to the post. |
date | When it was posted (UTC, ISO 8601). |
isEdited | true when the post was edited after posting. |
text | The full post text, with line breaks and emoji. |
links | Web addresses linked from the text. |
views | View count. Telegram rounds counts above 1,000 (for example 1.87M becomes 1870000). |
reactions | Each reaction with its emoji (or customEmojiId for custom emoji) and count. |
paidStars | Telegram Stars paid as reactions. |
media | Photos, videos, animations, files, audio and stickers: type, url, plus thumbnailUrl and durationSec for videos, title and size for files, and title and performer for audio. |
linkPreview | The preview card of a shared link: url, siteName, title, description, imageUrl. |
poll | A poll's question, type and options with their vote percent. |
forwardedFrom | The original channel or author of a forwarded post: name and url. |
replyTo | Link to the post this one replies to. |
author | The author signature, on channels that sign posts. |
matchedKeyword | The keyword or in-channel search the post matched. |
sourceUrl | The link the post was found through. |
scrapedAt | When the row was saved. |
Channel rows (type is channel): channel, title, description,
subscribers (exact), isVerified, photoUrl, url and scrapedAt.
How much does it cost to scrape Telegram?
Telegram Channel Scraper uses pay-per-event pricing, so you pay only for results:
- $1.00 per 1,000 rows: each post or channel profile saved is one row.
- $0.01 per keyword search that returns posts. Keyword searches that find nothing are free.
- A tiny fee per run start.
For example, the latest 100 posts of 10 channels plus their profiles (1,010 rows) cost about $1.01. Apify's free plan includes $5 of monthly credit, enough for roughly 5,000 posts. Links that return nothing are never saved as rows, so you are not charged for them. If you set a maximum cost for a run, the Actor stops as soon as it is reached.
Tips for scraping Telegram
- Use
newerThanfor monitoring. Schedule a daily run with1 dayto get only new posts from your channels. - Profiles only: set
maxPostsPerChannelto0to check the subscriber counts of a long list of channels quickly and cheaply. - Search inside a channel when you need older posts on one topic: Telegram's search finds matches anywhere in the channel's history. It returns up to about 20 of the newest matches per search, so use several searches for more.
- Hashtags work in in-channel searches:
https://t.me/s/durov?q=%23Telegram. - Keyword search is slower than pasting links, because each keyword first has to find channels. Paste channel links whenever you know them.
- Each post is saved only once per run, even when several links lead to it.
FAQ, disclaimers and support
Which channels can be scraped? Public channels that show their posts on
the web at t.me/s/<name>. Most public channels do. Private channels, invite
links, groups, bots and personal accounts cannot be read. A channel that hides
its web preview still gets its profile row, but its posts can only be read in
the Telegram app.
Why are view counts rounded? Telegram itself only shows rounded counts above 1,000, such as 1.87M. The Actor turns them into numbers.
What happens to links that return nothing? They are not saved as rows,
so you are not charged for them. Each one is listed with its reason in the
FAILED_INPUTS record of the run's key-value store, and the run's status
message gives the counts. A run fails only when every input failed because
Telegram could not be reached.
Are media links permanent? Photo and video links point to Telegram's content servers and may stop working after a while. Download the files soon after the run if you need to keep them.
Is it legal to scrape Telegram? This Actor collects only posts and profiles that channels publish openly on the web. It does not read private chats, groups or comments. Posts can still contain personal data, so you are responsible for making sure your use complies with Telegram's Terms of Service and with data protection laws such as the GDPR. If in doubt, ask a lawyer.
Found a problem or need a custom solution? Open an issue on the Issues tab and we will look into it. Custom scrapers and data feeds are available on request.