# Telegram Group Scraper (`scrapeai/telegram-group-scraper`) Actor

Scrape all members from public Telegram groups or channels with blazing speed — over 1,000 members per minute.

- **URL**: https://apify.com/scrapeai/telegram-group-scraper.md
- **Developed by:** [ScrapeAI](https://apify.com/scrapeai) (community)
- **Categories:**
- **Stats:** 1 total users, 0 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 Scraper

Scrape all members, admins, authors, and participants from public Telegram groups or channels with blazing speed — **over 1,000 members per minute**. No Telegram API credentials, session tokens, or browser automation required!

***

### What does Telegram Group Scraper do?

**Telegram Group Scraper** extracts public member information, message authors, group admins, active commenters, and channel metadata 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 member usernames, names, roles, avatars, activity timestamps, and message activity counts.
- 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 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 Scraper extract?

The scraper extracts rich structured fields for every group member and summary:

#### Member Output Fields

| Field Name | Type | Description |
|---|---|---|
| `username` | String | Telegram handle (e.g. `durov`) |
| `name` | String | Member display name |
| `role` | String | Role in group (`owner`, `admin`, `active_member`, `mentioned_member`) |
| `groupUsername` | String | Target group username |
| `groupTitle` | String | Target group title |
| `photoUrl` | String | Direct URL to user profile picture |
| `isVerified` | Boolean | Whether user has official Telegram verified badge |
| `isBot` | Boolean | `true` if handle belongs to a Telegram bot |
| `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 groups

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 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:

```json
[
  {
    "itemType": "member",
    "username": "durov",
    "name": "Pavel Durov",
    "role": "owner",
    "groupUsername": "durov",
    "groupTitle": "Durov's Channel",
    "photoUrl": "https://cdn4.cdn-telegram.org/file/...",
    "isVerified": true,
    "isBot": false,
    "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 invites (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 scrape 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 the 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`):

No description

# 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-scraper").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-scraper").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-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/Rd4p8kSwVsHduLIvE/builds/hQ74mlVXsHVh4gniS/openapi.json
