Telegram Info Scraper
Pricing
Pay per event
Telegram Info Scraper
Resolve public Telegram handles, channels, groups, bots, and profiles into clean metadata rows without Telegram login.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Resolve public Telegram channels, groups, bots, and profiles into clean metadata rows without logging in to Telegram.
What does Telegram Info Scraper do?
Telegram Info Scraper turns Telegram usernames, @handles, t.me links, and tg://resolve links into structured public profile data. It reads the same public Telegram preview pages that are visible in a normal browser and exports one dataset row per target.
Use it when you need to enrich a list of Telegram entities before outreach, research a community, check whether a bot or channel is verified, or build a repeatable monitoring workflow around public Telegram metadata.
Who is it for?
- 🧑💼 SDR and partnerships teams resolving Telegram handles from lead lists.
- 🕵️ Trust and safety analysts checking visible scam, fake, and verification indicators.
- 📣 Community managers comparing channel or group subscriber/member signals.
- 🤖 Automation builders enriching Telegram URLs in Clay, Make, Zapier, or custom scripts.
- 📊 Market researchers collecting public profile descriptions, avatars, and visible counts.
Why use this actor?
- No Telegram account or API key is required.
- Handles, usernames, and
t.meURLs can be mixed in one input. - Invalid, private, or inaccessible targets are reported with a clear status instead of crashing the run.
- Public channel preview pages can add recent public activity hints such as visible preview post count and latest post date.
- Output is flat and integration-friendly for spreadsheets, CRMs, and databases.
What public Telegram data can it extract?
| Field | Description |
|---|---|
input | Original value you submitted. |
username | Normalized Telegram username when available. |
entityType | Inferred type: channel, group, bot, profile, unknown, or inaccessible. |
title | Public display title or name. |
bio | Public description/bio shown on Telegram preview pages. |
avatarUrl | Public avatar/photo URL when Telegram exposes it. |
subscriberCount | Visible subscriber count for channels. |
memberCount | Visible member count for groups. |
monthlyUsers | Visible monthly user count for bots. |
isVerified | Whether Telegram shows a verified badge. |
isScam | Whether a public scam indicator is visible. |
isFake | Whether a public fake indicator is visible. |
isBot | Whether the target appears to be a bot. |
previewPostCount | Number of posts visible on the fetched public preview page. |
latestPostDate | Latest visible public preview post timestamp. |
status | ok, invalid, private, not_found, or error. |
How much does it cost to resolve Telegram profiles?
This actor uses pay-per-event pricing with a small run-start fee and a per-result event. Formula-derived launch pricing starts around $0.05 per 1,000 resolved Telegram entities on the BRONZE tier, plus the small start fee. Higher-volume tiers receive lower per-result prices.
Input options
targets
Paste public Telegram usernames, handles, and links:
["@telegram","BotFather","https://t.me/durov","tg://resolve?domain=telegram"]
startUrls
Use this optional field when another Apify integration passes request-list style URL objects:
[{ "url": "https://t.me/telegram" },{ "url": "https://t.me/s/durov" }]
maxResults
Caps the number of unique targets processed after de-duplication. Keep the default low for a cheap first run, then increase for bulk enrichment.
includePreviewStats
When enabled, the actor follows Telegram's public /s/<username> preview link where available. This adds public preview activity fields, but uses one extra HTTP request for those targets.
requestDelayMs
Adds a polite delay between Telegram requests. Increase it for very large lists.
Example input
{"targets": ["@telegram", "BotFather", "https://t.me/durov"],"maxResults": 3,"includePreviewStats": true,"requestDelayMs": 350}
Example output
{"input": "@telegram","sourceUrl": "https://t.me/telegram","canonicalUrl": "https://t.me/telegram","username": "telegram","entityType": "channel","title": "Telegram News","bio": "The official Telegram on Telegram. Much recursion. Very Telegram. Wow.","avatarUrl": "https://cdn...jpg","isVerified": true,"isScam": false,"isFake": false,"isBot": false,"memberCount": null,"subscriberCount": 10387917,"monthlyUsers": null,"visibleMetricText": "10 387 917 subscribers","previewUrl": "https://t.me/s/telegram","previewPostCount": 20,"latestPostDate": "2026-02-10T17:43:45+00:00","status": "ok","errorMessage": null,"scrapedAt": "2026-06-16T08:18:04.119Z"}
How to scrape Telegram profile metadata
- Open the actor on Apify.
- Add Telegram handles or URLs to Telegram handles or URLs.
- Keep
maxResultssmall for your first test. - Run the actor.
- Download the dataset as JSON, CSV, Excel, or via API.
- Increase limits for your production enrichment job.
Tips for best results
- Use public usernames and
https://t.me/<username>links. - Do not use private invite links if you need metadata; Telegram does not expose private group data publicly.
- Keep
includePreviewStatson when you care about public channel activity hints. - Turn
includePreviewStatsoff for the fastest possible enrichment run. - Use the
statusanderrorMessagefields to filter inaccessible targets.
Handling private or inaccessible Telegram links
This actor does not join channels, groups, or chats. Private invite links such as https://t.me/+... are marked as invalid/inaccessible because resolving them would require a Telegram account and membership. That behavior is intentional and keeps the actor focused on public data only.
Integrations
- 🔁 CRM enrichment: Upload Telegram handles from a lead list, export
title,bio,entityType, andcanonicalUrlto your CRM. - 🧪 Fraud review: Flag rows where
isScam,isFake, orstatus != okfor manual review. - 📈 Community tracking: Run the same list on a schedule and compare visible subscriber/member counts over time.
- 🧰 Clay or Make workflows: Call the actor via API for every new Telegram URL found in a company or creator database.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/telegram-info-scraper').call({targets: ['@telegram', 'BotFather'],maxResults: 2,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/telegram-info-scraper').call(run_input={'targets': ['@telegram', 'BotFather'],'maxResults': 2,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~telegram-info-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"targets":["@telegram","BotFather"],"maxResults":2}'
MCP usage
Use the Apify MCP server with this actor when you want an AI assistant to enrich Telegram handles during research.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/telegram-info-scraper
Add it to Claude Code with the HTTP transport:
$claude mcp add apify-telegram-info --transport http "https://mcp.apify.com/?tools=automation-lab/telegram-info-scraper"
Claude Desktop, Cursor, and VS Code can use the same remote MCP server entry. Add this JSON configuration to your MCP settings in the relevant app:
{"mcpServers": {"apify-telegram-info": {"url": "https://mcp.apify.com/?tools=automation-lab/telegram-info-scraper"}}}
Where to paste it:
- Claude Desktop: Settings → Developer → Edit Config, then restart Claude Desktop.
- Cursor: Settings → Cursor Settings → MCP → Add new global MCP server.
- VS Code: Add the server in your MCP extension or agent settings that accept
mcpServersJSON.
Example prompts:
- "Use the Telegram Info Scraper tool to resolve these Telegram channels and return a table of titles, bios, and subscriber counts."
- "Use MCP to check whether these Telegram bots are verified and export their public descriptions."
- "Resolve handles from this CSV with the Apify Telegram tool and group them by ok, private, invalid, and error status."
Scheduling
Schedule the actor daily, weekly, or monthly to monitor a fixed list of public channels, groups, or bots. Store each run's dataset and compare counts externally to detect growth, inactivity, or profile changes.
Data quality notes
Telegram controls what is visible on public preview pages. Some profiles expose a bio and avatar but no counts. Some bots expose monthly users. Some public channels expose subscriber counts and preview posts. The actor preserves missing values as null instead of guessing.
Legality and ethical use
This actor extracts publicly available Telegram preview metadata. It does not bypass login, scrape private content, join groups, or access messages that Telegram does not expose publicly. Always follow Telegram's terms, Apify's terms, and applicable privacy laws. Do not use the data for spam, harassment, or unlawful profiling.
FAQ and troubleshooting
Why did a target return invalid?
The input may be empty, malformed, contain spaces, or be a private invite link. Use public usernames such as @telegram or URLs such as https://t.me/telegram.
Why is subscriberCount empty?
Telegram does not show every metric for every entity type. Bots often show monthly users, profiles may show no counts, and some groups/channels hide or omit metrics on public previews.
Why is previewPostCount empty?
The target may not expose a public /s/<username> preview page, or includePreviewStats may be disabled.
Related scrapers
- https://apify.com/automation-lab/telegram-scraper
- https://apify.com/automation-lab/contact-info-scraper
- https://apify.com/automation-lab/social-media-stats-checker
Changelog
- Initial build: public Telegram entity metadata resolver with status handling and optional preview stats.