RealtimeBulkPhone input

Check if a phone number is registered on Zalo

Find out whether a phone number has a Zalo account, the leading messenger in Vietnam. Real time or bulk; unknown answers are free.

Last updated

checks: ["zalo.registered"]
A phone with chat bubbles; one messaging-app check says registered, another is unknown.A phone with chat bubbles; one messaging-app check says registered, another is unknown.

The Zalo check tells you whether a phone number has a Zalo account. Zalo is the most-used messenger in Vietnam, so for Vietnamese customers it is often the check that matters most. It runs in real time and in bulk jobs, answers registered: true, false or null (unknown), and returns no name or avatar.

What does the Zalo check tell you?

It answers whether a Zalo account is associated with the number. Zalo was built in Vietnam by the technology group VNG and launched in 2012. Accounts are tied to a phone number confirmed by a code, and people usually find each other through their phone contacts.

  • registered: true: a Zalo account exists for the number.
  • registered: false: a conclusive answer that there is none.
  • registered: null: no conclusive answer; not charged.

Zalo users can limit who finds them by phone number, so a small share of existing accounts may not be confirmable through the number. For Vietnamese mobile numbers, a true is the expected answer for most active smartphone users. A false on a Vietnamese mobile number is therefore more telling than the same answer on a messenger that is rarely used in that country.

Who uses it, and why?

Zalo matters for any business with customers in Vietnam, where it is used for chats with friends, family, shops and service providers.

  • Delivering codes and transactional messages. Businesses in Vietnam send order confirmations, delivery updates and verification codes to customers through Zalo official accounts. The approach usually costs less than SMS and falls back to SMS where there is no account. Checking registration first avoids failed attempts. See SMS cost reduction.
  • Market-aware channel choice. International companies that default to WhatsApp can check WhatsApp and Zalo together for Vietnamese numbers and use the one each opted-in customer actually has. See channel selection.
  • Sign-up screening in Vietnam. A Vietnamese mobile number without a Zalo account is uncommon enough to feed into a fraud score. It is not a verdict on its own; combine it with a carrier lookup.

What do you get back?

One result per number in checks["zalo.registered"]; no extra attributes.

FieldTypeMeaning
registeredboolean or nulltrue account exists, false none, null unknown
statusenumcompleted, pending, unknown, unsupported_country or failed
confidence / confidence_scoreenum / 0–1How sure the answer is
checked_attimestampWhen the answer was obtained
cached / age_seconds / billedboolean / integer / booleanCache and billing details
reasonstring or nullWhy the answer is not conclusive

How is it billed?

Per number, for conclusive answers only. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). Real-time lookups and bulk jobs are priced separately. See pricing.

Repeat checks within the freshness window can be answered from your account's cache at no charge (cached: true, billed: false). max_age: 0 forces a fresh, billed check, and max_cost caps a request.

What are the limits?

Zalo is available in real time (POST /v1/lookup, up to 100 numbers, wait up to 30 seconds) and in bulk jobs (POST /v1/jobs, up to 50,000 numbers and e-mails). Numbers from every country are accepted, but the platform is used mainly in Vietnam.

  • Up to 20 checks per request; numbers × checks up to 2,000 per lookup or 100,000 per job.
  • Vietnamese numbers in national format (starting with 0) need default_country: "VN".
  • Requests that look like sequential number ranges or generated e-mail lists are rejected (suspected_enumeration).
  • A daily number cap applies per account (GET /v1/limits).

How do I use it responsibly?

Check numbers of customers who gave them to you for the service you provide, and use Zalo only for messages they expect. Vietnam has its own personal data protection rules. Make sure you have a lawful basis for processing each number. Our acceptable use policy forbids unsolicited messaging, profiling individuals and scanning number ranges. People can object to checks via the opt-out form.

Example request

+447700900001 answers "registered" with a test key. See test mode for the other test numbers.

curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"numbers":["+447700900001"],"checks":["zalo"]}'

Runs as pasted with the public sandbox key, which answers the test values only. In the SDKs, omit the key to use MOBILEVALIDATE_API_KEY.

Response (excerpt, test mode: the first item of results):

JSON
{
  "kind": "phone",
  "input": "+447700900001",
  "e164": "+447700900001",
  "country": "GB",
  "number_status": "valid",
  "checks": {
    "zalo.registered": {
      "service": "zalo.registered",
      "status": "completed",
      "registered": true,
      "attributes": null,
      "confidence": "high",
      "confidence_score": 0.99,
      "checked_at": "2026-09-25T14:25:30.136Z",
      "cached": false,
      "age_seconds": 0,
      "billed": false,
      "reason": null,
      "poll_after_ms": null
    }
  },
  "test": true
}

Try it now

Realtime lookup via POST /v1/lookup. Every example runs as pasted: it uses the public sandbox key, which answers the test values for free. In the SDKs, omit the key to use MOBILEVALIDATE_API_KEY.

curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"numbers":["+447700900001"],"checks":["zalo.registered"]}'

Real test-mode result for this check

checks["zalo.registered"]
{
  "service": "zalo.registered",
  "status": "completed",
  "registered": true,
  "attributes": null,
  "confidence": "high",
  "confidence_score": 0.99,
  "checked_at": "2026-09-25T14:25:28.979Z",
  "cached": false,
  "age_seconds": 0,
  "billed": false,
  "reason": null,
  "poll_after_ms": null
}

What you get

Fields of checks["zalo.registered"], generated from the public service catalog.

FieldTypeMeaning
registeredboolean | nulltrue = found, false = not found, null = unknown (not charged).
statusenumcompleted, pending, unknown, unsupported_country or failed.
checked_attimestampWhen the answer was obtained.

Frequently asked questions

Why check Zalo rather than WhatsApp for Vietnamese numbers?

Zalo, not WhatsApp, is the main messenger in Vietnam. For Vietnamese customers, a Zalo check usually tells you more about how to reach them than a WhatsApp check does.

Can I check Zalo in real time?

Yes. The Zalo check works with POST /v1/lookup for up to 100 numbers per request, as well as in bulk jobs.

Can I send Zalo notifications to anyone who has an account?

No. Business notifications on Zalo go through official accounts under Zalo's own rules, and they must be messages the person expects, such as an order update or a code they requested. Our policy forbids unsolicited messaging.

Do Vietnamese numbers need a country code?

Send numbers in international format (+84…), or send the national format with default_country set to VN so the API can convert them to E.164.

Does the check return the Zalo name or avatar?

No. Only whether an account is associated with the number.

All articles

Add Zalo number check to your stack

Request access to MobileValidate. Start in test mode, go live when you are ready.