Telegram Info Scraper avatar

Telegram Info Scraper

Pricing

Pay per event

Go to Apify Store
Telegram Info Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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.me URLs 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?

FieldDescription
inputOriginal value you submitted.
usernameNormalized Telegram username when available.
entityTypeInferred type: channel, group, bot, profile, unknown, or inaccessible.
titlePublic display title or name.
bioPublic description/bio shown on Telegram preview pages.
avatarUrlPublic avatar/photo URL when Telegram exposes it.
subscriberCountVisible subscriber count for channels.
memberCountVisible member count for groups.
monthlyUsersVisible monthly user count for bots.
isVerifiedWhether Telegram shows a verified badge.
isScamWhether a public scam indicator is visible.
isFakeWhether a public fake indicator is visible.
isBotWhether the target appears to be a bot.
previewPostCountNumber of posts visible on the fetched public preview page.
latestPostDateLatest visible public preview post timestamp.
statusok, 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

  1. Open the actor on Apify.
  2. Add Telegram handles or URLs to Telegram handles or URLs.
  3. Keep maxResults small for your first test.
  4. Run the actor.
  5. Download the dataset as JSON, CSV, Excel, or via API.
  6. 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 includePreviewStats on when you care about public channel activity hints.
  • Turn includePreviewStats off for the fastest possible enrichment run.
  • Use the status and errorMessage fields to filter inaccessible targets.

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, and canonicalUrl to your CRM.
  • 🧪 Fraud review: Flag rows where isScam, isFake, or status != ok for 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 ApifyClient
client = 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().items
print(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 mcpServers JSON.

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.

Changelog

  • Initial build: public Telegram entity metadata resolver with status handling and optional preview stats.