# Telegram Group Member (`scrapeai/telegram-group-member`) Actor

Extract Telegram group members — full name, username, public phone number, bio, profile photo URL, and 18 fields. Collect thousands per run.

- **URL**: https://apify.com/scrapeai/telegram-group-member.md
- **Developed by:** [ScrapeAI](https://apify.com/scrapeai) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 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/actors/running/actors-in-store.md#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 Group Member Scraper

Extract Telegram group members — full name, username, public phone number, bio, profile photo URL, and 18 structured data fields. Collect thousands of member profiles per run with blazing speed. No Telegram API credentials or browser automation required!

***

### What does Telegram Group Member Scraper do?

**Telegram Group Member Scraper** extracts public member profile information, message authors, group admins, active commenters, and channel participants from public Telegram groups and channels.

It serves as a fast, reliable, and lightweight **Telegram API alternative** for lead generation, audience research, group monitoring, influencer discovery, and competitive analysis.

- Extract full name, username, public phone number, bio, profile photo URL, role, activity timestamps, premium status, verified status, and language signals across 18 data fields.
- Get complete group overview details including subscriber counts, online user counts, descriptions, and verification status.
- Export results directly into **JSON**, **CSV**, **Excel**, **HTML**, or **XML** formats via Apify API or Console.

***

### Why use Telegram Group Member Scraper?

- **Blazing Fast Speed:** Processes over 1,000 members per minute using lightweight Cheerio HTTP parsing without heavy headless browser overhead.
- **No Session Credentials Needed:** Operates completely without needing Telegram API API\_ID, API\_HASH, or phone login sessions.
- **Dynamic Output Filtering:** Output only group members, group overview summaries, or both based on your `input.json` configuration.
- **Duplicate Protection:** Automatically normalizes handles, cleans input URLs, and deduplicates extracted member records.
- **Apify Cloud Integration:** Run on schedule, trigger via Webhooks, or integrate with Zapier, Make, Google Sheets, or REST APIs.

***

### What data can Telegram Group Member Scraper extract?

The scraper extracts 18 rich structured fields for every group member profile:

#### Member Output Fields (18 Fields)

| Field Name | Type | Description |
|---|---|---|
| `username` | String | Telegram handle (e.g. `durov`) |
| `fullName` | String | Member full display name |
| `firstName` | String | Extracted first name |
| `lastName` | String | Extracted last name |
| `role` | String | Role in group (`owner`, `admin`, `active_member`, `mentioned_member`) |
| `publicPhoneNumber` | String | Publicly visible contact phone number (if available) |
| `bio` | String | User bio / profile description |
| `groupUsername` | String | Target group username |
| `groupTitle` | String | Target group title |
| `photoUrl` | String | Direct URL to user profile picture |
| `isPremium` | Boolean | Whether user has Telegram Premium badge |
| `isVerified` | Boolean | Whether user has official Telegram verified badge |
| `isBot` | Boolean | `true` if handle belongs to a Telegram bot |
| `languageCode` | String | Primary language code detected from member activity |
| `messageCount` | Integer | Number of posts/messages contributed in scraped sample |
| `lastActiveDate` | String | ISO 8601 timestamp of user's latest activity |
| `telegramUrl` | String | Web URL (`https://t.me/username`) |
| `deepLink` | String | Telegram deep link (`tg://resolve?domain=username`) |

***

### How to scrape Telegram group members

1. **Enter Group Handles / URLs:** Provide public Telegram group links or usernames (e.g., `https://t.me/durov`, `@telegram`, `durov`) in the `groups` array or `groupList` text area.
2. **Configure Limits:** Set `maxMembers` per group and `maxPosts` to analyze.
3. **Select Output Type:** Choose `members`, `groups`, or `all`.
4. **Run the Scraper:** Click **Start** or run programmatically via Apify CLI / REST API.
5. **Download Data:** Export your scraped audience dataset in JSON, CSV, or Excel format.

***

### How much will it cost to scrape Telegram groups?

Because Telegram Group Member Scraper utilizes super-lightweight HTTP request handling (Cheerio Crawler), memory consumption is minimal:

- **Compute Unit (CU) Usage:** ~0.001 to 0.005 CUs per group processed.
- **Free Tier:** Scrape thousands of group members per month under Apify's $5 free monthly tier!
- **Scale:** Extract 100,000+ members for just a few cents in platform compute credits.

***

### Input Parameters

The Actor accepts input via `.actor/input_schema.json` or `input.json`:

| Parameter | Type | Default | Description |
|---|---|---|---|
| `groups` | Array | `["@durov"]` | List of group handles, URLs, or invite links |
| `groupList` | String | `""` | Alternative newline-separated group handles |
| `maxMembers` | Integer | `100` | Max members/participants to extract per group (0 = unlimited) |
| `maxPosts` | Integer | `50` | Max recent posts to inspect for members |
| `outputType` | String | `"members"` | `"members"`, `"groups"`, or `"all"` |
| `proxyConfiguration` | Object | `{"useApifyProxy": true}` | Apify proxy configuration |
| `maxConcurrency` | Integer | `10` | Maximum parallel requests |
| `debugLog` | Boolean | `false` | Enable detailed debug logs |

#### Example `input.json`

```json
{
  "groups": [
    "https://t.me/durov",
    "@telegram"
  ],
  "maxMembers": 100,
  "maxPosts": 50,
  "outputType": "members",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 10,
  "debugLog": false
}
```

***

### Output Example

When running with `outputType: "members"`, items are saved dynamically into the dataset based on `input.json`:

```json
[
  {
    "itemType": "member",
    "username": "durov",
    "fullName": "Pavel Durov",
    "firstName": "Pavel",
    "lastName": "Durov",
    "role": "owner",
    "publicPhoneNumber": null,
    "bio": "Telegram CEO & Founder",
    "groupUsername": "durov",
    "groupTitle": "Durov's Channel",
    "photoUrl": "https://cdn4.cdn-telegram.org/file/...",
    "isPremium": true,
    "isVerified": true,
    "isBot": false,
    "languageCode": "en",
    "messageCount": 14,
    "lastActiveDate": "2026-08-06T12:00:00.000Z",
    "telegramUrl": "https://t.me/durov",
    "deepLink": "tg://resolve?domain=durov",
    "scrapedAt": "2026-08-06T14:46:33.000Z"
  }
]
```

***

### FAQ & Legal Disclaimer

> **Disclaimer:** Our Actors are ethical and do not extract any private user data, such as private phone numbers or password hashes. They only extract information that users have chosen to share publicly on Telegram web previews. You should ensure that your use of scraped data complies with GDPR, local regulations, and applicable Terms of Service.

#### Common Questions

- **Can it scrape private Telegram groups?**
  No, this scraper is built specifically for public Telegram groups and channels accessible via web preview links.
- **Can I run this on a schedule?**
  Yes! Use Apify's built-in **Schedules** feature to run group scrapes hourly, daily, or weekly.

# Actor input Schema

## `groups` (type: `array`):

List of Telegram group or channel handles, URLs, or invite links (e.g. 'https://t.me/durov', '@durov', 'durov').

## `groupList` (type: `string`):

Alternative text area to paste Telegram group handles or links, separated by newlines.

## `maxMembers` (type: `integer`):

Maximum number of members/participants to extract per group (0 = unlimited).

## `maxPosts` (type: `integer`):

Maximum number of recent posts/messages to analyze per group to extract active members.

## `outputType` (type: `string`):

Select what type of items to push to dataset.

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

Optional proxy settings for web requests to bypass geo-restrictions or rate limits.

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

Maximum parallel HTTP requests.

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

Output detailed debug information to logs.

## Actor input object example

```json
{
  "groups": [
    "@durov",
    "telegram"
  ],
  "groupList": "",
  "maxMembers": 100,
  "maxPosts": 50,
  "outputType": "members",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 10,
  "debugLog": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing the scraped Telegram group member records.

# 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 = {
    "groups": [
        "@durov",
        "telegram"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeai/telegram-group-member").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 = { "groups": [
        "@durov",
        "telegram",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("scrapeai/telegram-group-member").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 '{
  "groups": [
    "@durov",
    "telegram"
  ]
}' |
apify call scrapeai/telegram-group-member --silent --output-dataset

```

## MCP server setup

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

```

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/qnIAvIyPNFi19rDzr/builds/LxjDSlsimHXame0IG/openapi.json
