πŸ’¬

WhatsApp Number Validation & Profile Lookup APIs

Verify whether phone numbers are registered on WhatsApp and retrieve public profile data in real time.

RESTful JSON API for lead validation, CRM enrichment, and customer intelligence.

Overview

πŸ’‘

Base URL https://api.opendata-api.com

Every call needs an API key. Paste it once below β€” it's attached to each request automatically.

GET /api/project/whatsapp/check-exist-by-phone

Check WhatsApp Account Exists (by Full Number)

Full docs β†’
Details

Lightweight existence check for a single number β€” returns whether the phone number is registered on WhatsApp, without fetching full profile details. Cheaper than a full profile lookup. Pass the full international number (with or without +, spaces, dashes, or 00 prefix); the country code and national number are parsed automatically. isExist can be true, false, or null (indeterminate β€” retry after a short backoff). When isExist=true, the response includes hasExtra (enrichment fields available for this number: always avatar and about, plus sparse deviceName / email / waOldDeviceName when known) and a userHash that must be passed to the profile/extra endpoints (Get Avatar / Get About / Get Device Name / Get Email / Get Previous Device Name / Get Business Profile / Get Presence) to authorize the heavier lookup. The userHash is valid for 24 hours.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/check-exist-by-phone?key=<API_KEY>&phoneNumber=<phoneNumber>'
GET /api/project/whatsapp/check-exist-by-cc-phone

Check WhatsApp Account Exists (CC + Phone Split)

Full docs β†’
Details

Same as Check WhatsApp Account Exists, but the country code and the national phone number are supplied as separate parameters. Use this when you already know the country code and want to avoid automatic number splitting. cc is the dial prefix without + (1–4 digits); phone is the national subscriber number (6–15 digits, no leading zero). isExist can be true, false, or null (indeterminate β€” retry recommended). When isExist=true, the response includes hasExtra (avatar/about always when registered, plus sparse deviceName/email/waOldDeviceName when known) and a userHash to pass to Get Avatar / Get About / Get Device Name / Get Email / Get Previous Device Name / Get Business Profile / Get Presence.

ParameterInValue
query
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/check-exist-by-cc-phone?key=<API_KEY>&cc=<cc>&phone=<phone>'
GET /api/project/whatsapp/get-device-name

Get Device / Owner Name

Full docs β†’
Details

Fetch the available owner display name (typically only for currently active accounts). Two-step flow: call Check WhatsApp Account Exists first; only call this when hasExtra lists "deviceName". Pass the returned userHash here β€” the number is resolved server-side. Invalid/expired userHash is rejected. When the field is absent, deviceName is null and message explains why.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/get-device-name?key=<API_KEY>&userHash=<userHash>'
GET /api/project/whatsapp/get-email

Get Masked Backup Email

Full docs β†’
Details

Fetch the available masked backup email (e.g. u*******6@gmail.com). This is not a business-profile contact email. Two-step flow: call Check WhatsApp Account Exists first; only call this when hasExtra lists "email". Pass the returned userHash here β€” the number is resolved server-side. Invalid/expired userHash is rejected. When the field is absent, email is null and message explains why.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/get-email?key=<API_KEY>&userHash=<userHash>'
GET /api/project/whatsapp/get-wa-old-device-name

Get Previous Device Name

Full docs β†’
Details

Fetch the available previous-device name (wa_old_device_name). Two-step flow: call Check WhatsApp Account Exists first; only call this when hasExtra lists "waOldDeviceName". Pass the returned userHash here β€” the number is resolved server-side. Invalid/expired userHash is rejected. When the field is absent, waOldDeviceName is null and message explains why.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/get-wa-old-device-name?key=<API_KEY>&userHash=<userHash>'
GET /api/project/whatsapp/get-avatar

Get Profile Avatar (Display Photo)

Full docs β†’
Details

Fetch the public display photo (DP) of a WhatsApp user. Two-step flow: first call Check WhatsApp Account Exists (by Full Number) to obtain a userHash for the target number, then pass that userHash here. Calls without a valid (or expired/unknown) userHash are rejected. The number is resolved from the userHash server-side β€” no phone parameter is accepted. If the number is registered but the user has no photo or hides it by privacy, pictureSet=false and reason explains why. When pictureSet=true, the response includes the temporary photo URL and a picture version id that changes when the photo changes.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/get-avatar?key=<API_KEY>&userHash=<userHash>'
GET /api/project/whatsapp/get-about

Get About / Status Text

Full docs β†’
Details

Retrieve the user's About (status signature) text and profile-picture version id. Two-step flow: obtain a userHash via Check WhatsApp Account Exists (by Full Number) first, then pass it here. Invalid/expired userHash is rejected. If the number is not registered, exists=false; an empty about means the user has no status text or hides it.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/get-about?key=<API_KEY>&userHash=<userHash>'
GET /api/project/whatsapp/get-biz-profile

Get Business Profile

Full docs β†’
Details

Retrieve the WhatsApp Business profile: business name, verified level, description, address, email, website, and member-since info. Two-step flow: obtain a userHash via a check-exist endpoint first, then pass it here. Invalid/expired userHash is rejected. Personal (non-business) numbers return isBusiness=false.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/get-biz-profile?key=<API_KEY>&userHash=<userHash>'
GET /api/project/whatsapp/get-presence

Get Presence / Last Seen

Full docs β†’
Details

Retrieve online state / last-seen. Strongly constrained by the target's privacy: if the requester is not a contact and the target's last-seen/online privacy is not set to everyone, presence is not delivered and visible=false (a real result that cannot be bypassed). Two-step flow: obtain a userHash via a check-exist endpoint first, then pass it here. A single call can take up to ~17s.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/get-presence?key=<API_KEY>&userHash=<userHash>'
GET /api/project/whatsapp/check-active

Check Active Status

Full docs β†’
Details

Check in real time whether a phone number is registered and active on WhatsApp. Returns a direct active flag for the full international number β€” a standalone check that does not require a userHash. Ideal for quick yes/no validation in signup flows and list hygiene.

ParameterInValue
path
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/check-active?key=<API_KEY>&phoneNumber=<phoneNumber>'
GET /api/project/whatsapp/batch-check-10

Batch Check (up to 10 numbers)

Full docs β†’
Details

Check whether up to 10 phone numbers are registered on WhatsApp in a single request. Returns exist and isBusiness status for each number. Supply numbers as a comma-separated list. Efficient for validating small batches in one call.

ParameterInValue
query
curl -X GET 'https://api.opendata-api.com/api/project/whatsapp/batch-check-10?key=<API_KEY>&accounts=<accounts>'

Guides