WhatsApp Profile Avatar API - Age & Gender
Pricing
from $4.50 / 1,000 profiles
WhatsApp Profile Avatar API - Age & Gender
Analyze WhatsApp phone numbers for profile avatar URL, WhatsApp presence, inferred age, gender, image category, hair color, and skin tone. Upload CSV/XLSX or paste numbers.
Pricing
from $4.50 / 1,000 profiles
Rating
0.0
(0)
Developer
ClearPath
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
WhatsApp Profile Avatar, Age & Gender API
Check WhatsApp phone numbers in bulk and enrich profiles with avatar-based signals.
The actor processes 100 to 10,000 unique numbers per real run. Larger inputs are deduped, then trimmed to the first 10,000 unique normalized numbers. It returns WhatsApp presence, avatar URL, avatar analysis status, estimated age, inferred gender, image category, hair color, and skin tone.
Age, gender, hair color, and skin tone are inferred from profile images. Treat them as enrichment signals, not verified demographic facts.
| Analyze up to 10,000 WhatsApp numbers per run with avatar URL, WhatsApp presence, inferred age/gender, image category, hair color, and skin tone in one result file. |
| Clearpath Phone Intelligence • Bulk validation and profile enrichment for messaging platforms | ||||
|
Bulk WhatsApp yes/no checks |
Bulk Telegram account checks |
Phone Active Status Checker Carrier-level active checks |
MAX Messenger Number Checker Bulk MAX account checks |
Social & Crypto Number Checker 25-platform account checks |
Copy to your AI assistant
Copy this block into ChatGPT, Codex, Cursor, or any LLM to start using this actor.
clearpath/whatsapp-profile-avatar-age-gender-api on Apify. Call: ApifyClient("TOKEN").actor("clearpath/whatsapp-profile-avatar-age-gender-api").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: testMode (boolean sample output), phoneNumbers (array of phone numbers) or csvFile (CSV/XLSX upload URL or key), defaultCountryCode (prepend country code for numbers without +), onlyWhatsappUsers (boolean filter). Full actor spec (input schema with all params/enums/defaults, output dataset fields, README): GET https://api.apify.com/v2/acts/clearpath~whatsapp-profile-avatar-age-gender-api/builds/default (Bearer TOKEN) → inputSchema (JSON string, parse it), actorDefinition.storages.dataset.views.overview.transformation.fields (output field list), readme. Real runs require testMode=false and at least 100 unique normalized numbers; inputs above 10,000 unique numbers are trimmed to the first 10,000 after dedupe. Get token: https://console.apify.com/account/integrations
Quick Start
Preview sample output without charges:
{"testMode": true,"phoneNumbers": ["+14155552671"]}
Analyze a direct list:
{"testMode": false,"phoneNumbers": ["+14155552671","+442071234567"],"onlyWhatsappUsers": false}
Upload CSV/XLSX and apply a default country code:
{"testMode": false,"csvFile": "uploaded-file.csv","defaultCountryCode": "1","onlyWhatsappUsers": true}
Input
For real runs, at least one of phoneNumbers or csvFile is required.
The actor is fully hosted on Apify. You provide phone numbers or an uploaded file; no extra credentials are required.
| Parameter | Type | Description |
|---|---|---|
testMode | boolean | Returns sample output without analyzing real numbers or charging credits. |
phoneNumbers | array | Phone numbers with country code. Real runs require at least 100 unique numbers and process the first 10,000 after dedupe. |
csvFile | string | Uploaded CSV or Excel file with phone numbers. |
defaultCountryCode | string | Country code to prepend to numbers without a + prefix. |
onlyWhatsappUsers | boolean | Output only numbers where hasWhatsapp is true. |
Output
{"phoneNumber": "+14155552671","originalInput": "+1 415 555 2671","countryCode": "US","isValidFormat": true,"hasWhatsapp": true,"hasAvatar": true,"avatarUrl": "https://placehold.co/128x128.jpg","avatarAnalysisStatus": "analyzed","estimatedAge": 34,"inferredGender": "female","profileImageCategory": "individual_portrait","hairColor": "black","skinTone": "fair","checkedAt": "2026-06-09T08:00:00Z"}
Output Fields
| Field | Description |
|---|---|
phoneNumber | Normalized E.164 phone number. |
originalInput | Original value supplied by the user. |
countryCode | Detected country code. |
isValidFormat | Whether the number has a 7-15 digit format. |
hasWhatsapp | Whether the number has WhatsApp. |
hasAvatar | Whether an analyzable avatar URL was returned. |
avatarUrl | WhatsApp avatar image URL when available. |
avatarAnalysisStatus | analyzed, no_avatar, not_on_whatsapp, or unknown. |
estimatedAge | Inferred age from the profile image. |
inferredGender | male, female, unknown, or null. |
profileImageCategory | Inferred image category such as individual_portrait, group_photo, cartoon_avatar, or object. |
hairColor | Inferred hair color from the profile image. |
skinTone | Inferred skin color or tone from the profile image. |
checkedAt | ISO timestamp of analysis. |
Pricing
The actor uses pay-per-event pricing with one profile_analyzed event per analyzed number.
Current planned rates per 1,000 analyzed numbers:
| Plan | Price per 1,000 |
|---|---|
| No subscription / Bronze | $9.00 / $7.50 |
| Silver | $6.00 |
| Gold and above | $4.50 |
Duplicates are removed before analysis, so you pay for unique numbers analyzed.
Notes
- Rows without an analyzable profile image are mapped to
avatarAnalysisStatus = no_avatar. - Unknown result values are normalized to
unknownornull. - Uploaded CSV/XLSX files can use common phone columns such as
phone,mobile,telephone, orwhatsapp. onlyWhatsappUsersfilters output rows, but billing still applies to every analyzed number.