WhatsApp OSINT Phone Lookup avatar

WhatsApp OSINT Phone Lookup

Pricing

from $300.00 / 1,000 whatsapp lookup (fresh)s

Go to Apify Store
WhatsApp OSINT Phone Lookup

WhatsApp OSINT Phone Lookup

Verify any phone number on WhatsApp instantly. Get profile picture, display name, carrier info, breach data checks, AI face analysis, and a composite risk score — all in one API call. No API keys needed. Supports up to 100,000 numbers per run.

Pricing

from $300.00 / 1,000 whatsapp lookup (fresh)s

Rating

0.0

(0)

Developer

Yuliia Kulakova

Yuliia Kulakova

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

7

Monthly active users

6 days ago

Last modified

Categories

Share

WhatsApp OSINT Phone Lookup

Turn any phone number into a full intelligence profile — in seconds. Verify WhatsApp presence, pull profile data, run AI face analysis, check data breaches, and get a composite risk score. All in one clean API call.


What You Get

Give us a list of phone numbers. We check each one against WhatsApp and return everything publicly available — profile picture, display name, status text, carrier info, breach database hits, AI face detection, and an automated risk score.

No manual work. No third-party API keys required for core features. Just clean JSON output.


Features

✅ WhatsApp Verification

Instantly confirms whether a number is registered on WhatsApp and whether it's a personal or business account. Works on any country, any number format.

🖼️ Profile Picture URL

Retrieves the direct WhatsApp CDN link to the profile picture — ready for download, storage, or further analysis.

👤 Display Name & Status

Fetches the WhatsApp push name and about/status text when the account has them set.

📡 Carrier & Line Type Detection

Identifies country, line type (Mobile, Fixed, VoIP) and mobile network code. Powered by Google's libphonenumber — no extra API key required.

🔐 Data Breach Check

Scans known breach databases to see if the phone number has appeared in any data leaks. Returns breach source names, dates, and total hit count.

🤖 AI Face Analysis

Downloads the profile picture and runs local AI detection to determine if a real face is present — plus estimated age range, gender, and dominant emotion. Runs entirely on-device, no external AI API needed.

🔁 Profile Picture Change Tracking

Computes a perceptual hash (pHash) of the profile picture on every run. Automatically detects if the image has changed since your last lookup — perfect for monitoring over time.

🎯 Composite Risk Score

Aggregates all available signals into a single score from 0 to 100:

ScoreCategoryWhat It Means
70–100LOW_RISKLooks like a real, active person
40–69MEDIUM_RISKSome signals missing or mixed
0–39HIGH_RISKLikely fake, VoIP, or suspicious account

Factors include: WhatsApp registration, profile picture presence, display name, about text, account type, breach exposure, carrier type, and face detection result.


Pricing

Pay-per-event — you only pay for what you actually use.

EventPriceWhen Charged
WhatsApp lookup (fresh)$0.30Every number checked live
WhatsApp lookup (cached)$0.05When result comes from cache
Breach data hit$0.40Only when a breach is actually found
Carrier lookup$0.10When includeCarrier: true
Face analysis$0.20When includeFaceAnalysis: true
Risk score$0.05When includeRiskScore: true

💡 Example: 1,000 numbers with carrier + risk score = ~$450 total

Set a budget cap in Apify — the actor stops gracefully when the limit is hit.


Input

{
"numbers": ["+14155552671", "+447911123456", "+4930123456"],
"includeProfilePic": true,
"includeAbout": true,
"includeCarrier": true,
"includeLeaks": true,
"includeFaceAnalysis": false,
"includeRiskScore": true,
"concurrency": 5,
"timeoutMs": 30000
}

All Input Options

FieldTypeDefaultDescription
numbersarrayrequiredPhone numbers in E.164 format (e.g. +14155552671). Max 100,000 per run.
includeProfilePicbooleantrueFetch profile picture URL
includeAboutbooleantrueFetch about/status text
includeCarrierbooleanfalseGet carrier and line type info
includeLeaksbooleanfalseCheck breach databases
includeFaceAnalysisbooleanfalseAI face detection on profile picture
includeRiskScorebooleanfalseCompute composite risk score (0–100)
preferCachebooleantrueUse cached results when available (faster & cheaper)
onlyCachebooleanfalseReturn only cached results, skip fresh lookups
concurrencyinteger5Parallel lookups (1–50)
timeoutMsinteger30000Timeout per number in milliseconds

Output

Each number produces one JSON record:

{
"number": "+14155552671",
"phoneInfo": {
"regionCode": "US",
"type": "MOBILE",
"isValid": true,
"formatted": {
"e164": "+14155552671",
"international": "+1 415-555-2671",
"national": "(415) 555-2671"
}
},
"exists": true,
"isBusiness": false,
"pushName": "Alex",
"urlImage": "https://pps.whatsapp.net/v/...",
"about": "Available",
"carrier": {
"country": "United States",
"regionCode": "US",
"lineType": "MOBILE",
"isMobile": true
},
"leakedData": {
"found": true,
"sources": ["Collection #1 2019", "Facebook 2021"],
"totalResults": 2,
"entries": [...]
},
"faceAnalysis": {
"hasFace": true,
"faceCount": 1,
"age": { "min": 25, "max": 32 },
"gender": "female",
"dominantEmotion": "neutral"
},
"profilePicHash": {
"hash": "10101100110010...",
"changed": false
},
"riskScore": {
"score": 75,
"category": "LOW_RISK",
"factors": [
{ "factor": "WhatsApp registered", "impact": 10 },
{ "factor": "Profile picture set", "impact": 5 },
{ "factor": "Display name set", "impact": 5 },
{ "factor": "Mobile number", "impact": 5 }
]
},
"source": "fresh",
"fetchedAt": "2026-05-05T09:00:00.000Z"
}

Output Fields Reference

FieldDescription
numberE.164 formatted phone number
phoneInfoCountry, type, all formatted variants
existstrue if registered on WhatsApp
isBusinesstrue if it's a WhatsApp Business account
pushNameDisplay name (if visible)
urlImageProfile picture URL (WhatsApp CDN)
aboutAbout/status text (if set)
carrierCountry, region, line type, mobile flag
leakedDataBreach results: found, sources, count, entries
faceAnalysisAI results: hasFace, age, gender, emotion
profilePicHashpHash + changed flag for tracking
riskScoreScore 0–100, category, contributing factors
sourcefresh, cache, not-found, or error
fetchedAtISO 8601 timestamp

Use Cases

🔍 Fraud Prevention — Flag VoIP numbers, breach-linked identities, and accounts with suspicious signals before they become a problem.

📋 Lead Verification — Confirm that numbers from your lead lists are real, active WhatsApp accounts before spending on outreach.

🛡️ Security Research — Monitor a set of numbers over time — detect when profile pictures change, new breach data appears, or accounts go dark.

📊 CRM Enrichment — Enrich your contact database with WhatsApp status, carrier type, profile pictures, and risk scores automatically.

🔎 OSINT Investigations — Build a quick intelligence profile on any phone number from a single API call.


First-Time Setup

  1. Set WA_PHONE_NUMBER in environment variables (your number without +, e.g. 14155552671)
  2. Run the actor — it saves a QR code to the Key-Value Store
  3. Scan the QR in WhatsApp: Settings → Linked Devices → Link a Device
  4. Done — the session is saved automatically and reused on every future run

The actor connects as a standard linked device, just like WhatsApp Web. Your phone and existing sessions are not affected.


FAQ

Do I need any API keys? No. Core features — WhatsApp verification, profile picture, display name, about text, carrier info, face analysis, pHash tracking, and risk score — all work with zero API keys.

What if a number isn't on WhatsApp? It returns exists: false with source: not-found. Enrichment fields are skipped and not charged.

How accurate is the face analysis? The model runs locally on the profile picture. If the photo is a logo, cartoon, or distant shot, it will return hasFace: false — this is expected and correct.

Can I process large lists? Yes — up to 100,000 numbers per run. Tune concurrency (up to 50) to balance speed and resources.

Is data cached between runs? Yes. Set preferCache: true (default) to reuse recent results and reduce cost. Use onlyCache: true to only return cached data without any fresh lookups.

How fast is it? A single lookup takes 1–3 seconds. At concurrency 10, expect ~300–500 numbers per minute.