# Telegram Phone Number Scraper (`solid-scraper/telegram-phone-number-scraper`) Actor

📱 Telegram Phone Number Scraper extracts verified phone contacts from public Telegram profiles using smart search filters. Perfect for outreach, lead generation, and marketing teams looking to build targeted lists fast. 🚀

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

## Pricing

from $1.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 Phone Number Scraper 🔍

**Telegram Phone Number Scraper** is an Apify actor that **scrapes phone numbers from Telegram profiles, bios, and post content** using your **keywords** and **country targeting**. Whether you’re looking for a **telegram phone number scraper** for outreach, a **telegram phone number finder** for research, or a **telegram leads scraper** for B2B enrichment, this tool helps you automate phone number extraction at scale—saving you hours of manual searching.

***

### Why choose Telegram Phone Number Scraper?

| Feature | Benefit |
| --- | --- |
| ✅ **Keyword-driven scraping** | Uses your keywords to focus results on the people and niches you care about |
| ✅ **Country and dial-code targeting** | Filters phone numbers to the country you select for more relevant leads |
| ✅ **Bulk extraction with a stop limit** | Stops after reaching your `maxPhoneNumbers` goal to keep runs predictable |
| ✅ **Reliability improvements** | Includes resilience behaviors and can resume progress during longer runs |
| ✅ **Structured dataset output** | Saves results with clear fields like `phone_number`, `url`, `title`, and `dial_code` |
| ✅ **Scales to large tasks** | Designed for large scraping runs—use input keywords and limits to control duration |

***

### Key features

- 🔍 **Phone number extraction from public Telegram content**: Pulls phone numbers from Telegram bios, profiles, and post content.
- 🎯 **Keyword + country targeting**: Lets you steer results with `keywords`, `country`, and optional `location`.
- 🧭 **Progress-aware runs**: Maintains progress so long tasks can continue without restarting from zero.
- 🛡️ **Resilient scraping behavior**: Includes retry-and-fallback style handling for more stable collection runs.
- 📊 **Clean, table-ready results**: Each match is pushed incrementally into the dataset as a structured record.
- 💾 **Deduplication of phone numbers**: Avoids repeating phone numbers within the same run by tracking seen values.
- ⏱️ **Run-limiting control**: Use `maxPhoneNumbers` to stop once you reach your target number of unique phone results.
- 🤖 **Automation-friendly**: Outputs data you can export to JSON/CSV and feed into CRMs, lists, or analysis pipelines.

***

### Input

Provide input via an `input.json` file. Example structure:

```json
{
  "keywords": ["marketing", "founder"],
  "location": "London",
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20
}
```

#### Input Fields

| Field | Required | Description |
| --- | --- | --- |
| `keywords` | ✅ | A list of keywords to search for (for example: `["marketing","founder"]`). These keywords guide which Telegram content is considered for phone number extraction. |
| `location` | ❌ | Filter results by location (for example: `"London"` or `"California"`). Leave empty for global targeting. |
| `country` | ✅ | Select the country to target for phone numbers. Choose a value like `"United Kingdom (+44)"` to apply the correct country dial-code context. |
| `maxPhoneNumbers` | ❌ | Stop scraping after this many phone numbers are found. This helps control run duration. Allowed range is 1–10000; default is `20`. |

***

### Output

The actor saves each scraped match into a dataset in **JSON format**. Results are pushed incrementally as records with the following fields.

Example output for one record:

```json
{
  "platform": "Telegram",
  "keyword": "marketing",
  "title": "No title",
  "description": "No data",
  "url": "No URL",
  "phone_number": "+447700900123",
  "country": "United Kingdom",
  "dial_code": "+44"
}
```

#### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| `platform` | string | The source platform name used for each record (`Telegram`). |
| `keyword` | string | The keyword that was used to guide the scraping for this result. |
| `title` | string | The scraped result title (as captured from the source page snippet). |
| `description` | string | Text description extracted alongside the result (used as the source where phone numbers are identified). |
| `url` | string | The source URL for the record. |
| `phone_number` | string | The extracted phone number in E.164 format (e.g. `+44...`). |
| `country` | string | The targeted country name (derived from the selected country input). |
| `dial_code` | string | The dial code associated with the selected target country. |

Notes: the dataset view is titled **“Scraped Phone Numbers”** and the dataset transformation/display corresponds to these fields: `keyword`, `title`, `description`, `url`, `phone_number`, `country`, `dial_code`.

***

### How to use Telegram Phone Number Scraper (via Apify Console)

1. **Open Apify Console**\
   Log in at https://console.apify.com and go to the **Actors** tab.

2. **Find the actor**\
   Search for **Telegram Phone Number Scraper** and open the actor details page.

3. **Configure the INPUT**\
   In the **INPUT** panel, set:
   - **`keywords`** (required): add the terms you want to use (e.g. marketing, founder)
   - **`country`** (required): pick the country you want phone numbers from
   - **`location`** (optional): add a city/region to narrow targeting
   - **`maxPhoneNumbers`** (optional): set a cap for how many unique phone numbers you want

4. **(Optional) Review Run Options timeout**\
   The actor notes that large scraping tasks may take time; you can adjust the timeout in **Run Options** (default is **3600s / 1hr**).

5. **Run the actor**\
   Click **Run** to start scraping. During the run, you’ll see logs as the actor discovers and pushes results incrementally to the dataset.

6. **Monitor progress and results**\
   If results are fewer than expected, broaden your keywords or use different country settings.

7. **Open the dataset**\
   After the run completes, open the dataset named **“Telegram Phone Numbers Dataset”** (view: **“Scraped Phone Numbers”**) and export the data (JSON/CSV as supported by Apify).

No coding required—get **telegram phone number extraction tool** results in minutes.

***

### Advanced features & SEO optimization

- 🧠 **Engineered for telegram phone number extraction tool workflows**: The actor is built to help you **scrape telegram phone numbers** and export them in a structured, dataset-ready format.
- 🎛️ **Smart keyword + country controls**: Using keywords and a selected country improves lead relevance—ideal for a **telegram contact harvesting tool**.
- 🔄 **Resumable progress behavior**: Keeps track of progress during long scraping tasks so you can continue rather than restarting.
- 📌 **Deduplicated output**: Avoids repeating the same extracted phone number within the run to keep your results clean.
- 📊 **Dataset-first output for analysis**: Each result includes `url`, `title`, `description`, `phone_number`, `country`, and `dial_code`, making it easy for analysts and marketers to work with.

***

### Best use cases

- 📈 **B2B lead generation**: Build targeted outreach lists using a **telegram leads scraper** approach—keyword + country focused.
- 🎓 **Market research**: Collect a **telegram phone number database scraper** dataset to compare phone availability by region and niche.
- 🧾 **Compliance-oriented audits of public contact availability**: Validate how often publicly shared phone numbers appear in profiles and bios for a given country.
- 🧠 **OSINT research pipelines**: Enrich research notes with **telegram phone number OSINT tool** outputs for further investigation.
- 💼 **Recruiting and founder outreach**: Use **telegram user phone number lookup** style harvesting to locate founders and professionals matching your keywords.
- 🧰 **CRM ingestion for data analysts**: Feed exported JSON/CSV into downstream pipelines once you have `phone_number`, `url`, and country context.

***

### Technical specifications

- **Supported Input Formats**
  - ✅ `keywords` (array of strings)
  - ✅ `location` (string; optional)
  - ✅ `country` (string from the provided enum values like `United Kingdom (+44)`)
  - ✅ `maxPhoneNumbers` (integer, 1–10000; default `20`)

- **Proxy Support**
  - ✅ Built-in proxy support for reliable scraping in environments where network access may vary.

- **Retry Mechanism**
  - ✅ Includes resilience behaviors and fallback handling for more stable runs.

- **Dataset Structure**
  - ✅ Saves records with: `platform`, `keyword`, `title`, `description`, `url`, `phone_number`, `country`, `dial_code`.

- **Limitations**
  - ⚠️ Results depend on what phone numbers are publicly available in Telegram bios, profiles, and post content for your selected keywords and country.
  - ⚠️ The run stops when it reaches `maxPhoneNumbers` (and free runs may apply an internal cap).

***

### FAQ

#### Can I scrape phone numbers globally instead of by city?

✅ Yes. Leave `location` empty and set only `country`. The actor will target the selected country while keeping the search broad.

#### What happens if I get fewer results than expected?

❌ If you receive fewer phone numbers than expected, the actor suggests trying broader keywords or different country settings. You can also increase `maxPhoneNumbers` (within allowed limits) if you want more output.

#### Are the extracted phone numbers returned in a specific format?

✅ Yes. The dataset field `phone_number` contains the extracted number formatted in **E.164** style (for example, `+44...`).

#### Does the actor deduplicate phone numbers?

✅ Yes. It tracks already seen phone numbers during the run and avoids pushing duplicates to the dataset.

#### Can this actor run large batches?

✅ Yes. The actor is intended for large scraping tasks, and it notes that you may need to adjust the timeout in **Run Options** (default: **3600s / 1hr**) for bigger workloads.

#### What data fields do I get in the dataset?

✅ Each dataset record includes `platform`, `keyword`, `title`, `description`, `url`, `phone_number`, `country`, and `dial_code`.

#### Do I need to write code to use Telegram Phone Number Scraper?

✅ No. You can run it directly from **Apify Console** by providing the input values in the built-in form or via `input.json`.

#### Is it safe to use for public Telegram data?

✅ The actor works with **publicly available sources**. You’re responsible for following applicable laws and Telegram/platform policies when using the exported results.

***

### Support & feature requests

Want to improve your **Telegram Phone Number Scraper** results? Let us know what’s missing.

- 💡 **Feature Requests**: Tell us what you’d like to add next (for example: additional output fields, export enhancements, or stricter filtering for specific use cases).
- 📧 **Contact**: Reach out at <dataforleads@gmail.com>.
- Your feedback helps shape the roadmap for better telegram phone number scraper experiences.

***

*If you need a **telegram phone number extraction tool** that’s built for dataset-ready output and keyword + country targeting, **Telegram Phone Number Scraper** is a smart way to scale public phone number research efficiently.*

***

### Disclaimer

This tool accesses **publicly accessible sources**. It does not access private profiles, password-protected pages, or authenticated data.

You are responsible for complying with applicable laws and regulations (for example, GDPR/CCPA), as well as respecting Telegram and other platform terms of service, and applicable anti-spam rules.

If you need help with data removal requests, contact <dataforleads@gmail.com>. Please use this actor responsibly, ethically, and for legitimate purposes only.

# Actor input Schema

## `keywords` (type: `array`):

Enter keywords to search for (e.g., 'Target Keyword').

## `location` (type: `string`):

Filter by location (e.g., 'London', 'California'). Leave empty for global search.

## `country` (type: `string`):

Select the country to target for phone numbers.

## `maxPhoneNumbers` (type: `integer`):

Stop scraping after this many phone numbers are found. Setting a higher limit extends the scraping duration.

## Actor input object example

```json
{
  "keywords": [
    "marketing",
    "founder"
  ],
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20
}
```

# 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 = {
    "keywords": [
        "marketing",
        "founder"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("solid-scraper/telegram-phone-number-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 = { "keywords": [
        "marketing",
        "founder",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("solid-scraper/telegram-phone-number-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 '{
  "keywords": [
    "marketing",
    "founder"
  ]
}' |
apify call solid-scraper/telegram-phone-number-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,solid-scraper/telegram-phone-number-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/UdLJSuE4ZkGzH0RUB/builds/e9cOLYaglITEZzOC2/openapi.json
