Telegram Info Scraper
Pricing
$3.50 / 1,000 results
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
Maintained by CommunityActor 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
| Feature | What you get |
|---|---|
| Public data | Channels, groups, bots, users from t.me links or usernames |
| 26 fields | Names, member counts, verification status, post metrics, subscriber deltas |
| Batch processing | 1000 targets per run, 2 concurrent workers (adjustable) |
| Engagement data | Post counts, media breakdowns, frequency, engagement scores |
| Monitoring | Track member count changes across runs using named snapshots |
| No token needed | Works on public HTML only |
| Transparent limits | Clear errors for private/nonexistent targets and rate limits |
Get started
- Prepare targets: usernames, @handles, or t.me links (up to 1000)
- Run the Actor: choose your options (preview posts, include failures, enable monitoring)
- Download results: CSV or JSON; optional HTML report with filters and sorting
Example:
telegram@BotFatherhttps://t.me/durov
Input options
| Field | Type | Required | Notes |
|---|---|---|---|
targets | string[] | Yes | Usernames, @handles, t.me or telegram.me URLs. Min 1, max 1000. |
fetchPreview | boolean | No (default: true) | Fetch web preview to extract message counts and latest post date. Channels only; false disables preview requests. |
maxPosts | integer | No (default: 0) | Collect up to N recent posts per target. 0 = no posts in output. Max 500. |
includeFailedRows | boolean | No (default: true) | Include rows for nonexistent, private, or inaccessible targets with status field. false = skip them silently. |
compareWithPrevious | boolean | No (default: false) | Enable monitoring mode: compare current subscriber count against last snapshot. |
monitorKey | string | No (default: "default") | Named snapshot key for monitoring. Separate snapshots per key. |
maxConcurrency | integer | No (default: 2) | Worker threads. Min 1, max 10. Higher = faster but riskier under load. |
requestDelayMs | integer | No (default: 1000) | Pause (ms) between requests per worker. Increase if hitting rate limits. |
proxyConfiguration | proxy object | No | Optional 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.
Related Actors
- 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