Telegram Info Scraper avatar

Telegram Info Scraper

Pricing

from $0.02 / actor start

Go to Apify Store
Telegram Info Scraper

Telegram Info Scraper

Telegram info scraper for resolving up to 1,000 usernames, @handles, t.me URLs, accessible invites, or phone numbers into 41-field sparse user, bot, channel, group, and supergroup profiles with identity, flags, counts, business details, and stored photo links.

Pricing

from $0.02 / actor start

Rating

4.5

(6)

Developer

AgentX

AgentX

Maintained by Community

Actor stats

8

Bookmarked

897

Total users

26

Monthly active users

8 days ago

Last modified

Share

Telegram Info Scraper is a bulk telegram lookup that resolves public Telegram users, bots, channels, groups, and supergroups into a reviewed 41-field sparse Dataset contract. Submit up to 1,000 usernames, @handles, canonical t.me links, accessible invite references, or authorized phone numbers in one run.

Apify Users Apify Runs price capability API + MCP ready

  • Mixed entity resolution. Classify a target as a user, bot, channel, group, or supergroup and keep one stable row shape.
  • Source-backed outcomes. Save resolved profiles and normal not-found results without inventing data for transient failures.
  • Privacy-aware correlation. Mask submitted phone numbers and invite tokens while preserving a useful query position and status.
  • Current public detail. Capture available names, usernames, flags, counts, bot features, business facts, reactions, and photo links.

At FREE-tier prices, the smallest useful run costs $0.01520: one $0.01 Actor Start plus one $0.00520 Result.

Why Choose Telegram Info Scraper

One list can resolve several Telegram entity classes. A workflow does not need separate lookup branches before it knows whether an identifier belongs to a person, bot, broadcast channel, discussion group, or supergroup. Each successful result includes a normalized type, stable Telegram ID, active username data, a canonical public source URL when available, and the applicable entity-specific fields.

The contract is sparse by design. The Dataset documents 41 possible top-level fields, but no row is expected to fill all of them. User and bot profiles expose a different subset from channels and groups. This prevents empty placeholder columns from masquerading as collected facts and makes null or absent values easier to interpret correctly.

Sensitive correlation values are minimized. A submitted phone number is returned in masked form, and an invite token is represented as invite:<redacted>. Telegram transport credentials, access hashes, file references, requesting-account permissions, private read state, and relationship flags are excluded from the public output.

Rows are persisted in small batches. Long lists keep completed batches if a later account rotation, source limit, or run stop interrupts the remaining work. Equivalent identifier forms are normalized and deduplicated so a bare username and its @handle or canonical URL do not create duplicate billed rows.

Quick Start Guide

Open the Actor input and keep the one-item example:

{
"telegram_url": [
"BotFather"
]
}

Run it, open the default Dataset, and confirm that status is success, type is bot, and username is BotFather. This is also the canonical example used by the API and MCP snippets below.

After a one-target run succeeds, add a small mixed list such as a public user, a channel, and a group you are authorized to inspect. Compare the number of unique normalized targets with the returned rows and inspect every status; a terminal Actor status alone does not prove that every source lookup produced a usable profile.

Free-plan runs keep the first 10 unique targets. Paying runs accept up to 1,000 entries, but the source, account pool, per-target work, and run timeout still determine how much can finish. Begin with a bounded sample before submitting a large paid list.

Input Parameters

One required array controls the run. Keep it small enough to verify statuses and row counts before scaling.

InputTypeRequiredRulesExample
telegram_urlarray of stringsYes1–1,000 entries; free runs keep 10 unique targets["BotFather"]

Each item may be a bare public username, an @handle, a canonical https://t.me/<username> URL, a t.me/s/<username> preview URL, an accessible invite reference, or an authorized international phone number beginning with +.

Canonical Telegram hosts only are accepted. Foreign hosts, ports, unrelated paths, and extraneous query strings are rejected instead of being silently reinterpreted. An invite reference does not grant access; it can resolve only when Telegram makes the entity accessible to the managed service account. Phone-number resolution depends on Telegram visibility and must be used only with a lawful purpose.

Equivalent public identifiers are deduplicated by normalized identity. Input order remains available through query_index. Invalid list members are rejected explicitly, and transient source failures are not converted into definitive not-found statements.

Output Data Schema

The Dataset has a 41-field sparse union contract:

GroupFields
Correlationquery_index, query, status, type
Identityid, username, usernames, source_url, title, first_name, last_name, description
Photo and public statephoto_url, has_photo, flags, restrictions, last_seen, colors, emoji_status
User and business contextpersonal_channel, birthday, business, profile_music, monetization, bot_info
Community contextcreated_at, member_count, online_count, chat_level, chat_flags, location, slowmode_seconds
Relationships and settingslinked_chat_id, linked_monoforum_id, pinned_message_id, default_restrictions, available_reactions, chat_bots, sticker_set
Provenanceprocessor, processed_at

A compact bot result can look like this:

{
"query_index": 1,
"query": "@BotFather",
"status": "success",
"type": "bot",
"id": 93372553,
"username": "BotFather",
"usernames": ["BotFather"],
"source_url": "https://t.me/BotFather",
"first_name": "BotFather",
"has_photo": true,
"flags": ["verified"],
"bot_info": {
"features": ["main_app", "no_private_chats"]
},
"processor": "https://apify.com/username/actor_name",
"processed_at": "2026-08-12T13:00:00+00:00"
}

The example shows shape, not a promise that live values stay unchanged. photo_url appears only when download and storage both succeed. A missing value can mean the field is not applicable, not visible, not supplied by Telegram, or unavailable in that specific response.

Integration Examples

The HTTP, Python, JavaScript, Make.com, n8n, and MCP examples all call agentx/telegram-info-scraper with the same one-target BotFather scenario. Keep tokens in a secret manager and avoid logging them. For a larger list, start asynchronously, poll the run, then fetch the default Dataset so a client timeout does not cancel its own observation window.

Actor ID

lAybf7rRybdzabbBk

Also addressable by name as agentx/telegram-info-scraper — both forms work in the API, the SDKs, Make.com, and n8n.

HTTP

curl -X POST "https://api.apify.com/v2/acts/agentx~telegram-info-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"telegram_url":["BotFather"]}'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("agentx/telegram-info-scraper").call(
run_input={"telegram_url": ["BotFather"]},
max_total_charge_usd=0.0152,
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["query"], item["status"], item.get("type"))

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("agentx/telegram-info-scraper").call({
telegram_url: ["BotFather"],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => console.log(item.query, item.status, item.type));

Make.com

  1. Add the module Run an Actor.
  2. Turn Map on, to the right of the Actor field.
  3. Paste the Actor ID lAybf7rRybdzabbBk into the Actor field.
  4. Click ⟳ Refresh to the left of Map.
  5. Edit Input JSON with telegram_url.
  6. Set Run synchronously to Yes.
  7. Add Get Dataset Items and select defaultDatasetId.

n8n

  1. Add Run an Actor and get dataset from the Apify node.
  2. Set ActorBy ID and paste lAybf7rRybdzabbBk.
  3. Edit Input JSON with telegram_url.

MCP

{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"-y",
"@apify/actors-mcp-server",
"--actors",
"agentx/telegram-info-scraper"
],
"env": { "APIFY_TOKEN": "YOUR_TOKEN" }
}
}
}

Pricing

Pricing is event-based. Actor Start is charged once. Result is charged once for each source-backed Dataset row, including a normal not_found row. A transient unavailable target that produces no row does not create a Result event.

EventFREEBRONZESILVERGOLDPLATINUMDIAMOND
Actor Start$0.01000$0.01000$0.01000$0.01000$0.01000$0.01000
Result$0.00520$0.00468$0.00416$0.00390$0.00390$0.00390

One FREE-tier result is $0.01520 including the start. Ten results are $0.06200: $0.01 + 10 × $0.00520. Actual charges depend on emitted events and the current published pricing page. Use maxTotalChargeUsd when an automated workflow must enforce a spending ceiling.

Use Cases

Entity routing: classify an authorized identifier list before sending users, bots, channels, and groups to different downstream workflows.

Community research: collect current public titles, usernames, descriptions, member counts, reactions, forum flags, linked chats, and visible location details for a bounded set of known communities.

Bot cataloging: review declared bot commands, features, menu links, active-user estimates, app colors, and descriptions without treating those declarations as independent security proof.

Trust and safety review: add Telegram-provided verified, scam, fake, deleted, premium, or restricted labels to a human-led assessment. A source flag is a useful signal, not an identity guarantee.

Authorized enrichment: attach current Telegram entity facts to records for which you have a valid processing purpose while retaining the query position, source URL, timestamp, and status.

Alternatives

Use Telegram Chat Scraper when the required object is message history rather than entity metadata. Use Telegram Member Scraper when the task is a permitted participant export from a known community. Use Telegram Private Group Scraper only for an authenticated private-group workflow whose access and authorization requirements you understand.

Telegram's own apps are a better choice for occasional manual lookups. The Actor is useful when the job needs repeatable JSON, bulk inputs, stable correlation fields, Apify storage, schedules, API access, or automation hooks.

No scraper can make private data public, guarantee phone-number resolution, bypass an inaccessible invite, or prove a person's identity. Choose a source and workflow that matches the actual authorization and data need.

Limits and Troubleshooting

  • Fewer rows than targets: free-plan truncation, normalization/deduplication, transient availability, account rotation, or a stopped run can reduce the count. Compare unique targets, Dataset rows, and statuses.
  • not_found: retry a known canonical username without unrelated URL parameters. Treat the result as a lookup outcome, not proof that an entity never existed.
  • No photo_url: the entity may have no visible photo, the download may be unavailable, or storage may fail. The Actor never invents a stored URL.
  • Large list runs slowly: every target can require resolution, a full-record request, photo work, and deliberate pacing. Test 1, then 10, before scaling.
  • Invite does not resolve: confirm that the managed source account can access the referenced entity. An invite string alone is not authorization.
  • Phone does not resolve: use an authorized international value and expect masked output correlation. Telegram privacy settings control availability.

Completed Dataset batches remain after a later failure or explicit stop. Preserve the run ID when asking for support and never send private inputs, invite tokens, phone numbers, session data, or API tokens in a public channel.

Trust and Reliability

The badges above report live user and run counts from the Store. Those platform counts describe run outcomes, not per-target resolution accuracy, and change continuously.

The Dataset contract spans the user, bot, channel, group, supergroup, and not-found branches, and it keeps public value while excluding transport state, access hashes, file references, and requesting-account permissions.

Telegram remains the authority for profile facts and visibility. Counts, flags, names, usernames, photos, business data, bot declarations, and reactions can change between runs. Verify consequential claims at the source and retain processed_at with downstream data.

Use this Actor only for targets you are authorized to process. Follow Telegram's terms, applicable privacy and data-protection law, copyright, contractual restrictions, and your organization's retention policy.

Minimize personal data. Do not use phone-number lookup, profile flags, presence data, business facts, or community membership context for harassment, doxxing, surveillance, sensitive profiling, spam, unauthorized contact discovery, or discriminatory decisions. A visible value does not establish ownership, consent, identity, safety, or legal permission.

Telegram documents public profile capabilities in its user profile API guide, entity data in the user constructor, and supported link forms in its deep-link documentation. Apply those official semantics alongside the current returned row rather than guessing from a field name.

Frequently Asked Questions

How does a telegram username checker api handle mixed inputs?

It normalizes each supported string, deduplicates equivalent public identifiers, resolves the entity, and returns a sparse row for the matching user, bot, channel, group, or supergroup branch. Correlation position and status remain common across branches.

How do I resolve telegram usernames in bulk?

Yes. Submit up to 1,000 entries. Free-plan runs keep the first 10 unique targets. Start with a small measured batch because source work and run timeout still bound completion.

Are all 41 fields present on every profile?

No. Forty-one is the union contract. A bot, user, channel, group, not-found target, and supergroup populate different subsets.

Are not-found rows charged?

Yes. A normal source-backed not_found row is persisted with the Result event. A transient unavailable target that produces no row is not represented as a successful or not-found result.

Does the Actor expose private account state?

No. Transport credentials, access hashes, private phone values, requesting-account permissions, contact relationships, and read state are excluded. Submitted phone and invite correlations are masked.

No. The source account must already be able to resolve the referenced entity. The Actor does not join arbitrary private communities or bypass access controls.

AgentX publishes 77 Actors — the three closest Telegram tools first, then the full catalog by category.

Closest to this Actor:

Business and Market Intelligence

Jobs and Hiring

Social Media

Video, Transcripts and Downloads

E-Commerce and Retail

Classifieds and Automotive

Real Estate

Support and Community

Ask the AgentX team in the Telegram community with the Actor name, run ID, sanitized input form, expected unique-target count, returned row count, and relevant statuses. Never post API tokens, phone numbers, invite tokens, sessions, or downloaded personal files.

AgentX is an Arcyton brand — arcyton.com.

Last Updated: August 15, 2026