BulkPhone input

Check if a phone number is registered on Botim

Check in bulk whether phone numbers have a Botim account, the calling and messaging app widely used in the UAE. Unknown answers are free.

Last updated

checks: ["botim.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 Botim check tells you whether phone numbers have a Botim account. Botim is a calling and messaging app that is especially common in the United Arab Emirates. The check runs in bulk jobs and answers registered: true, false or null (unknown) per number, with the time of the check. It returns no name, photo or location.

What does the Botim check tell you?

It answers whether a Botim account is associated with the number. Botim accounts are created on a phone and verified by the phone number. Calling is the main use, and messaging and other services sit alongside it.

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

Botim's popularity is tied to the UAE. For many years, voice and video calls over several well-known internet apps were restricted there, and Botim became one of the apps residents use for calls. Many people use it together with WhatsApp messaging rather than instead of it.

Who uses it, and why?

  • Lead and contact verification in the Gulf. For a UAE mobile number, a Botim account alongside WhatsApp is a sign the number is in active use on a smartphone. See lead verification.
  • Deliverability and list hygiene. Businesses serving UAE residents batch-check older contact lists and flag numbers without messenger activity for re-verification before a consented campaign.
  • Understanding reach for consented contact. Teams deciding how to support UAE customers by voice or chat use aggregate Botim coverage of their opted-in customer base as one input.

What do you get back?

Each job row carries checks["botim.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, at the bulk price. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). The free POST /v1/jobs/estimate shows the maximum cost before you start. See pricing.

Numbers your account checked recently can be answered from its cache at no charge. max_age: 0 forces fresh, billed checks.

What are the limits?

Botim runs in bulk jobs only. POST /v1/lookup answers 403 service_disabled ("The check 'botim.registered' is available in bulk jobs only (POST /v1/jobs).").

  • Up to 50,000 numbers and e-mails per job, 20 checks per request, 100,000 number × check pairs per job.
  • Numbers from every country are accepted. UAE numbers in national format need default_country: "AE".
  • Requests that look like sequential number ranges or generated e-mail lists are rejected.
  • A daily number cap applies per account. Follow the job with GET /v1/jobs/{id}?wait=30 or a webhook.

How do I use it responsibly?

Check only numbers you hold for a legitimate reason and a clear purpose. Never use a Botim result to guess someone's country of residence, nationality or community, and never to find people to message. Our acceptable use policy forbids unsolicited messaging, profiling and range scanning. People can object to checks via the opt-out form.

Example request

Test jobs complete at once. +447700900001 answers registered, …002 not registered and …003 unknown. See test mode.

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

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.

Job (excerpt, test mode):

JSON
{
  "object": "job",
  "id": "job_0VWF4kKQgsOwDE5GVOfI",
  "status": "completed",
  "livemode": false,
  "checks": [
    "botim.registered"
  ],
  "created_at": "2026-09-25T14:25:30.171Z",
  "completed_at": "2026-09-25T14:25:30.174Z",
  "progress": {
    "total": 3,
    "checks_total": 3,
    "done": 3,
    "conclusive": 2,
    "non_billable": 3
  },
  "retention_days": 30
}

First row from GET /v1/jobs/{id}/results (test mode):

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

Try it now

Bulk-only service: create a job via POST /v1/jobs, then read GET /v1/jobs/{id}/results. 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/jobs \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"numbers":["+447700900001"],"checks":["botim.registered"]}'

Real test-mode result for this check

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

What is Botim?

Botim is a messaging and internet calling app that is widely used in the United Arab Emirates, including by people who call family and friends abroad.

Why is Botim bulk only?

Botim answers are gathered in batches, so the check runs in POST /v1/jobs. POST /v1/lookup refuses it with service_disabled.

Does a Botim account tell me where the person lives?

No. The check only answers whether an account is associated with the number. It returns no location, name or profile, and it must not be used to infer where someone lives.

Are UAE numbers required?

No. Numbers from any country are accepted. Many Botim users in the UAE register with a UAE number, but not all do.

Add Botim number check to your stack

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