RealtimeBulkPhone inputRU

Check if a Russian phone number has a VK account

Check in real time whether a VK account is associated with a Russian (+7) mobile number. Yes, no or unknown; other countries are never charged.

Last updated

checks: ["vk.registered"]
A phone number checked against a grid of generic account tiles, each marked registered, not registered or unknown.A phone number checked against a grid of generic account tiles, each marked registered, not registered or unknown.

The VK check indicates whether a VK account is associated with a Russian phone number. It runs in real time and in bulk jobs, and answers registered: true, false or null (unknown) with the time of the check. Numbers outside Russia return unsupported_country and are not charged. No profile data is ever returned.

What does the VK check tell you?

It tells you whether a Russian mobile number is linked to an account on VK, the Russian social network run by VK Company. VK uses the phone number as the main sign-in identifier through VK ID, a single account used across several of the company's services. A number with an associated account has usually been confirmed with a code on VK.

  • registered: true: a VK account is associated with the number.
  • registered: false: a conclusive "no".
  • registered: null: no conclusive answer. Not charged.
  • status: unsupported_country: the number is not Russian. Not charged.

Here the phone number is how people sign in, not an optional extra added for recovery. That makes a true answer on VK more informative than on platforms where most people register with an e-mail address.

Who uses it, and why?

The VK check suits businesses that serve customers in Russia and need a quick signal on a Russian number.

  • Sign-up and OTP protection. In a live sign-up, a number with a VK account is more likely to be a person's everyday mobile number than a number bought for a single registration. See OTP and sign-up fraud.
  • Channel choice for expected messages. Combine with Telegram and MAX to see which messengers a consenting customer is likely to use.
  • Lead verification for Russian consumer leads.

For e-mail addresses on the same market, see the Mail.ru and Yandex e-mail checks.

What do you get back?

Each number gets one result under checks["vk.registered"], with no extra attributes.

FieldTypeMeaning
registeredboolean or nulltrue account associated, 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_secondsboolean / integerServed from your account's cache, and its age
billedbooleanWhether this check was charged
reasonstring or nullWhy an answer is not conclusive, e.g. UNSUPPORTED_COUNTRY

How is it billed?

You pay per number checked, and only for conclusive answers. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). Real-time and bulk checks are priced separately. See pricing. Cache hits inside the freshness window are free, and max_age: 0 forces a fresh, billed check.

What are the limits?

  • Real time (POST /v1/lookup, up to 100 identifiers) and bulk jobs (POST /v1/jobs, up to 50,000 per job).
  • Russia only. The +7 country code is shared with Kazakhstan, so numbers are checked against the Russian numbering plan, not just the prefix.
  • Up to 20 checks per request. Numbers × checks is capped at 2,000 per lookup and 100,000 per job.
  • Requests that look like sequential number ranges or generated e-mail lists are rejected.
  • A daily cap per account applies (GET /v1/limits).

How do I use it responsibly?

Check only numbers you have a lawful basis to process under the laws that apply to you and to the people concerned. Use results for fraud prevention and for choosing a channel for messages people expect. Don't use them for profiling or unsolicited contact, which our acceptable use policy forbids. People can object at /opt-out.

Example request

With a test key, +447700900001 answers "registered" (test numbers bypass the country limit). See test mode.

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

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": {
    "vk.registered": {
      "service": "vk.registered",
      "status": "completed",
      "registered": true,
      "attributes": null,
      "confidence": "high",
      "confidence_score": 0.99,
      "checked_at": "2026-09-25T14:25:31.077Z",
      "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":["vk.registered"]}'

Real test-mode result for this check

checks["vk.registered"]
{
  "service": "vk.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["vk.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

Which numbers does the VK check accept?

Russian numbers only. Numbers from other countries, including other +7 numbers that are not Russian, come back as unsupported_country and are not charged.

Why is the phone number a strong signal on VK?

VK signs people in with a phone number through its VK ID account, so an associated account usually means the number was verified with a code on VK. Treat it as a signal, not as identity proof.

Is the answer instant?

Usually. The VK check is available in real time on POST /v1/lookup and waits up to 10 seconds by default. Slower answers come back as pending.

Does the check return the VK profile?

No. It only indicates whether a VK account is associated with the number. Names, photos, profile pages and friends are never returned.

Can I test it without a Russian number?

Yes. With a test key the documented test numbers (+44 7700 900xxx) work for every service, including VK.

Add VK number check to your stack

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