Home / Tools / Telegram Channel Scraper
Jobs & content
Telegram Channel Scraper
Scrape public Telegram channels without login, phone number or API keys. Get posts with text and HTML, date, views, reactions, forwards, replies, photos, video thumbnails, files and link previews, plus channel info with exact subscriber counts. Date range, keyword filter and deep history.
- Price: $1 per 1,000 × post result
- Prefilled example: finished in 4 s on Oct 19, 2026 (Done in 0.6s: 20 posts from 1 channel(s).)
- Works with: Apify Console, REST API, Python, JavaScript, MCP (Claude, Cursor, VS Code), n8n, Make, Zapier
- Last updated: 2026-10-19
Sample output
| Channel | Date | Views | Reactions | Text |
|---|---|---|---|---|
| durov | 2026-10-11 | 1,140,000 | 28,400 | ✨ Designers × AI 🆕 The mockup er… |
| durov | 2026-10-10 | 1,410,000 | 116,430 | 💸 If your wallet doesn’t look lik… |
| durov | 2026-09-11 | 3,460,000 | 78,640 | 🤝 Telegram has become the sponsor… |
Real rows from the prefilled example run (Oct 19, 2026), 5 of 22+ fields shown. Export as JSON, CSV, Excel or HTML, or read them through the API.
Full JSON of one real output row (8 rows in the example dataset)
{
"type": "channel",
"status": "ok",
"channel": "durov",
"url": "https://t.me/durov",
"title": "Pavel Durov",
"description": "Founder of Telegram.",
"subscribers": 10325992,
"subscribersText": "10.3M",
"photoUrl": "https://cdn4.telesco.pe/file/i6mBunIA0uHW_W8tFCKNu3WlB7f7De1dloTR_A9LqiV_WtoqRwX_USQ8HdgJQp1Tu48XnZhifq-UFvwxcjnTAgUzclb3RagQrWVaQUsdSDzWjdvBODI-lRcn3IOoum7tZpQm8E9yN_OSgFObnHmF99l4tVahn9wUJts5-HnwFxyLgBLAC5odVr4DeW5IAXp1iAxwCz8Huai_N59Gfg3ZiJNLUjM1n108B7Gm63ASU2eF1l_UiSfjYnLaW07...",
"isVerified": true,
"isScam": false,
"isFake": false,
"photosCount": 102,
"videosCount": 47,
"filesCount": null,
"linksCount": 200,
"lastPostId": 552,
"lastPostDate": "2026-10-11T14:52:40Z",
"webPreviewUrl": "https://t.me/s/durov",
"input": "durov",
"scrapedAt": "2026-10-19T10:00:04Z",
"descriptionHtml": "Founder of Telegram."
}Output fields
From the Actor's dataset schema. Every row has the same flat shape, so it drops straight into a spreadsheet, a database or an agent's context.
| Field | Type | Description |
|---|---|---|
type | string | Row type: post, channel (channel info) or error (free) |
status | string | channel/error rows: ok, not_found, no_web_preview, private, is_group, is_user, is_bot, invalid_input, no_posts, no_matches, fetch_failed |
channel | string | Channel username |
channelTitle | string | Channel title |
postId | integer | Post ID (message ID within the channel) |
url | string | Post or channel URL |
date | string | Published (ISO 8601, UTC) |
text | string | Post text (plain, emoji kept, line breaks preserved) |
textHtml | string | Post text as HTML (formatting, links, custom emoji) |
views | integer | Views (Telegram rounds large numbers: 18.9M) |
viewsText | string | Views as shown |
author | string | Author signature, if the channel signs posts |
isEdited | boolean | Post was edited |
forwardedFrom | object | Original channel/user of a forwarded post: name, url, username, postId |
replyTo | object | Replied-to post: postId, channel, url, author, text |
mediaType | string | text, photo, video, album, document, audio, voice, round_video, sticker, gif, location, poll, service, unsupported |
media | array | Media items: type, url, thumbnailUrl, duration, fileName, fileSize |
mediaCount | integer | Number of media items |
photoUrls | array | Photo URLs |
videoThumbnailUrls | array | Video thumbnail URLs |
documentNames | array | Attached file names |
linkPreview | object | Link preview: url, siteName, title, description, imageUrl |
poll | object | Poll: question, type, options (text, percent), voters |
links | array | Links in the post text |
Pricing
Pay per result, billed by Apify. No subscription and no minimum. Discount tiers apply automatically on paid Apify plans.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Post result main Charged once for each Telegram post successfully saved to the dataset. | $0.001 | $0.0009 | $0.0008 | $0.0007 |
| Channel info Charged once for each channel information row successfully saved to the dataset. | $0.002 | $0.0017 | $0.0015 | $0.0013 |
Examples on the Free plan: 100 post results = $0.10, 1,000 post results = $1, 10,000 post results = $10. Apify's Free plan includes $5 of monthly usage credit. Prices read from the Apify API at build time (2026-10-19).
Example input
This is the prefilled input on the Store page. Keep it and click Start to see real data in seconds.
{
"channels": [
"durov"
],
"maxPostsPerChannel": 20,
"keywordMode": "contains",
"matchAllKeywords": false,
"wholeWordsOnly": true,
"maxScannedPostsPerChannel": 5000,
"includeChannelInfo": true,
"includeHtml": true,
"includeServiceMessages": false,
"proxyConfiguration": {
"useApifyProxy": true
},
"alwaysUseProxy": false,
"maxConcurrency": 10
}Use it from code, no-code or an AI agent
cURL (one request, returns rows)
curl -X POST \
"https://api.apify.com/v2/acts/wrenfield-data~telegram-channel-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"channels": ["durov"], "maxPostsPerChannel": 20, "keywordMode": "contains", "matchAllKeywords": false, "wholeWordsOnly": true, "maxScannedPostsPerChannel": 5000, "includeChannelInfo": true, "includeHtml": true, "includeServiceMessages": false, "proxyConfiguration": {"useApifyProxy": true}, "alwaysUseProxy": false, "maxConcurrency": 10}'Python
# pip install apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("wrenfield-data/telegram-channel-scraper").call(
run_input={
"channels": [
"durov"
],
"maxPostsPerChannel": 20,
"keywordMode": "contains",
"matchAllKeywords": False,
"wholeWordsOnly": True,
"maxScannedPostsPerChannel": 5000,
"includeChannelInfo": True,
"includeHtml": True,
"includeServiceMessages": False,
"proxyConfiguration": {
"useApifyProxy": True
},
"alwaysUseProxy": False,
"maxConcurrency": 10
},
max_total_charge_usd=1.00, # hard cap for this run
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)JavaScript / Node
// npm i apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('wrenfield-data/telegram-channel-scraper').call({
"channels": [
"durov"
],
"maxPostsPerChannel": 20,
"keywordMode": "contains",
"matchAllKeywords": false,
"wholeWordsOnly": true,
"maxScannedPostsPerChannel": 5000,
"includeChannelInfo": true,
"includeHtml": true,
"includeServiceMessages": false,
"proxyConfiguration": {
"useApifyProxy": true
},
"alwaysUseProxy": false,
"maxConcurrency": 10
}, { maxTotalChargeUsd: 1 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);MCP (Claude, Cursor, VS Code, any MCP client)
{
"mcpServers": {
"wrenfield-telegram-channel-scraper": {
"url": "https://mcp.apify.com?tools=wrenfield-data/telegram-channel-scraper"
}
}
}Remote MCP server hosted by Apify. Sign in with OAuth on first use, or send Authorization: Bearer <APIFY_TOKEN>. The tool appears as wrenfield-data--telegram-channel-scraper. More client setups on the MCP page.
n8n, Make, Zapier
Use the official Apify node or app, pick Run Actor, enter wrenfield-data/telegram-channel-scraper and paste the input JSON above. Then read the run's dataset items. Ready-made n8n workflows are on the n8n templates page.
FAQ
How much does Telegram Channel Scraper cost?
$0.001 per post result on the Apify Free plan ($1 per 1,000), billed per result by Apify with no subscription. Plus $0.002 per channel info. Higher Apify plans get the discounted tiers shown in the pricing table. You can cap any run with a maximum cost.
Related tools
Compare and plan
Try Telegram Channel Scraper now
Open it on Apify, keep the prefilled example and click Start. The Apify Free plan includes $5 of monthly credit, no card needed.
Open on Apify