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

23

Total users

10

Monthly active users

9 days ago

Last modified

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.

{
"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 rows
  • channelName: Telegram handle or public URL (telegram, @telegram, https://t.me/telegram)
  • startId: Only posts with ID strictly greater than this value are returned
  • limit: Max posts to scrape for that channel
  • channelList: Comma/newline-separated channel list for quick entry
  • defaultStartId: Default startId when a row omits it
  • defaultLimit: Default limit when a row omits it
  • includeChannelMetadata: Include channel title and subscriber count
  • maxConcurrency: Number of channels scraped in parallel
  • failOnError: Stop run on first channel failure

Output

Each dataset item is one Telegram post.

Dataset fields

  • Channel_Handle
  • Channel_Name
  • Subscribers
  • Id
  • Date
  • Url
  • Body
  • Body_Length
  • Mentions
  • Hashtags
  • Outlinks
  • Outlinks_Count
  • LinkPreview_Url
  • LinkPreview_SiteName
  • LinkPreview_Title
  • LinkPreview_Description
  • Hash

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 OUTPUT run summary in key-value store

Local run

Install

python3 -m venv .venv
source .venv/bin/activate
pip 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.