Telegram Channel Scraper
Pricing
from $1.00 / 1,000 results
Telegram Channel Scraper
Scrape public Telegram channels without the Telegram API. Extract posts, dates, URLs, outlinks, link previews, and optional channel metadata, then export results to the Apify dataset and CSV files.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Inus Grobler
Actor stats
0
Bookmarked
23
Total users
10
Monthly active users
9 days ago
Last modified
Categories
Share
Telegram Channel Scraper (Apify Actor)
Scrape public Telegram channels into structured Apify datasets without using the Telegram API.
This Telegram scraper collects channel posts, metadata, links, hashtags, mentions, and timestamps from public t.me channels. It is designed for monitoring, research, OSINT workflows, analytics pipelines, and content archiving.
Why use this Telegram scraper?
- Scrape public Telegram channel posts at scale
- Track new posts incrementally with
startId - Scrape multiple channels in one run
- Extract rich post data: body text, outlinks, hashtags, mentions, link previews
- Enrich posts with channel name and subscriber count
- Run reliably on Apify with dataset output and run summary
Best use cases
- Telegram channel monitoring
- Competitor and market intelligence
- OSINT and media research
- Content analysis and trend tracking
- Data collection for BI or ETL pipelines
Limitations
This actor supports only public Telegram channels available via public web pages.
Not supported:
- Private channels
- Login-protected content
- Full Telegram account automation
- Channels blocked by regional/network restrictions
Apify input
Use channels, channelList, or both.
Recommended input
{"channels": [{"channelName": "telegram","startId": 0,"limit": 25},{"channelName": "@durov","startId": 1000,"limit": 10}],"channelList": "apify\nnews","defaultStartId": 0,"defaultLimit": 25,"includeChannelMetadata": true,"maxConcurrency": 4,"failOnError": false}
Input fields
channels: Array of channel rowschannelName: Telegram handle or public URL (telegram,@telegram,https://t.me/telegram)startId: Only posts with ID strictly greater than this value are returnedlimit: Max posts to scrape for that channelchannelList: Comma/newline-separated channel list for quick entrydefaultStartId: DefaultstartIdwhen a row omits itdefaultLimit: Defaultlimitwhen a row omits itincludeChannelMetadata: Include channel title and subscriber countmaxConcurrency: Number of channels scraped in parallelfailOnError: Stop run on first channel failure
Output
Each dataset item is one Telegram post.
Dataset fields
Channel_HandleChannel_NameSubscribersIdDateUrlBodyBody_LengthMentionsHashtagsOutlinksOutlinks_CountLinkPreview_UrlLinkPreview_SiteNameLinkPreview_TitleLinkPreview_DescriptionHash
Output behavior
- Deduplicates by message ID per channel
- Filters to IDs strictly greater than
startId - Writes one item per Telegram post to the default dataset
- Stores
OUTPUTrun summary in key-value store
Local run
Install
python3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txt
Run
python telegram_scraper.py \--channel telegram \--channel durov \--limit 25 \--out outputs
Optional flags:
--from-id 1000--run-name my_run--no-metadata--max-concurrency 4
Local CLI writes files to outputs/<run-name-or-timestamp>/.
Validation and tests
Validate input schema:
$apify validate-schema .actor/input_schema.json
Run tests:
$python3 -m unittest discover -s tests -p "test_*.py" -v
FAQ
Does this use the Telegram API?
No. It scrapes public Telegram web pages using snscrape.
Does this scrape private channels?
No. Public channels only.
Why is Subscribers sometimes 0?
Subscriber count is best-effort from public page metadata. If parsing fails or metadata is disabled, it may be 0.
Can I export to CSV?
The actor itself writes to dataset + run summary. Export dataset items to CSV from Apify after the run.