# Telegram Username Checker (`akula.marketing/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/akula.marketing/telegram-get-username-info.md
- **Developed by:** [akula.marketing](https://apify.com/akula.marketing) (community)
- **Categories:** Lead generation, Social media, Other
- **Stats:** 1,765 total users, 46 monthly users, 99.8% runs succeeded, 14 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.75 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Telegram Username Info Actor

> 💬 Questions, bulk pricing, or a custom solution? Talk to us on Telegram — [@KoteamSupport](https://t.me/KoteamSupport).

✅ Check Telegram usernames and retrieve associated user or group/channel information. This Apify Actor processes a list of usernames and returns detailed data, including username, existence, user status, title, description, photo URL, and participant count (for groups/channels).

### 📥 Input

The Actor accepts:

- **usernames**: A list of Telegram usernames (e.g., `["CryptoRankNews", "t.me/CryptoRankNews"]`).
- **loadAdditionalData** (optional, default `false`): When enabled, loads more profile fields (takes longer). Can also return a phone number when it is publicly available. Also returns Telegram third-party verification (`botVerificationIcon`, `botVerificationBotId`, `botVerificationDescription`).

#### 📋 Input Schema

```json
{
  "title": "Username Info Actor",
  "description": "Fetches user information for usernames.",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "usernames": {
      "title": "Usernames",
      "type": "array",
      "description": "List of usernames to fetch information for",
      "editor": "stringList",
      "placeholderValue": "CryptoRankNews",
      "prefill": ["CryptoRankNews", "t.me/CryptoRankNews"]
    },
    "loadAdditionalData": {
      "title": "Load additional data",
      "type": "boolean",
      "description": "Load more profile fields (takes longer). Can also return a phone number when it is publicly available.",
      "editor": "checkbox",
      "default": false
    }
  },
  "required": ["usernames"]
}
```

Example:

```json
{
    "usernames": ["CryptoRankNews", "t.me/CryptoRankNews"],
    "loadAdditionalData": true
}
```

#### Output

Each username produces one dataset item.

##### Without `loadAdditionalData` (default)

**User**

```json
{
  "username": "jane_doe",
  "exists": true,
  "isUser": true,
  "title": "Jane Doe",
  "description": "Product designer",
  "photoUrl": "https://cdn.example/photo.jpg",
  "error": null
}
```

**Channel**

```json
{
  "username": "example_news",
  "exists": true,
  "isUser": false,
  "title": "Example News",
  "description": "Daily updates",
  "photoUrl": "https://cdn.example/channel.jpg",
  "participants_count": 125000,
  "error": null
}
```

##### With `loadAdditionalData: true`

**User**

```json
{
  "username": "jane_doe",
  "exists": true,
  "isUser": true,
  "title": "Jane Doe",
  "description": "Product designer",
  "photoUrl": "https://cdn.example/photo.jpg",
  "participants_count": -1,
  "telegramId": 123456789,
  "firstName": "Jane",
  "lastName": "Doe",
  "phone": "",
  "about": "Product designer",
  "status": "UserStatusRecently",
  "langCode": "en",
  "premium": false,
  "blocked": false,
  "bot": false,
  "hasPhoto": true,
  "gender": null,
  "deleted": false,
  "fake": false,
  "scam": false,
  "contactRequirePremium": false,
  "dcId": "EU",
  "photoDcId": 2,
  "storiesUnavailable": true,
  "storiesMaxId": 123,
  "verified": false,
  "botVerificationIcon": null,
  "botVerificationIconUrl": null,
  "botVerificationBotId": null,
  "botVerificationDescription": null,
  "error": null
}
```

**Channel**

```json
{
  "username": "example_news",
  "exists": true,
  "isUser": false,
  "title": "Example News",
  "description": "Daily updates",
  "photoUrl": "https://cdn.example/channel.jpg",
  "participants_count": 125000,
  "telegramId": 987654321,
  "storiesUnavailable": true,
  "storiesMaxId": null,
  "hasChatLink": false,
  "megagroup": false,
  "gigagroup": false,
  "verified": false,
  "restricted": false,
  "forum": false,
  "noforwards": false,
  "joinRequest": false,
  "joinToSend": false,
  "slowmodeEnabled": false,
  "hasGeo": false,
  "signatures": false,
  "creationDate": 1609459200,
  "photoId": "1234567890123456789",
  "botVerificationIcon": "5368324170671202286",
  "botVerificationIconUrl": "https://…/bot_verification_icons/5368324170671202286/preview?X-Amz-…",
  "botVerificationBotId": 8000000001,
  "botVerificationDescription": "Verified channel",
  "error": null
}
```

#### Usage

Set up your Apify account: Sign up at Apify and create a new Actor.

Provide input: Input a list of Telegram usernames in the JSON input field.

Run the Actor: Execute the Actor to fetch details for each username.

Retrieve results: Access the dataset to view results in a table format.

### Published examples

Ready-to-run tasks with pre-filled inputs:

- [Verify if a Telegram username exists](https://apify.com/akula.marketing/telegram-get-username-info/examples/verify-telegram-username-exists)
- [Get Telegram channel subscriber count by username](https://apify.com/akula.marketing/telegram-get-username-info/examples/get-telegram-channel-subscriber-count)
- [Check if Telegram username is a user or channel](https://apify.com/akula.marketing/telegram-get-username-info/examples/check-telegram-user-or-channel)
- [Telegram username lookup API — bulk check handles](https://apify.com/akula.marketing/telegram-get-username-info/examples/telegram-username-lookup-api)
- [Scrape Telegram channel title, description, and photo](https://apify.com/akula.marketing/telegram-get-username-info/examples/telegram-channel-info-scraper)

[All username examples](https://apify.com/akula.marketing/telegram-get-username-info/examples) · Need full export? [akula.marketing](https://akula.marketing)

### 🔌 Automate with Zapier & Make

No code needed — trigger this Actor from your existing tools.

- **Zapier**: search for the "Apify" app → action **Run Actor** → select `akula.marketing/telegram-get-username-info` → map a trigger field (e.g. a new row in Google Sheets or a new lead in your CRM) to `usernames` → send the output to Sheets, your CRM, or Slack. [Docs](https://docs.apify.com/platform/integrations/zapier)
- **Make**: add the **Apify → Run an Actor** module, select this Actor, set "Run synchronously" to `Yes`, then chain a **Get Dataset Items** module to pull results into your scenario. [Docs](https://docs.apify.com/platform/integrations/make)

Example: new row added to a Google Sheet of handles → Zap runs this Actor → verified username, subscriber count, and photo get written back to the same row.

#### Support

Support 24/7 - [@KoteamSupport](https://t.me/KoteamSupport).
We also offer specialized solutions for Telegram-related tasks — contact us to learn more

⭐ Found this useful? [Leave a review](https://apify.com/akula.marketing/telegram-get-username-info#reviews) — it helps others find this Actor and tells us what to build next.

🏷️ Find This Tool When You Search For
"verify if a Telegram username exists" - Existence check before outreach or CRM import
"get Telegram channel subscriber count" - Public channel member counts without admin access
"check if Telegram username is a user or channel" - User vs channel type detection
"Telegram username lookup API" - Bulk validation for lead lists and pipelines
"scrape Telegram channel title description and photo" - Public channel metadata export
"telegram group analytics" - Get real member counts and community data
"telegram user verification" - Verify identities and credentials
"telegram profile lookup" - Find complete user profiles and contact info
"telegram community research" - Analyze groups for market intelligence
"telegram osint" - Open source intelligence from Telegram data
🎯 Turn Telegram into your secret weapon for finding opportunities and avoiding threats
🛡️ Protect yourself and your business with professional-grade intelligence
💰 Discover high-value prospects and opportunities others miss

# Actor input Schema

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

List of usernames to fetch information for

## `loadAdditionalData` (type: `boolean`):

Load more profile fields (takes longer). Can also return a phone number when it is publicly available.

## Actor input object example

```json
{
  "usernames": [
    "CryptoRankNews",
    "t.me/CryptoRankNews"
  ],
  "loadAdditionalData": false
}
```

# Actor output Schema

## `usernameInfo` (type: `string`):

Dataset with one row per input username: existence, user vs channel/group, title, description, photo, subscriber count, and optional additional profile fields.

# 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": [
        "CryptoRankNews",
        "t.me/CryptoRankNews"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("akula.marketing/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": [
        "CryptoRankNews",
        "t.me/CryptoRankNews",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("akula.marketing/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": [
    "CryptoRankNews",
    "t.me/CryptoRankNews"
  ]
}' |
apify call akula.marketing/telegram-get-username-info --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,akula.marketing/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/9oDHThFJHevjDf0bq/builds/dLuhlKLRtVL5cieyT/openapi.json
