# Bulk Telegram number check for Asian customer lists (Indonesia, India, Philippines, Vietnam, Hong Kong)

> Check Telegram numbers in bulk for Indonesia, India, the Philippines, Vietnam, Hong Kong and more: normalising Asian formats, privacy and unknowns, cost caps.

Canonical: https://mobilevalidate.com/blog/bulk-telegram-number-check-asia · Last updated: 2026-10-10

![An uploaded list of numbers in mixed national formats flows through a funnel marked E.164 into a results table where each row has a calling-code chip and three separate answers: yes, no or unknown.](https://mobilevalidate.com/images/blog/bulk-telegram-number-check-asia.svg)

*Normalise every number first; each channel then gets its own yes, no or unknown answer.*


By MobileValidate team (https://mobilevalidate.com/about) · Published: 2026-10-10 · Category: Guides · Tags: Telegram, Bulk jobs, List hygiene, Channel selection, E.164

To check Telegram numbers in bulk for a customer list from Asia, convert every number to [E.164](/glossary/e164) (+62, +91, +63, +84, +852 and so on), then run one bulk job with the Telegram check: upload a CSV in the dashboard or call `POST /v1/jobs` for up to 50,000 numbers. Each number comes back registered, not registered or unknown with the time of the check. Unknown answers are never billed. Normalising first avoids invalid rows and wrong numbers, and Telegram's privacy settings make "not registered" a soft no.

This guide covers the bulk workflow and per-country details. For what a single answer can and can't tell you, read our [Telegram number check guide](/blog/telegram-number-check-guide).

## What does a bulk Telegram check return for each number?

One of three answers per number, as in real time, plus the reasons a row isn't checked:

| Answer | Meaning | Billed |
|---|---|---|
| `registered: true` | A Telegram account can be found for the number | Yes |
| `registered: false` | No account was found through this number | Yes |
| `registered: null` (unknown) | No conclusive answer this time; `reason` says why | No |
| `invalid_number`, duplicate, `unsupported_country` | The row was not checked | No |

Read `false` as "not reachable through this number", not "doesn't use Telegram". On Telegram, "each phone number is a separate account" ([Telegram FAQ](https://telegram.org/faq)), but the holder controls who can find them by it.

## How much is Telegram used in Asia?

Telegram says it has "over 1 billion active users" worldwide ([Telegram FAQ](https://telegram.org/faq)). It doesn't publish a per-country breakdown, and we haven't found a measurement of Telegram use in Indonesia, India, the Philippines or Hong Kong that we can verify, so we don't quote shares. Figures online mix downloads, surveys and monthly users, and disagree.

Access can also change. In May 2025, Vietnam's telecom department ordered internet providers to block Telegram ([Al Jazeera, 2025](https://www.aljazeera.com/news/2025/5/24/vietnam-orders-ban-on-popular-messaging-app)). OONI's network measurements found the block in place on major Vietnamese networks from 25 May 2025 and lifted on 10 July 2025 ([OONI, 2025](https://explorer.ooni.org/findings/382823169800)). A registration answer doesn't say whether the app is reachable there on the day you send.

So measure your own base: a bulk check of customers who opted in shows how many you can reach on Telegram, country by country. The [channel-by-country guide](/blog/choosing-a-messaging-channel-by-country) covers the method.

## How do you normalise Asian numbers before a bulk check?

Convert each number to E.164: a plus sign, the country code and the national number without the trunk `0` ([ITU-T E.164](https://www.itu.int/rec/T-REC-E.164/en)). Common forms and traps in Asian lists:

| Country | National mobile form | E.164 form | Trap | Guide |
|---|---|---|---|---|
| India | 10 digits starting 6–9, sometimes with a trunk `0` or `0091` in front | +91 + 10 digits | A 12-digit value starting `91` is already international: add `+`, don't add another `91` | India |
| Indonesia | `08XX…` | +62 8XX… (9 to 12 digits after +62) | Mobile numbers vary in length, so a fixed-length rule rejects real numbers | Indonesia |
| Philippines | `09XX XXX XXXX` | +63 9XX XXX XXXX | Drop the `0`; a few mobile blocks start `81` or `89`, not `9` | Philippines |
| Vietnam | `0` + 9 digits (03, 05, 07, 08, 09) | +84 + 9 digits | Old 11-digit numbers (012x, 016x, 018x, 0199) were converted to 10 digits and are no longer in use ([Wikipedia](https://en.wikipedia.org/wiki/Telephone_numbers_in_Vietnam)) | – |
| Pakistan | `03XX XXXXXXX` | +92 3XX XXXXXXX | Drop the `0` before `3` | Pakistan |
| Hong Kong | 8 digits, no trunk `0` | +852 + 8 digits | Singapore numbers also have 8 digits, so a list without codes can mix the two | [Hong Kong](/blog/hong-kong-phone-number-format) |
| Mainland China | 11 digits starting `1`, no trunk `0` | +86 + 11 digits | Hong Kong and Macau numbers are not +86 | [China](/blog/china-phone-number-format) |

Four habits help:

1. **One country per job, or E.164 per row.** A job takes one `default_country` for numbers written without `+`. With `default_country=ID`, a Philippine `0917…` number parses as a valid-looking Indonesian landline, so the wrong number is checked. Convert each row with the country you stored for that customer, then upload.
2. **Protect leading zeros.** Spreadsheets drop the `0` of `0812…` and show long numbers in scientific notation. Keep the phone column as text, or export E.164.
3. **Don't remap old Vietnamese numbers by guesswork.** A converted 016x number answers `invalid_number`, which is free. Ask the customer for the current number instead of rebuilding it.
4. **Normalise before you deduplicate.** `0812…` and `+62812…` are the same number. The job removes duplicates after normalising and never bills them.

## How do privacy settings change bulk results?

They decide whether an existing account can be found by its number at all. Telegram's API defines separate settings for "whether people will be able to see your phone number" and "whether people can add you to their contact list by your phone number" ([Telegram API](https://core.telegram.org/type/InputPrivacyKey)). In the app, people control "whether others are allowed to find them by their phone number" ([Telegram, 2022](https://telegram.org/blog/ultimate-privacy-topics-2-0)). By default, a user's number is visible only to people they have added to their address book as contacts ([Telegram FAQ](https://telegram.org/faq)).

When someone limits discovery, the check through their number can answer `false` or unknown although the account exists. Since December 2022, people can also sign up with anonymous numbers from the Fragment platform instead of a SIM ([Telegram, 2022](https://telegram.org/blog/ultimate-privacy-topics-2-0)); such an account never matches the mobile number in your CRM. Expect a share of "no" answers from real Telegram users, respect them as the person's choice, and don't re-check repeatedly hoping for a different result.

## Which Asian countries does the Telegram check cover?

All of them that we serve. Our catalog lists the Telegram check as worldwide, in real time and in bulk jobs, with no country gaps. That includes Indonesia, India, the Philippines, Vietnam, Pakistan, Hong Kong and mainland China. Only numbers from sanctioned countries and regions are never checked; they answer `unsupported_country` and are free ([full list](/docs/services#which-countries-are-never-checked)).

One note for combined jobs: WhatsApp gets the bulk price only for groups of at least 132 numbers per country in one job (at the time of writing). Smaller groups are priced at the real-time rate and appear in the estimate as `small_batch`. Telegram has no such rule and no per-country minimum; the [bulk jobs docs](/docs/bulk-jobs) explain both.

## Should you upload in the dashboard or use `POST /v1/jobs`?

Both run the same job, with the same limits, prices and anti-enumeration rules:

| | Dashboard upload | `POST /v1/jobs` |
|---|---|---|
| Input | CSV or TXT up to 10 MB, or pasted numbers | JSON list, or CSV as `multipart/form-data` |
| Country for national formats | Asked for numbers without `+` | `default_country` |
| Estimate and cost cap | Shown before you start; optional cap | `POST /v1/jobs/estimate`, then `max_cost` |
| Results | CSV download | Paged results, filters, CSV or NDJSON |
| Best for | One-off clean-ups | Monthly refreshes, pipelines |

## How do you run the job with the API?

Estimate first, then create the job with a cost cap. The example uses the documented [test values](/docs/test-values), which always answer the same way and are never billed:

```bash
curl https://api.mobilevalidate.com/v1/jobs/estimate \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+447700900001", "+447700900002", "+447700900003"], "checks": ["telegram", "whatsapp", "carrier"]}'

curl https://api.mobilevalidate.com/v1/jobs \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: asia-list-2026-10" \
  -d '{"numbers": ["+447700900001", "+447700900002", "+447700900003"],
       "checks": ["telegram", "whatsapp", "carrier"],
       "max_cost": {"amount": "5.00", "currency": "USD"}}'
# then: GET /v1/jobs/{id}?wait=30 and GET /v1/jobs/{id}/results?service=telegram&registered=true
```

With a live key, send your normalised numbers and set `max_cost` to the estimate's `max_cost` or your budget; a job that could cost more is refused before anything runs. Test keys estimate zero. The three test numbers answer:

| Test number | `telegram` | `whatsapp` | `carrier` |
|---|---|---|---|
| `+447700900001` | `registered: true` | `registered: true` | `line_type: "mobile"` |
| `+447700900002` | `registered: false` | `registered: false` | unknown (`NO_DATA`) |
| `+447700900003` | unknown (`UPSTREAM_TIMEOUT`) | unknown (`UPSTREAM_TIMEOUT`) | unknown (`UPSTREAM_TIMEOUT`) |

A job allows 100,000 checks (rows times checks), so three checks per row fit about 33,000 numbers. For large lists, subscribe a [webhook](/docs/webhooks) to `job.completed` instead of polling.

## How is a bulk Telegram check billed?

Only conclusive answers are charged. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate), and answers still fresh in your account's cache are free. Bulk is cheaper per number than real time. The job reserves the estimate's maximum, settles each answer and releases the rest. See [pricing](/pricing) for current rates per check.

## How do you choose a channel from Telegram, WhatsApp and carrier answers?

Combine the answers per customer, then send only on channels the customer agreed to:

| Telegram | WhatsApp | Carrier | Reasonable choice for a customer who opted in |
|---|---|---|---|
| `true` | any | mobile | Telegram if the customer chose it; SMS as fallback |
| `false` or unknown | `true` | mobile | WhatsApp if they opted in there, otherwise SMS |
| `false` | `false` | mobile | SMS |
| any | any | not mobile, or unknown | Check the number is active before relying on SMS; fix the record |

Store each answer with `checked_at` and never overwrite a stored conclusive answer with unknown. Our guide to [cleaning a phone list in bulk](/blog/how-to-clean-a-phone-number-list-in-bulk) covers the other hygiene steps; the [Telegram check page](/services/telegram-number-check) lists the fields.

## What makes a bulk Telegram check acceptable?

A lawful basis for every number and a purpose the customer would expect: delivering messages they asked for, keeping your list accurate, choosing a channel they can receive, or fraud prevention. This is general guidance, not legal advice.

- **Your customers only.** Check numbers people gave you. Telegram uses phone numbers as identifiers and asks permission before it syncs anyone's contacts ([Telegram Privacy Policy](https://telegram.org/privacy)); hold your own list to at least that standard.
- **No ranges, no target lists.** Requests with 20 or more consecutive numbers are refused with `suspected_enumeration`, and each account has a daily cap ([rate limits](/docs/rate-limits-and-abuse)). Using checks to find people to message unsolicited is forbidden by our [acceptable use policy](/legal/acceptable-use).
- **Yes, no or unknown only.** No usernames, names, photos or activity are returned, and people can object through the [opt-out form](/opt-out).

Telegram and WhatsApp are named descriptively; MobileValidate is not affiliated with either. To try the workflow, [get a free test key](/docs/quickstart) and run the requests above.

## Sources

1. [Telegram FAQ](https://telegram.org/faq) — Telegram, 2026
2. [Telegram Privacy Policy (3.4 Phone Number and Contacts)](https://telegram.org/privacy) — Telegram, 2026
3. [InputPrivacyKey (API documentation)](https://core.telegram.org/type/InputPrivacyKey) — Telegram, 2026
4. [No-SIM Signup, Auto-Delete All Chats, Topics 2.0 and More](https://telegram.org/blog/ultimate-privacy-topics-2-0) — Telegram, 2022
5. [Vietnam blocked Telegram](https://explorer.ooni.org/findings/382823169800) — OONI, 2025
6. [Vietnam orders ban on popular messaging app Telegram](https://www.aljazeera.com/news/2025/5/24/vietnam-orders-ban-on-popular-messaging-app) — Al Jazeera, 2025
7. [Recommendation ITU-T E.164: The international public telecommunication numbering plan](https://www.itu.int/rec/T-REC-E.164/en) — ITU, 2010
8. [Telephone numbers in Vietnam](https://en.wikipedia.org/wiki/Telephone_numbers_in_Vietnam) — Wikipedia, 2026

## Frequently asked questions

### How many numbers can I check for Telegram in one bulk job?

Up to 50,000 phone numbers and e-mail addresses per job, and up to 100,000 checks per job counted as rows times checks. A job with Telegram, WhatsApp and carrier checks on every row therefore fits about 33,000 numbers. Larger lists go into several jobs.

### Do I need to convert numbers to +62, +91 or +63 format first?

For a list from one country, no: set default_country and the job reads national formats such as 0812 or 09XX. For a list that mixes countries, yes. A job has one default_country, so convert each row to E.164 with the country you hold for that customer, then upload.

### Why do some numbers come back unknown or not registered when the customer uses Telegram?

Telegram lets people decide whether others can find them by their phone number, and an account can sit on a different number than the one you hold. Such numbers can answer not registered or unknown. Unknown answers are never billed.

### Does the Telegram check cover Indonesia, India, Vietnam and the rest of Asia?

Yes. Our catalog lists the Telegram check as worldwide in real time and in bulk jobs, with no country gaps. Only numbers from sanctioned countries and regions are never checked; they answer unsupported_country and are free.

### Can I use a bulk Telegram check to find new people to message?

No. Check only the numbers of customers and sign-ups who gave them to you, and message only those who agreed to hear from you on Telegram. Lists that look like sequential number ranges are refused, and our acceptable use policy forbids finding recipients for unsolicited messages.
