Telegram Phone Number Scraper
Pricing
$24.99/month + usage
Telegram Phone Number Scraper
Telegram Phone Number Scraper gathers public phone contacts for agencies and B2B teams. Filter groups or channels by topic to streamline prospecting and outbound communication at scale.
Pricing
$24.99/month + usage
Rating
0.0
(0)
Developer
Scrapier
Maintained by CommunityActor stats
0
Bookmarked
38
Total users
4
Monthly active users
2 days ago
Last modified
Categories
Share
Telegram Phone Number Scraper 📱
Finds public Telegram channels for your keywords, opens each channel's real public
post feed on t.me, and extracts every phone number that is genuinely valid for the
country you select.
How it actually works 🔬
Telegram publishes every public channel's full post HTML, with no login, at
https://t.me/s/<channel> (20 posts per page, ?before=<id> walks backwards through the
archive). This actor uses a search engine only to discover which channels match your
keyword, and then reads the numbers out of that real, untruncated post text — plus any
tel: and WhatsApp (wa.me) links inside the posts.
It deliberately does not mine search-result snippets for the number itself. A snippet is Google's ~160-character summary of the channel, cut off mid-sentence, which is how scrapers end up emitting digit fragments that look like phone numbers but cannot be dialled.
Every number is validated against a real numbering plan ✅
A number is emitted only when both of these hold:
- It is written in explicit international form in the post —
+998 90 123 45 67,00998901234567,tel:+998...,wa.me/998.... Telegram is an international platform and public business channels overwhelmingly write numbers that way. A bare local digit run carries no evidence about which country it belongs to, so it is never guessed at. - Its length and its leading digits are legal under the selected country's national numbering plan.
For +1, the area code decides the country: Canadian area codes are required for Canada,
excluded for the United States, and the 21 Caribbean/Atlantic +1 territories, the
non-geographic codes (800/833/844/855/866/877/888/900) and the N11 service codes are
excluded from both. +7 is split between Russia (NSN starting 3/4/5/8/9) and Kazakhstan
(6/7). Dial codes are not unique, so the tables are keyed by country name, never by code.
Country coverage 🌍
The country list was measured live, not assumed. For every candidate country the full pipeline was run — discovery query, real channel fetch, real validation — and what is recorded is the count of distinct valid numbers actually recovered.
Full coverage (numbers came back easily): Belarus, Uzbekistan, Ukraine, Iran, Germany, Israel, Czech Republic, Ethiopia, Poland, Turkey, United Arab Emirates, Italy, Russia, United States, Singapore, Azerbaijan, Japan, Portugal.
Limited (real numbers exist but are sparse — expect small result counts): Afghanistan, Algeria, Argentina, Armenia, Australia, Austria, Bangladesh, Brazil, Bulgaria, Cameroon, Canada, China, Colombia, Denmark, Egypt, Estonia, Finland, France, Georgia, Ghana, Greece, Hong Kong, India, Indonesia, Iraq, Ireland, Ivory Coast, Jordan, Kenya, Korea, South, Kuwait, Kyrgyzstan, Latvia, Lebanon, Libya, Malaysia, Mexico, Moldova, Morocco, Myanmar, Nepal, Netherlands, Nigeria, Norway, Oman, Pakistan, Peru, Philippines, Qatar, Romania, Saudi Arabia, Senegal, Serbia, Slovakia, South Africa, Spain, Sri Lanka, Sudan, Sweden, Syria, Taiwan, Tajikistan, Tanzania, Thailand, Tunisia, Turkmenistan, Uganda, United Kingdom, Venezuela, Vietnam, Yemen.
Countries that were measured and returned nothing are not offered, and are rejected up front rather than burning a run that cannot produce anything. Measured-zero: Kazakhstan, Chile, Lithuania, Slovenia, Switzerland, New Zealand.
Input Parameters 🧩
| Field | Type | What it does |
|---|---|---|
keywords | array | Search terms, @usernames, or t.me URLs. A keyword runs discovery; a username/URL scrapes that channel directly with no search at all. |
country | enum | Hard filter. Only numbers valid under this country's numbering plan are emitted. |
maxPhoneNumbers | integer | Hard cap of distinct numbers per keyword. |
engine | enum | deep reads full channel post feeds (recommended). fast reads only search snippets — quicker, far fewer results. |
proxyConfiguration | object | Proxy for the discovery step. Defaults to Apify Proxy GOOGLE_SERP. Telegram itself is fetched directly. |
📦 Example input
{"keywords": ["kvartira", "https://t.me/s/Maklersiz"],"country": "Uzbekistan (+998)","maxPhoneNumbers": 25,"engine": "deep","proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["GOOGLE_SERP"] }}
Output 📤
One row per distinct phone number. Duplicates are removed across the whole run.
{"platform": "Telegram","keyword": "kvartira","title": "Maklersiz uy-joy","description": "... Aloqa: +998771039935 ...","url": "https://t.me/Maklersiz/5557","phone_number": "+998771039935","country": "Uzbekistan","dial_code": "+998","channel": "Maklersiz","channel_url": "https://t.me/Maklersiz","subscribers": "12.3K","source_type": "channel_post","posted_at": "2026-08-03T09:14:52+00:00"}
source_type is channel_post (found in a real post), channel_bio (found in the channel
description or its links), or search_snippet (fast engine only).
Run status is honest 🚦
A run that finds nothing because the keyword has no matches ends SUCCEEDED with an empty
dataset. A run in which every search request or every t.me request was refused ends
FAILED, with the reason in the status message — it did no work, and reporting that as a
success hides a broken proxy or an exhausted account behind an empty dataset.
Every keyword is bounded by both a page ceiling and a wall clock, so a doomed query terminates promptly and says so instead of running until the platform timeout.
Legal ⚖️
Only publicly available information from public Telegram channels is accessed — the same
pages any logged-out visitor can open at t.me. No login, no private groups, no member
lists. Use the output in line with the applicable privacy and anti-spam laws in your
jurisdiction.
Support
- Bug reports / custom features: dev.scraperengine@gmail.com