Telegram Scraper - Public Channel Posts & Data
codemaster devops · @codemasterdevops
Scrape public Telegram channel posts, text, dates, views, and available media metadata. Filter by date or post ID and optionally collect public comments.

About
Telegram Channel Scraper
Extract posts from public Telegram channels into a structured dataset for content research, channel monitoring, and news tracking. Enter channel usernames, choose a post limit, and optionally filter by date or post ID.
What you can extract
- Post ID and channel username
- Post text and publication date
- Displayed view count
- Channel title, description, and subscriber text when available
- Author name and Telegram link
- Forwarded-message and reply references when available
- Link preview text
- Available reaction and attachment metadata
- Optional public comments, subject to Telegram web availability
Each dataset row represents one post. Fields may be absent when Telegram does not expose them in the public web page. Media metadata does not guarantee a downloadable media URL.
How to scrape Telegram channel posts
- Add public channel usernames to
channels, such asmediumcom. Use usernames rather than full URLs or invite links. - Set
maxPostsPerChannelto the maximum posts to collect from each channel. - Configure residential proxies in the input form.
- Optionally set a date range or enable a post ID range.
- Start the Actor and inspect or download the resulting dataset.
Example input
{
"channels": ["mediumcom"],
"maxPostsPerChannel": 10,
"usePostIdRange": false,
"includeComments": false,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
Use a supported platform residential proxy configuration, or provide your own proxy URLs through the proxy input.
Filter by date or post ID
Use fromDate and toDate with ISO timestamps to restrict publication dates. For example: 2026-01-01T00:00:00Z.
To target specific post IDs, set usePostIdRange to true and provide postsFrom and postsTo. IDs are channel-specific, and some IDs may refer to deleted or unavailable messages. Keep the ID interval within your post limit when you need every ID attempted.
maxPostsPerChannel is an upper limit, not a guarantee. Date filters, unavailable posts, and public web restrictions can reduce the result count. Collection starts from Telegram's public channel preview; results are not guaranteed to be the newest N posts.
Optional comments
Set includeComments to true and choose maxCommentsPerPost to attempt comment collection. Only content exposed through Telegram's public web pages can be collected. Private discussions and app-only threads are not supported, and comment completeness is not guaranteed.
Common use cases
- Monitor announcements from public Telegram channels.
- Collect posts for news tracking and content research.
- Compare public channel activity and displayed view counts.
- Build datasets filtered by publication date or post ID.
Limits and availability
- Supports public Telegram channels with accessible web previews.
- Does not collect private chats, member lists, phone numbers, or hidden user data.
- Some posts and media require the Telegram app and may produce limited records.
- Reactions, media, and comments depend on Telegram's public markup and may be absent.
- View and subscriber counts are returned as display text.
- Public page changes, rate limits, or proxy failures can affect results.
Monthly rental and usage costs
The monthly rental covers access to the Actor. Bytewells bills compute separately. Check applicable proxy charges before running large jobs.
Support
Report the run ID, public channel username, and input settings with credentials removed. Describe which posts or fields you expected and what the dataset contains.
FAQ
- What can this Telegram scraper collect?
- Public channel posts, text, publication dates, displayed views, channel metadata, and available author, reaction, attachment, and comment fields.
- Do I need a Telegram API ID or phone login?
- The Actor reads public Telegram web previews and does not request a Telegram API ID, phone number, or account login
- Can I scrape private channels or member lists?
- No. Private channels, private chats, member lists, and hidden user details are outside this Actor's scope.
- Can I filter Telegram posts by date?
- Yes. Set fromDate and toDate using ISO timestamps. You can also enable a post ID range and set a maximum number of posts per channel.
- Are all comments and media available?
- No. These depend on Telegram's public web pages. Private or app-only content is not supported, and some media records may lack downloadable URLs.
- Does the post limit guarantee that many results?
- No. It is a maximum. Filters, deleted posts, public web restrictions, and request failures can reduce the results.
- Does the monthly rental cover compute?
- No. Compute is billed separately by Bytewells. Check applicable proxy charges before running large jobs.
Input
Preview of the input form. Rent the Actor to fill it in and start runs from the console.
Fields
channelsProvide one or several Telegram channel names you want to scrape the posts from.
postsFromLowest post identifier to consider (channels start at 1). Used only when post ID range is enabled.
postsToHighest post identifier to consider. Used only when post ID range is enabled.
usePostIdRangeWhen enabled, the actor uses postsFrom/postsTo to limit scraping by ID.
maxPostsPerChannelCaps how many posts are collected per channel, regardless of ID range (helps when using date filters).
fromDateISO date/time – only posts on or after this timestamp are collected (e.g. 2023-01-01T00:00:00Z).
toDateISO date/time – only posts on or before this timestamp are collected.
includeCommentsWhen enabled, the actor loads the comments thread for each post (if available) and adds it to the output.
maxCommentsPerPostUpper limit of comments collected for each post when comment scraping is enabled.
navigationTimeoutSecsTimeout per HTTP fetch in seconds.
requestTimeoutSecsDeprecated alias for navigationTimeoutSecs. Use navigationTimeoutSecs instead.
maxConcurrencyMaximum number of concurrent requests. Leave empty for automatic tuning.
minConcurrencyMinimum number of concurrent requests. Leave empty for automatic tuning.
RESIDENTIAL proxy is required to run this actor! Other proxies will not work.
proxyA proxy server is required to run this actor! Either use an Apify residential proxy, or provide your own proxy servers. Datacenter proxies will not work.
API
Bytewells speaks the Apify API. Existing integrations keep working: point apify-client at https://bytewells.com/api and use your Bytewells API token (Console → Settings → API access). The Actor ID is codemasterdevops/telegram-scraper (or codemasterdevops~telegram-scraper in URLs).
JavaScript · apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.BYTEWELLS_TOKEN,
baseUrl: 'https://bytewells.com/api',
});
const input = {
"channels": [
"mediumcom"
],
"postsFrom": 10,
"postsTo": 0,
"usePostIdRange": false,
"maxPostsPerChannel": 10,
"includeComments": false,
"maxCommentsPerPost": 10,
"navigationTimeoutSecs": 120,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
};
const run = await client.actor('codemasterdevops/telegram-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Python · apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["BYTEWELLS_TOKEN"], api_url="https://bytewells.com/api")
run_input = {
"channels": [
"mediumcom"
],
"postsFrom": 10,
"postsTo": 0,
"usePostIdRange": False,
"maxPostsPerChannel": 10,
"includeComments": False,
"maxCommentsPerPost": 10,
"navigationTimeoutSecs": 120,
"proxy": {
"useApifyProxy": True,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}
run = client.actor("codemasterdevops/telegram-scraper").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)HTTP · curl
curl -X POST "https://bytewells.com/api/v2/acts/codemasterdevops~telegram-scraper/runs" \
-H "Authorization: Bearer $BYTEWELLS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"channels":["mediumcom"],"postsFrom":10,"postsTo":0,"usePostIdRange":false,"maxPostsPerChannel":10,"includeComments":false,"maxCommentsPerPost":10,"navigationTimeoutSecs":120,"proxy":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}'Runs are billed as compute from your credit balance. Paid Actors need an active rental or trial; otherwise the API answers 402 rental-required.
Related
More Actors from the same publisher.

Pinterest Scraper – Extract Profiles & Pin Data
codemaster devops · @codemasterdevops
Scrape public Pinterest profiles and pins. Extract image URLs, descriptions, board details, source links, and available engagement stats.
Social mediaMarketingE-commerce$19.99/mo3-day free trial
Bing Scraper - Search Results & SERP Data
codemaster devops · @codemasterdevops
Scrape Bing search results, titles, links, and snippets. Run multiple queries with market, language, and page controls for SEO and competitor research.
SEO toolsMarketingDeveloper toolsFree
Google Play Reviews Scraper - App Ratings & Feedback
codemaster devops · @codemasterdevops
Extract public Google Play app reviews, ratings, dates, helpful votes, and available developer replies for app research and competitor analysis.
MarketingSEO toolsDeveloper tools$19.99/mo3-day free trial