# Telegram Phone Number Info Scraper (`datapilot/telegram-phone-number-info-scraper`) Actor

Analyze phone numbers with this Apify Actor. Validate international numbers, detect country, carrier, line type, and timezone, check possible Telegram registration, enrich with OSINT data, and export structured results. Supports batch processing and Apify Proxy.

- **URL**: https://apify.com/datapilot/telegram-phone-number-info-scraper.md
- **Developed by:** [Data Pilot](https://apify.com/datapilot) (community)
- **Categories:** Other, AI, Automation
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 scraped 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 Info** Collector is a powerful Apify Actor designed to discover, validate, and enrich phone numbers with carrier, geographic, and Telegram registration intelligence. This tool provides comprehensive **Telegram Phone Number Info** including country, carrier, line type, timezone, national format, and Telegram registration status for any phone number. Whether you're building a lead-verification pipeline, cleaning a contact list, or conducting OSINT research, the Telegram Phone Number Info Collector delivers actionable **Telegram Phone Number Info** insights efficiently.

With direct phone-intelligence integration, multi-source enrichment, Telegram registration checking, and reliable Apify Dataset delivery, the Telegram Phone Number Info Collector ensures comprehensive **Telegram Phone Number Info** coverage across any country code. It focuses on key **Telegram Phone Number Info** signals including carrier, line type, and registration state, making it an essential tool for verification and OSINT workflows.

***

### 📋 Table of Contents

- [Features](#-features)
- [Data Source](#-data-source)
- [How It Works](#-how-it-works)
- [Input](#-input)
- [Output](#-output)
- [Technical Stack](#-technical-stack)
- [Data Fields](#-data-fields-explained)
- [Use Cases](#-use-cases)
- [Quick Start](#-quick-start)
- [Configuration](#-configuration)
- [Performance](#-performance)
- [Billing](#-billing)
- [Important Notes](#-important-notes)
- [Changelog](#-changelog)
- [Support](#-support--feedback)
- [License & Legal](#-license--legal)

***

### 🔥 Features

- **Phone Number Normalization** – Automatically converts raw input into E.164 international format.
- **Format Validation** – Rejects malformed numbers before any network calls are made.
- **Phone Intelligence** – Extracts country, carrier, timezone, line type, and national format using the `phonenumbers` library.
- **Multi-Source Enrichment** – Falls back across multiple phone-lookup APIs for carrier and validity data.
- **Telegram Registration Check** – Detects whether a number is registered on Telegram via public profile pages.
- **Name & Photo Extraction** – Captures publicly visible display name and profile photo where available.
- **OSINT Name Lookup** – Cross-references an additional public source for name/photo matching.
- **Batch Processing** – Accepts a single number or a list, processing each sequentially.
- **Residential Proxy Support** – Apify residential proxy for reliable, uninterrupted access.
- **Randomized Delays** – Human-like pacing between requests to reduce blocking.
- **Real-Time Dataset Push** – Pushes results to Apify Dataset with full metadata.
- **Detailed Logging** – Comprehensive per-number progress and summary logging.
- **Graceful Error Handling** – Skips a failing source without stopping the whole run.

***

### 📊 Data Source

#### **Phone Intelligence & Public Lookup Sources**

- **Library**: Google's `phonenumbers` (libphonenumber Python port) for offline carrier/geo/timezone data
- **APIs**: NumLookupAPI and AbstractAPI for supplementary carrier and validity data
- **Registration Check**: Public Telegram profile pages (`t.me/+<number>`)
- **OSINT Source**: Public contact-lookup service for name/photo matching
- **Access**: Mix of key-less public endpoints and public web pages
- **Update Frequency**: Reflects the current state of each source at time of run

***

### ⚙️ How It Works

The Telegram Phone Number Info Collector accepts one or more phone numbers and runs each through a four-stage enrichment pipeline. First, the number is normalized to international format and validated. Next, offline phone intelligence extracts country, carrier, timezone, and line type. Then a phone-lookup API is queried for supplementary data, and the number's public Telegram profile page is checked for registration status, name, and photo. Finally, an OSINT source is checked for any additional name/photo match. Results across all requested numbers are combined and pushed to the Apify Dataset in a single batch.

**Key Processing Steps:**

1. **Input Parsing** – Accept a single phone number, a list, or a delimited string
2. **Normalization** – Convert to E.164 format and validate
3. **Proxy Setup** – Configure Apify residential proxy
4. **Number Loop** – Iterate through each requested phone number
5. **Phone Intelligence** – Extract country, carrier, timezone, and line type offline
6. **Phone API Lookup** – Query external APIs for supplementary carrier/validity data
7. **Telegram Check** – Fetch the public Telegram profile page and parse registration status
8. **OSINT Lookup** – Cross-check an additional public source for name/photo
9. **Rate Limiting** – Apply randomized delay between numbers
10. **Timestamp Tagging** – Record fetch time per entry
11. **Dataset Push** – Push combined results from all numbers in a single batch
12. **Summary Logging** – Report registered/not-registered/unknown totals

**Key Benefits:**

- Pull **Telegram Phone Number Info** for any phone number without manual lookups
- Verify Telegram registration status at scale
- Enrich contact lists with carrier and geographic metadata
- Feed lead-verification pipelines, OSINT research, or data-cleaning workflows
- Automate recurring checks as numbers are added to a list

***

### 📥 Input

The Actor accepts the following input parameters:

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `phone` / `phones` / `phone_numbers` | string or array | *(required)* | One or more phone numbers, in international format. Multiple numbers can be separated by comma, semicolon, or newline. |
| `proxyConfiguration` | object | `{}` | Apify Proxy configuration (optional, but recommended for reliable results). |

**Example Input:**

```json
{
  "phone": ["+12025550123", "+447911123456"],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

**Fetch Info for a Single Number:**

```json
{
  "phone": "+12025550123"
}
```

**Fetch Info for a Delimited List:**

```json
{
  "phone": "+12025550123, +447911123456; +8801XXXXXXXXX"
}
```

***

### 📤 Output

The Actor pushes **Telegram Phone Number Info** records with the following structure:

| Field | Type | Description |
|-------|------|-------------|
| `registered` | boolean/null | Whether the number is registered on Telegram |
| `phone` | string | Normalized phone number (E.164) |
| `firstName` | string/null | Public first name, if available |
| `lastName` | string/null | Public last name, if available |
| `photo` | string/null | URL of public profile photo, if available |
| `state` | string | One of `active`, `not_registered`, `unknown`, `invalid` |
| `country` | string/null | Country associated with the number |
| `country_code` | string/null | International dialing code |
| `carrier` | string/null | Carrier/operator name |
| `line_type` | string/null | Mobile, Fixed Line, VoIP, Toll Free, etc. |
| `timezone` | string/null | Timezone associated with the number |
| `national_format` | string/null | Number formatted in national style |
| `phone_valid` | boolean/null | Whether the number passed validity checks |
| `phone_input` | string | Original raw input as provided |
| `fetched_at` | string | ISO 8601 timestamp of when the record was fetched |

**Example Telegram Phone Number Info Record:**

```json
{
  "registered": true,
  "phone": "+12025550123",
  "firstName": "John",
  "lastName": "Doe",
  "photo": "https://cdn.telegram.org/...",
  "state": "active",
  "country": "United States",
  "country_code": "+1",
  "carrier": "Verizon",
  "line_type": "Mobile",
  "timezone": "America/New_York",
  "national_format": "(202) 555-0123",
  "phone_valid": true,
  "phone_input": "+12025550123",
  "fetched_at": "2026-08-02T09:00:00Z"
}
```

***

### 🧰 Technical Stack

- **HTTP Client:** `curl_cffi` with Chrome TLS fingerprint impersonation
- **Phone Intelligence:** `phonenumbers` (libphonenumber Python port)
- **JSON Parsing:** Standard JSON handling via response parsing
- **Date Handling:** `datetime` with timezone-aware UTC timestamps
- **Async:** `asyncio` for non-blocking, multi-number processing
- **Proxy:** Apify Proxy with `RESIDENTIAL` configuration
- **Logging:** Apify Actor logging system
- **Platform:** Apify Actor serverless environment

***

### 📊 Data Fields Explained

#### **Identity Signals**

- **registered**: Whether the number resolves to an active Telegram account
- **firstName / lastName**: Publicly visible display name split into parts
- **photo**: Publicly visible profile photo URL

#### **Phone Metadata**

- **country / country\_code**: Geographic and dialing-code identification
- **carrier**: Network operator associated with the number
- **line\_type**: Classification such as Mobile, Fixed Line, or VoIP
- **timezone**: Timezone linked to the number's region
- **national\_format**: Number formatted per local conventions

#### **Validity**

- **phone\_valid**: Whether the number passed structural validation
- **state**: Overall status summary for the record

***

### 🎯 Use Cases

- **Lead Verification** – Confirm phone numbers are valid and reachable before outreach
- **OSINT Research** – Identify publicly available names/photos linked to a number
- **Contact List Cleaning** – Remove invalid or unreachable numbers from a database
- **Fraud Prevention** – Flag numbers with suspicious carrier/line-type combinations
- **Messaging App Verification** – Check Telegram presence before running campaigns
- **Customer Onboarding** – Validate phone numbers at signup
- **Journalism** – Verify contact details during investigative research
- **Compliance & KYC** – Support identity-verification workflows

***

### 🚀 Quick Start

#### **1. Prepare Input**

Go to Apify Console and enter:

```json
{
  "phone": ["+12025550123", "+447911123456"]
}
```

#### **2. Run the Actor**

Click **Start**. The Actor will:

- Normalize and validate each phone number
- Query phone intelligence and lookup APIs
- Check Telegram registration status
- Push all results to the Dataset

#### **3. Monitor Progress**

Console shows:

```
Telegram Phone Number Info Actor
Phone numbers to process: 2
── [1/2] +12025550123 ──
  Normalized: +12025550123
  Step 1: Phone intelligence...
  Country: United States | Carrier: Verizon | Type: Mobile
  Step 2: Phone API lookup...
  Step 3: Telegram registration check...
  Telegram registered: True
  Step 4: OSINT name lookup...
  ✓ registered=True | country=United States | carrier=Verizon | type=Mobile
TOTAL: 2 numbers
Telegram Registered: 1 | Not Registered: 0 | Unknown: 1
```

#### **4. View & Download Results**

- **Results Tab**: All **Telegram Phone Number Info** records
- **Export**: JSON, CSV, Excel, or HTML
- **Filter**: By registration status, country, or carrier
- **API Access**: Available via the Apify API

***

### ⚙️ Configuration

Single number:

```json
{
  "phone": "+12025550123"
}
```

Multiple numbers with proxy:

```json
{
  "phone": ["+12025550123", "+447911123456"],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

Delimited list without proxy:

```json
{
  "phone": "+12025550123, +447911123456"
}
```

***

### 📈 Performance

#### **Processing Speed**

- One enrichment pipeline (4 stages) per phone number
- Randomized delay of 1–2.5 seconds between numbers to reduce blocking
- Scales linearly with the number of phone numbers submitted

#### **Resource Usage**

- Memory: Low, proportional to the number of records processed
- Network: Multiple requests per number (intelligence API, Telegram page, OSINT source)
- Proxy: One residential proxy session per number, rotated per request when configured

***

### 💰 Billing

#### **Batch Billing**

- **Billing Model:** Batch push (not per-record PPE)
- **Typical Cost:** Proportional to total phone numbers processed
- **Efficiency:** Randomized delays balance speed against reliability

***

### ⚠️ Important Notes

#### **Legal & Compliance**

- **Fair Use**: Respects public page rate limits and API terms
- **Public Data Only**: Retrieves only publicly visible profile information
- **Privacy**: Collecting personal data may be subject to privacy regulations (e.g., GDPR) — use only for consented or legitimate purposes
- **Legal**: Not legal advice — consult qualified professionals before using this data for compliance decisions

#### **Data Quality**

- **Freshness**: Reflects each source's current state at time of run
- **Completeness**: Not every number will resolve on every source
- **Accuracy**: Third-party API accuracy varies; cross-check critical results
- **Verification**: Manually verify high-stakes results before acting on them

#### **Best Practices**

- Always configure a residential proxy for the most reliable results
- Submit numbers in international format (`+` prefix) to avoid validation errors
- Batch numbers together in one run to reduce overhead
- Re-run periodically if tracking changes in registration status over time
- Some third-party APIs may require an API key for production-scale use

***

### 📦 Changelog

#### v1.0.0 (August 2026)

**Initial Release:**

- Phone number normalization and validation
- Offline phone intelligence via `phonenumbers`
- Multi-source phone API lookup with fallback
- Telegram public registration check
- OSINT name/photo cross-referencing
- Apify residential proxy support
- Real-time Dataset push
- Per-number error handling and logging
- Asyncio + curl\_cffi architecture

***

### 🧑‍💻 Support & Feedback

- **Issues:** Submit via Apify console with the phone number(s) used
- **Documentation:** Check the Actor details page
- **Community:** Apify forum discussions
- **Feature Requests:** Suggest additional lookup sources to support
- **Bug Reports:** Include the phone number, expected result, and error details

***

### 📄 License & Legal

**Terms of Use:**

- Use for legitimate verification, OSINT, and research purposes
- Respect the terms of service of all third-party data sources
- Do not use for unsolicited contact, harassment, or unlawful surveillance
- Use data responsibly and in compliance with applicable privacy laws

**Disclaimer:**
Telegram Phone Number Info Collector is provided as-is for research and verification purposes. Users are responsible for compliance with all applicable laws and third-party terms of service. This is not legal advice.

***

### 🎉 Get Started Today

**Deploy now for Telegram Phone Number Info research!**

Use for:

- 📱 Phone Number Verification
- 🔍 OSINT & Identity Research
- 💡 Lead & Contact Enrichment
- 📈 Contact List Cleaning
- 🎯 Fraud & Risk Screening

**Perfect for:**

- Growth & Sales Teams
- OSINT Researchers
- Fraud & Risk Analysts
- Data Verification Teams

***

**Last Updated:** August 2026
**Version:** 1.0.0
**Status:** Production Ready
**Platform:** Apify Actor
**Architecture:** Async/Await
**Data Source:** Phone Intelligence APIs & Public Telegram Pages

***

### 📚 Related Tools

- Email Verification Collector
- WHOIS Domain Lookup Tool
- Social Media Username Checker

***

### ⚖️ Telegram Phone Number Info Excellence

This Actor is optimized for **Telegram Phone Number Info** research with:

- ✅ Multi-source phone enrichment
- ✅ Offline + online phone intelligence
- ✅ Public Telegram registration checking
- ✅ Randomized, respectful request pacing
- ✅ Real-time Dataset push
- ✅ Production-ready code

# Actor input Schema

## `phone` (type: `string`):

Enter phone numbers in international format (comma-separated or line-separated, e.g. +1234567890, +447123456789).

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

Select proxy settings. RESIDENTIAL proxy is highly recommended.

## Actor input object example

```json
{
  "phone": "+1234567890",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "phone": "+1234567890"
};

// Run the Actor and wait for it to finish
const run = await client.actor("datapilot/telegram-phone-number-info-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 = { "phone": "+1234567890" }

# Run the Actor and wait for it to finish
run = client.actor("datapilot/telegram-phone-number-info-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 '{
  "phone": "+1234567890"
}' |
apify call datapilot/telegram-phone-number-info-scraper --silent --output-dataset

```

## MCP server setup

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