# Telegram Username Checker (`scrapeai/telegram-get-username-info`) Actor

Verify Telegram usernames in bulk. Check existence, user vs channel type, subscriber count, title, bio, and profile photo.

- **URL**: https://apify.com/scrapeai/telegram-get-username-info.md
- **Developed by:** [ScrapeAI](https://apify.com/scrapeai) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Telegram Username Checker

Verify Telegram usernames in bulk. Extract channel/user/bot type, subscriber & member count, title, bio, verification status, and profile photo URL.

### Features

- **Bulk Username Verification:** Validate hundreds or thousands of Telegram usernames in seconds.
- **Flexible Input Formats:** Accepts raw usernames (`durov`), `@handles` (`@telegram`), full URLs (`https://t.me/durov`), channel previews (`https://t.me/s/techcrunch`), or deep links (`tg://resolve?domain=botfather`).
- **Entity Classification:** Automatically detects if a username belongs to a **Channel**, **Group**, **User Profile**, **Bot**, or **Non-existent / Available** handle.
- **Metrics Extraction:** Extracts live subscriber counts for channels, member and online counts for groups.
- **Rich Profile Metadata:** Scrapes title, bio/description, verified badge status, and high-resolution profile photo URLs.
- **Fast & Light:** Uses fast HTML parsing with built-in retry mechanisms and proxy support.

***

### Input Parameters

The Actor accepts input via JSON array or multiline text block:

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `usernames` | Array | `[]` | Array of Telegram usernames or URLs to verify. |
| `usernameList` | String | `""` | Multiline string with one username or URL per line. |
| `proxyConfiguration` | Object | `null` | Apify Proxy settings for rate-limiting protection. |
| `maxConcurrency` | Integer | `10` | Maximum parallel requests allowed. |
| `debugLog` | Boolean | `false` | Enable detailed debug logging. |

#### Example Input (JSON)

```json
{
  "usernames": [
    "durov",
    "@telegram",
    "https://t.me/techcrunch",
    "botfather",
    "non_existent_username_12345"
  ],
  "maxConcurrency": 10
}
```

***

### Output Dataset

The Actor produces a dynamic JSON dataset where each item represents a verified username.

#### Output Fields

- `username` *(String)*: Cleaned Telegram username handle.
- `inputUsername` *(String)*: Raw input provided by the user.
- `exists` *(Boolean)*: `true` if the Telegram account/channel exists, `false` otherwise.
- `type` *(String)*: Account classification: `"channel"`, `"group"`, `"user"`, `"bot"`, or `"not_found"`.
- `title` *(String)*: Display name or channel title.
- `bio` *(String)*: Bio or channel description.
- `subscriberCount` *(Integer)*: Number of channel subscribers (numeric).
- `subscriberCountText` *(Integer/String)*: Human-readable subscriber count (e.g., `"11 340 520 subscribers"`).
- `memberCount` *(Integer)*: Number of group members.
- `memberCountText` *(String)*: Human-readable member count.
- `onlineCount` *(Integer)*: Number of online group members (if available).
- `isVerified` *(Boolean)*: `true` if the channel/account carries an official Telegram verified badge.
- `photoUrl` *(String)*: Profile avatar URL.
- `telegramUrl` *(String)*: Web link (`https://t.me/username`).
- `deepLink` *(String)*: Telegram app deep link (`tg://resolve?domain=username`).
- `status` *(String)*: `"active"` or `"not_found"`.
- `checkedAt` *(String)*: ISO 8601 UTC timestamp of verification.

#### Example Output Item (Channel)

```json
{
  "username": "durov",
  "inputUsername": "durov",
  "exists": true,
  "type": "channel",
  "title": "Pavel Durov",
  "bio": "Founder of Telegram.",
  "subscriberCount": 11340520,
  "subscriberCountText": "11 340 520 subscribers",
  "memberCount": null,
  "memberCountText": null,
  "onlineCount": null,
  "isVerified": true,
  "photoUrl": "https://cdn4.telesco.pe/file/g9tVQp_Zfeo1jILoQ2WGgojZWP65TGhGwD...",
  "telegramUrl": "https://t.me/durov",
  "deepLink": "tg://resolve?domain=durov",
  "status": "active",
  "checkedAt": "2026-08-06T09:10:00.000Z"
}
```

#### Example Output Item (Non-Existent Username)

```json
{
  "username": "non_existent_username_12345",
  "inputUsername": "non_existent_username_12345",
  "exists": false,
  "type": "not_found",
  "title": null,
  "bio": null,
  "subscriberCount": null,
  "subscriberCountText": null,
  "memberCount": null,
  "memberCountText": null,
  "onlineCount": null,
  "isVerified": false,
  "photoUrl": null,
  "telegramUrl": "https://t.me/non_existent_username_12345",
  "deepLink": "tg://resolve?domain=non_existent_username_12345",
  "status": "not_found",
  "checkedAt": "2026-08-06T09:10:00.000Z"
}
```

***

### Use Cases

- **Username Availability & Claiming:** Check if desirable Telegram handles are taken or available.
- **Influencer & Channel Verification:** Audit subscriber counts and verified status for marketing campaigns.
- **Lead Generation & Enrichment:** Validate Telegram contacts in sales outreach lists.
- **Brand Protection & OSINT:** Track impersonation attempts or official brand channels.

***

### License

Apache-2.0

# Actor input Schema

## `usernames` (type: `array`):

List of Telegram usernames to check (e.g. \['durov', 'telegram', 'techcrunch']). Can include '@' prefix or t.me links.

## `usernameList` (type: `string`):

Enter Telegram usernames or t.me links separated by newlines for bulk verification.

## `proxyConfiguration` (type: `object`):

Select Apify Proxy to bypass rate limits or access profiles smoothly.

## `maxConcurrency` (type: `integer`):

Maximum number of concurrent requests allowed during scraping.

## `debugLog` (type: `boolean`):

Enable verbose debug logs for detailed request tracing.

## Actor input object example

```json
{
  "usernames": [
    "durov",
    "telegram",
    "techcrunch",
    "botfather"
  ],
  "usernameList": "durov\ntelegram\ntechcrunch\nbotfather",
  "maxConcurrency": 10,
  "debugLog": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "usernames": [
        "durov",
        "telegram",
        "techcrunch",
        "botfather"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeai/telegram-get-username-info").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "usernames": [
        "durov",
        "telegram",
        "techcrunch",
        "botfather",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapeai/telegram-get-username-info").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "usernames": [
    "durov",
    "telegram",
    "techcrunch",
    "botfather"
  ]
}' |
apify call scrapeai/telegram-get-username-info --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapeai/telegram-get-username-info"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/MePBZWz28OaluUzVS/builds/MSt0DHaQxWCBwqdgk/openapi.json
