Telegram Channel Scraper avatar

Telegram Channel Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Telegram Channel Scraper

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

Inus Grobler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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, or https://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.

{
"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,Limit
telegram,0,25
@durov,1000,10

Input fields

  • channels: Array of channels to scrape
  • channel: Telegram handle or public Telegram URL
  • fromId: Only return posts with an ID greater than this value
  • limit: Maximum number of posts to scrape for that channel
  • channelInputCsv: CSV input in the old Channel_Name,From_ID,Limit format
  • includeChannelMetadata: Fetch channel display name and subscriber count
  • saveCsvFiles: Save per-channel CSVs and a combined CSV to the key-value store
  • combinedCsvFilename: Filename for the combined CSV export
  • failOnError: Stop the whole run on the first channel failure

Output

Each dataset item represents one Telegram post.

Dataset fields

  • Channel_Handle
  • Channel_Name
  • Subscribers
  • Id
  • Date
  • Url
  • Body
  • Outlinks
  • LinkPreview_Url
  • LinkPreview_SiteName
  • LinkPreview_Title
  • LinkPreview_Description
  • Hash

Output behavior

  • Posts are deduplicated by Hash
  • Posts are filtered to IDs strictly greater than fromId
  • CSV exports are sorted in ascending Id order
  • The actor writes one dataset item per Telegram post

Key-value store files

When saveCsvFiles is enabled, the actor stores:

  • channel_<handle>.csv for each scraped channel
  • combined.csv or your custom combinedCsvFilename
  • OUTPUT with a JSON run summary

How to run locally

Install

python3 -m venv .venv
source .venv/bin/activate
pip 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.json
  • Dockerfile
  • src/main.py
  • src/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.