WhatsApp Profile Photo Finder avatar

WhatsApp Profile Photo Finder

Pricing

from $5.40 / 1,000 photo delivereds

Go to Apify Store
WhatsApp Profile Photo Finder

WhatsApp Profile Photo Finder

Get the WhatsApp profile photo URL for phone numbers. Pay only when a photo is found. Bulk input, first 3 photos free.

Pricing

from $5.40 / 1,000 photo delivereds

Rating

0.0

(0)

Developer

Enrich-CRM

Enrich-CRM

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Retrieve the WhatsApp profile photo of a phone number when one is visible. You are charged only when a photo is actually returned.

Powered by Enrich-CRM · Every result timestamped (checked_at) · EU servers (Paris) · GDPR-minded


What does this Actor do?

Give it a list of phone numbers. For each one, the Actor looks up the WhatsApp profile photo and, when the photo is visible, returns a link to the image. When there is no photo to return, the row says why (the number is not on WhatsApp, no photo is set, the photo is hidden by privacy settings, or the lookup was temporarily unavailable), and that row is free.

Numbers are normalised to international format first, duplicates are removed, and every unique number produces exactly one row in the dataset.

Use cases

  • Put a recognisable face on your own customers' records in a CRM or support tool
  • Check that a contact's WhatsApp identity looks consistent with the person you expect before you reach out
  • Spot which numbers in a list have no usable profile photo, at no cost

Input parameters

ParameterDescriptionExample
phonesList of phone numbers to look up. Required unless phone is given.["+33612345678", "+14155552671"]
phoneA single phone number (alternative to phones).+33612345678
apiId(Optional) Your Enrich-CRM API key, for existing Enrich-CRM customers. Leave empty to use the built-in key (Apify charges apply).YOUR_KEY

Phone number format (E.164)

Numbers must be in international E.164 format: a +, the country code, then the national number without the leading zero, for example +33612345678 (France) or +14155552671 (USA). Between 7 and 15 digits in total.

The Actor tidies your input before the lookup: spaces, dots, dashes and parentheses are removed, and a leading 00 is read as +. So 00 33 6 12 34 56 78 and +33 6.12.34.56.78 both become +33612345678. Anything that still does not look like a phone number is reported as an error row and is never charged.

Identical numbers (after tidying) are looked up once per run.

Input example

{
"phones": ["+33612345678", "+14155552671"]
}

Output example

One row per unique number, saved to the default dataset. A photo was found for the first number, none for the second:

[
{
"phone": "+33612345678",
"photo_status": "ok",
"photo_url": "https://api.enrich-crm.com/wa-photo/3f2a9c0d5b7e4a1f8c6d2e9b0a4f7c13d5e8b1a2c4f6e8d0b2a4c6e8f0a1b3c5.jpg",
"captured_at": "2026-10-27T09:59:58Z",
"checked_at": "2026-10-27T10:00:00Z",
"correlationId": "5b1f0c2e-0000-0000-0000-000000000000",
"_success": true,
"_input": "+33612345678"
},
{
"phone": "+14155552671",
"photo_status": "not_set",
"photo_url": null,
"captured_at": null,
"checked_at": "2026-10-27T10:00:01Z",
"correlationId": "5b1f0c2e-0000-0000-0000-000000000001",
"_success": true,
"_input": "+14155552671"
}
]

A number that cannot be processed produces an error row instead:

{
"_success": false,
"_input": "12ab",
"phone": "12ab",
"_error": "Invalid phone number: expected international E.164 format, for example +33612345678."
}

Response fields

FieldTypeDescription
phonestringThe number as looked up, normalised
photo_statusstringOutcome of the lookup, see the table below
photo_urlstring or nullLink to the photo image when photo_status is ok, otherwise null
captured_atstring or nullWhen the photo was retrieved (RFC 3339, UTC), null without photo
checked_atstringTime of the live lookup (RFC 3339, UTC)
correlationIdstringReference of the lookup, useful for support requests
_successbooleantrue when the lookup was answered (with or without photo), false for an error row
_inputstringThe value exactly as you provided it
_errorstringOnly on error rows: what went wrong

photo_status values

ValueMeaningCharged?
okA photo is visible and photo_url links to itYes
not_on_whatsappThe number is not registered on WhatsAppNo
not_setThe account has no profile photoNo
unauthorizedA photo may exist but is not visible to us (privacy settings)No
temporarily_unavailableThe lookup could not be completed right now, try again laterNo

Pricing

ModelCost
Free trialFirst 3 results free on this Actor, per Apify account
Photo delivered$0.009 per photo on the Apify Free plan, down to $0.0036 on higher Apify plans — charged only when a photo is returned; numbers without a visible photo are free
Run start$0.00005 per run
Existing Enrich-CRM customersEnter your apiId: lookups use your Enrich-CRM credits and are not charged through Apify

Only rows with photo_status equal to ok and a photo_url count as results. Rows without photo, invalid numbers, duplicates and technical errors are never charged and never use up the free trial.


Use with Clay, Zapier, Make, n8n or the API

Every run is a standard Apify run, so it plugs into the usual tools through the Apify integrations:

  • Clay, Zapier, Make, n8n — use the Apify integration of your tool, run this Actor with a phones list, then read the dataset rows (phone, photo_status, photo_url).
  • API and webhooks — start a run with the Apify API, wait for it to finish (or use a webhook), then fetch the dataset items as JSON, CSV or Excel.
  • Schedules — refresh photos periodically with an Apify schedule.

Good to know

  • photo_url points to an image file you can open or download. Download the images you need to keep.
  • A photo that is hidden by the person's privacy settings cannot be retrieved. That is reported as unauthorized, at no cost.
  • Large lists are processed one number at a time. If a run is about to hit its time limit, the Actor stops cleanly, keeps the rows already produced and tells you how many numbers were left, so you can run those separately.
  • Temporary capacity errors are retried automatically.

Responsible use

A profile photo linked to a phone number is personal data under the GDPR and similar laws. Use this Actor only where you have a lawful basis, for example verifying or completing the contact details of your own customers. Respect opt-outs and privacy choices: do not use photos to profile, harass or impersonate anyone, and do not republish them. You are responsible for complying with the laws and the terms of service that apply to you.

Not affiliated with WhatsApp or Meta.