Telegram Info Scraper avatar

Telegram Info Scraper

Pricing

$3.50 / 1,000 results

Go to Apify Store
Telegram Info Scraper

Telegram Info Scraper

Looks up public Telegram channels, groups, bots and users by username or t.me link: titles, bios, member counts, verification, preview counters, post stats, a liveliness score and an HTML report.

Pricing

$3.50 / 1,000 results

Rating

0.0

(0)

Developer

Sankov Vadim

Sankov Vadim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Extract Telegram profile data: channels, groups, bots, users. Get member counts, engagement metrics, subscriber trends. 26 fields per target. No token needed.

Why this Actor

FeatureWhat you get
Public dataChannels, groups, bots, users from t.me links or usernames
26 fieldsNames, member counts, verification status, post metrics, subscriber deltas
Batch processing1000 targets per run, 2 concurrent workers (adjustable)
Engagement dataPost counts, media breakdowns, frequency, engagement scores
MonitoringTrack member count changes across runs using named snapshots
No token neededWorks on public HTML only
Transparent limitsClear errors for private/nonexistent targets and rate limits

Get started

  1. Prepare targets: usernames, @handles, or t.me links (up to 1000)
  2. Run the Actor: choose your options (preview posts, include failures, enable monitoring)
  3. Download results: CSV or JSON; optional HTML report with filters and sorting

Example:

telegram
@BotFather
https://t.me/durov

Input options

FieldTypeRequiredNotes
targetsstring[]YesUsernames, @handles, t.me or telegram.me URLs. Min 1, max 1000.
fetchPreviewbooleanNo (default: true)Fetch web preview to extract message counts and latest post date. Channels only; false disables preview requests.
maxPostsintegerNo (default: 0)Collect up to N recent posts per target. 0 = no posts in output. Max 500.
includeFailedRowsbooleanNo (default: true)Include rows for nonexistent, private, or inaccessible targets with status field. false = skip them silently.
compareWithPreviousbooleanNo (default: false)Enable monitoring mode: compare current subscriber count against last snapshot.
monitorKeystringNo (default: "default")Named snapshot key for monitoring. Separate snapshots per key.
maxConcurrencyintegerNo (default: 2)Worker threads. Min 1, max 10. Higher = faster but riskier under load.
requestDelayMsintegerNo (default: 1000)Pause (ms) between requests per worker. Increase if hitting rate limits.
proxyConfigurationproxy objectNoOptional Apify Proxy for rotating IP or avoiding blocks.

Output example

{
"input": "@telegram",
"status": "ok",
"entityType": "channel",
"canonicalUrl": "https://t.me/telegram",
"sourceUrl": "https://t.me/telegram",
"telegramId": "1005640892",
"username": "telegram",
"usernames": ["telegram"],
"entityKind": "channel",
"title": "Telegram News",
"bio": "The official Telegram channel.",
"memberCount": 9510000,
"onlineCount": null,
"isVerified": true,
"isScam": null,
"isFake": null,
"isRestricted": null,
"isBot": false,
"botActiveUsers": null,
"profilePhotoUrl": "https://cdn1.telesco.pe/file/...",
"previewUrl": "https://t.me/s/telegram",
"previewPostCount": 20,
"latestPostDate": "2026-08-26T19:12:34+00:00",
"visibleMetricText": "9.51M subscribers",
"photoCount": 16,
"videoCount": 228,
"fileCount": null,
"linkCount": 378,
"latestMessageId": 460,
"scrapedAt": "2026-09-29T10:15:22+00:00",
"score": 78,
"postsPerWeek": 5.2,
"avgViews": 280000,
"viewsToSubscribers": 0.029,
"latestPostStale": false,
"bioLinks": ["https://example.com"],
"bioMentions": ["@another_channel"],
"inviteLinks": [],
"previousMemberCount": 9500000,
"subscribersDelta": 10000,
"subscribersDeltaPct": 0.11
}

Connect it

Route results via webhooks. Schedule runs daily, weekly, or custom intervals. Use the Apify API to fetch results. Connect to Zapier (10,000+ apps).

Output fields

Entity identification

  • input: Original target string
  • entityType: channel, group, bot, user, or null
  • entityKind: Raw classification
  • canonicalUrl: Normalized t.me link
  • sourceUrl: Direct public link

Profile

  • username: Handle without @
  • usernames: Array of known handles
  • title: Display name
  • bio: Description text (template text removed)
  • telegramId: ID number (channels only; null for groups, bots, users)
  • isVerified: Has checkmark

Metrics

  • memberCount: Subscribers or members (parsed from "9.5M" or "4,328")
  • onlineCount: Active users now (null if hidden or not a group)
  • botActiveUsers: Monthly active (bots only)
  • postsPerWeek: Calculated from recent posts (channels with preview)
  • avgViews: Average views per post (channels with preview)
  • viewsToSubscribers: Ratio of views to subscriber count
  • score: Activity score from 0 to 100 (channels only)
  • latestPostDate: ISO timestamp of newest post
  • latestPostStale: true if last post older than 90 days

Content

  • photoCount: Photo count in preview (channels only)
  • videoCount: Video count in preview (channels only)
  • fileCount: File count in preview (channels only)
  • linkCount: Link count in preview (channels only)
  • previewPostCount: Posts in preview (up to 20)

Bio extras

  • bioLinks: External URLs from bio
  • bioMentions: @usernames in bio
  • inviteLinks: Invite links (t.me/+hash, joinchat)

Monitoring

  • previousMemberCount: Last known count
  • subscribersDelta: Change since last run
  • subscribersDeltaPct: Change percentage
  • previousScrapedAt: Last snapshot timestamp

Metadata

  • scrapedAt: Collection time
  • status: ok, not_found, private, no_preview, error
  • errorMessage: Error details if status != ok
  • profilePhotoUrl: Profile picture URL (null if hidden)
  • previewUrl: Web preview link (null if disabled)
  • isBot: true if bot
  • visibleMetricText: Subscriber line ("9.51M subscribers", "4,328 members, 150 online")
  • isScam, isFake, isRestricted: Flags (null; vetting pending)

Known limits

  • Telegram ID: only available for channels, not groups, bots, or user profiles
  • Groups: no distinction between group and supergroup in public data
  • User vs. nonexistent: private profiles and nonexistent users look identical. Check errorMessage.
  • Flags: scam, fake, and restricted badges not confirmed (null)
  • Preview: groups, bots, and users have no public message previews
  • Outdated posts: inactive channels may show old posts in preview. latestPostStale flag marks this.
  • Rate limits: 1000 targets in one run may trigger 429. Use requestDelayMs, retries, or Apify Proxy.

Pricing

Pay per result. See the Actor page for current pricing.

Questions

Do I need a Telegram account or API key? No. This scrapes public web pages only.

What if a target is private or doesn't exist? If includeFailedRows is true, you get a row with status "not_found" or "private" and null data. If false, the target is skipped.

Why do member counts differ? Caching and rounding. We fetch exact numbers from the page; web preview rounds to "9.5M".

Can I get a member list or all messages? No. Public HTML doesn't expose membership or full message history. Preview posts only, up to 20.

What is the score? Activity metric combining frequency, recency, and engagement (views vs. member count). Null if fewer than 3 posts or unknown member count.

How does monitoring work? Enable compareWithPrevious. First run: snapshot member count. Next run: compare and calculate delta. Use monitorKey to separate independent snapshots.

What is in the HTML report? Sortable table. Filters by entity type and status. Top-N by score. Export to CSV.

Changelog

v1.0 (2026-09-29) Initial release: 26 standard fields, monitoring, score, bio parsing, post stats. Batch 1000 targets. HTML report with sorting and filters. Errors reported, not dropped.

Support

Issues or ideas? Open an issue on the Actor page.

Need help? DM @sulalab on Telegram.

  • Telegram Channel Search: keyword search for channels
  • LinkedIn Scraper: profile extraction for LinkedIn
  • Instagram Scraper: profile and post metrics for Instagram
  • Social Media Aggregator: multi-platform entity lookup