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
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Telegram Channel Scraper for Apify
This Telegram channel scraper is an Apify Actor for extracting posts from public Telegram channels without using the Telegram API. If you need a Telegram scraper for channel monitoring, research, archiving, lead intelligence, or content analysis, this actor collects public channel posts and stores them in a clean Apify dataset.
The actor accepts either structured Apify input or a legacy CSV, scrapes recent posts from one or more public Telegram channels, enriches results with channel metadata when available, pushes items to the default dataset, and can also save CSV exports to the default key-value store.
What this Telegram scraper does
- Scrapes posts from public Telegram channels using
snscrape - Accepts channel handles like
telegram,@telegram, orhttps://t.me/telegram - Supports multiple channels in a single run
- Lets you resume from a last-seen message ID with
fromId - Limits the number of posts per channel with
limit - Extracts post text, URLs, dates, outlinks, and link preview details
- Enriches results with channel title and subscriber count when available
- Saves results to the Apify dataset and optional CSV files
What this actor is best for
This actor is a good fit if you want to:
- monitor news or competitor Telegram channels
- collect Telegram posts for research or OSINT workflows
- archive public Telegram channel content
- feed Telegram data into BI, analytics, or downstream ETL pipelines
- export Telegram messages to CSV for manual review
Limitations
This actor only works with public Telegram channels that are accessible via Telegram's public web preview pages.
It does not support:
- private channels
- content hidden behind login
- channels blocked in your region
- full Telegram account automation
Because this actor relies on public Telegram pages and snscrape, upstream Telegram changes can affect scraping behavior over time.
Input
The actor accepts either channels, channelInputCsv, or both.
Recommended JSON input
{"channels": [{"channel": "telegram","fromId": 0,"limit": 25},{"channel": "@durov","fromId": 1000,"limit": 10}],"includeChannelMetadata": true,"saveCsvFiles": true,"combinedCsvFilename": "combined.csv","failOnError": false}
Legacy CSV input
Channel_Name,From_ID,Limittelegram,0,25@durov,1000,10
Input fields
channels: Array of channels to scrapechannel: Telegram handle or public Telegram URLfromId: Only return posts with an ID greater than this valuelimit: Maximum number of posts to scrape for that channelchannelInputCsv: CSV input in the oldChannel_Name,From_ID,LimitformatincludeChannelMetadata: Fetch channel display name and subscriber countsaveCsvFiles: Save per-channel CSVs and a combined CSV to the key-value storecombinedCsvFilename: Filename for the combined CSV exportfailOnError: Stop the whole run on the first channel failure
Output
Each dataset item represents one Telegram post.
Dataset fields
Channel_HandleChannel_NameSubscribersIdDateUrlBodyOutlinksLinkPreview_UrlLinkPreview_SiteNameLinkPreview_TitleLinkPreview_DescriptionHash
Output behavior
- Posts are deduplicated by
Hash - Posts are filtered to IDs strictly greater than
fromId - CSV exports are sorted in ascending
Idorder - The actor writes one dataset item per Telegram post
Key-value store files
When saveCsvFiles is enabled, the actor stores:
channel_<handle>.csvfor each scraped channelcombined.csvor your customcombinedCsvFilenameOUTPUTwith a JSON run summary
How to run locally
Install
python3 -m venv .venvsource .venv/bin/activatepip install -r requirements.txt
Run the local CLI
$python telegram_scraper.py --input channels.csv --out outputs
Optional flags:
--run-name my_run--combined merged.csv--no-metadata
This writes output to outputs/<run-name-or-timestamp>/.
Apify actor files
The project includes:
.actor/actor.json.actor/input_schema.json.actor/output_schema.json.actor/dataset_schema.json.actor/key_value_store_schema.jsonDockerfilesrc/main.pysrc/telegram_actor.py
Validation and testing
Validate the input schema:
$apify validate-schema .actor/input_schema.json
Run the actor locally with Apify storage by placing input into the default key-value store or by using the Apify CLI.
Why use this Telegram channel scraper on Apify
Apify gives you a clean way to run this Telegram scraper repeatedly, store structured output, connect it to datasets and automations, and plug it into larger scraping or data engineering workflows. If you need a Telegram channel scraper, Telegram post scraper, or Telegram data export tool for public channels, this actor is built for that use case.
FAQ
Does this scrape private Telegram channels?
No. This actor only scrapes public Telegram channels that are accessible on the web.
Does this use the Telegram API?
No. It uses public Telegram pages through snscrape.
Can I resume from the last message I already processed?
Yes. Set fromId to the last processed post ID, and the actor will only keep newer posts.
Can I export results to CSV?
Yes. Enable saveCsvFiles and the actor will store per-channel CSVs plus a combined CSV in the default key-value store.