Telegram Public Profiles Scraper avatar

Telegram Public Profiles Scraper

Pricing

from $0.31 / 1,000 item processeds

Go to Apify Store
Telegram Public Profiles Scraper

Telegram Public Profiles Scraper

Scrape public Telegram usernames, channels, bots, and groups from t.me pages. Export profile metadata to CSV, JSON, Excel, or API.

Pricing

from $0.31 / 1,000 item processeds

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

3

Monthly active users

5 days ago

Last modified

Share

Look up public Telegram profiles from usernames, @handles and t.me URLs. Telegram Public Profiles Scraper exports titles, descriptions, avatar URLs, available subscriber or member counts and a status for each unique target. It supports public user, bot, channel and group previews without a Telegram login.

Use the results for public-directory enrichment, research and repeatable profile comparisons. It does not collect phone numbers, hidden members or private messages.

Quick start

  1. Enter a few public Telegram usernames or URLs.
  2. Leave the latest channel preview off unless you need a small post preview.
  3. Run the Actor and open its dataset to review profile fields and statuses.
{
"targets": ["telegram", "durov"],
"includeChannelPreview": false,
"runTimeSecs": 300
}

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

Ready-to-run examples

Choose an example to start with a small, preconfigured input.

What you get

  • Profile metadata: public titles, descriptions, avatar URLs and canonical profile links.
  • Public counters: subscriber and member counts when exposed.
  • Entity context: inferred user, bot, channel or group type and text-derived label indicators.
  • Optional channel preview: a small object with post text, URL, date and views when available.
  • Per-target outcomes: success, not found, not public or failed, with diagnostics for unavailable results.

Who is it for?

  • Researchers comparing public Telegram profiles and channels.
  • Teams enriching public community directories or existing handle lists.
  • Automation builders sending structured profile records to spreadsheets, CRMs or their own comparison workflows.

Input settings

SettingPurpose
targetsRequired list of 1–1,000 public usernames, @handles or Telegram URLs. Normalized duplicates are skipped.
includeChannelPreviewRequest a small public channel/group preview, off by default. See field help for preview availability.
proxyConfigurationOptional configured proxy access. Direct access is the default. See the field help for supported settings.
runTimeSecsSoft runtime limit from 60 to 300 seconds, default 300, with a reserve for saving results.

For a mixed-format lookup, use {"targets":["@telegram","https://t.me/durov"]}. For a channel preview, use {"targets":["telegram"],"includeChannelPreview":true}.

Output data

Each dataset row represents one unique target, including unavailable or invalid targets. Missing profile fields are null rather than invented values.

FieldsMeaning
input, normalizedUsername, usernameOriginal target and normalized username.
entityUrl, sourceUrl, sourceStatusCanonical entity link, final source URL and response status.
statussuccess, not_found, not_public or failed.
entityTypeInferred user, bot, channel, group or unknown.
title, description, avatarUrlAvailable public profile metadata.
subscriberCount, memberCountAvailable public audience counts.
verified, scam, fake, botHeuristic indicators inferred from page text, not authoritative Telegram badge verification.
latestPreviewNullable object containing text, url, date and views for an available preview post.
errorCode, errorMessage, scrapedAtFailure details and collection timestamp.

This synthetic shape-only example illustrates selected fields. It is not a captured profile:

{
"input": "example_channel",
"normalizedUsername": "example_channel",
"entityUrl": "https://t.me/example_channel",
"status": "success",
"entityType": "channel",
"title": "Illustrative public channel",
"description": null,
"subscriberCount": null,
"memberCount": null,
"latestPreview": null
}

The run writes RUN_SUMMARY to its key-value store with input, unique-target and outcome counts.

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

This Actor uses pay-per-event pricing. The start event is charged once after the target list passes initial validation. A run with no successful profiles can still incur this start charge.

The item event is charged after each successful public profile row is saved. Rows marked not_found, not_public or failed are saved for diagnostics but are not charged as successful profile items. Normalized duplicates do not produce additional profile rows.

See the live Pricing tab for current rates and discounts.

Tips for best results

  • Start with a few public handles. Check the returned fields before submitting a large list.
  • Inspect the status column. A saved row does not always mean a profile was available.
  • Request previews only when useful. Leave includeChannelPreview off for basic metadata lookups.
  • Compare separate runs in your workflow. The Actor returns current observations, not stored change history.

Limits and caveats

  • Only anonymous public Telegram web previews are supported. No account login, private groups, hidden members, phone numbers or private messages are accessed.
  • Entity type and label indicators are inferred from page text. They can be inaccurate and should not be treated as verified identity or fraud assessments.
  • Some targets expose only sparse metadata. Counts and post previews are not guaranteed.
  • The small preview is not a complete history or a guarantee of the newest post. For post collection, use Telegram Channel Posts Scraper below.
  • Unavailable targets are represented by status rows. Inaccessibility alone does not establish that a target is private or deleted.
  • Runtime or access limits can leave partial results. Compare saved records with your requested targets and inspect the run summary.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

API usage

Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~telegram-public-profiles-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"targets":["telegram","durov"],"includeChannelPreview":false}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/telegram-public-profiles-scraper').call({
targets: ['telegram', 'durov'], includeChannelPreview: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/telegram-public-profiles-scraper').call(run_input={
'targets': ['telegram', 'durov'], 'includeChannelPreview': False,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

MCP and AI agents

You can ask your AI assistant to collect data with Telegram Public Profiles Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Telegram Public Profiles Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/telegram-public-profiles-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Telegram Public Profiles Scraper by Fetch Cat, or give it the identifier fetch_cat/telegram-public-profiles-scraper.

Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

  • “Look up Telegram and Durov’s public profiles and summarize the descriptions that are available.”
  • “Get public profile metadata for these Telegram usernames and prepare a table of titles, profile links and subscriber counts.”
  • “Look up Telegram’s public channel profile with a small post preview and summarize any preview text returned.”

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.

Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.

Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

FAQ

Does it need a Telegram login or API session?

No. It reads anonymous public web previews. It cannot retrieve account-only or private data.

Can I export Telegram profile data to CSV or use an API?

Yes. Export the dataset in Console or use the API examples above. JSON preserves the nested preview object.

Why are some fields empty or marked unavailable?

Telegram may expose only sparse metadata, or a target may be unavailable. Check the status and diagnostics. A status classification is not proof that an account is private or deleted.

Can it collect channel history or members?

No. The optional preview is a small post object, not full history. Member lists and phone numbers are unsupported. Use Telegram Channel Posts Scraper for public post collection.

Can an AI assistant compare profiles?

Yes. Connect through Apify’s hosted MCP server and ask the assistant to analyze the returned records. Analysis happens in your assistant, not inside this scraper.

Are unsuccessful rows charged as profiles?

No. The per-item event applies to successful profile rows. The start event still applies to a valid run with no successful profiles.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? We'd love to hear how it worked for you. Leave an honest review from the Actor page to help others choose the right tool and help us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥