Zapier phone number checks
In review — coming soonOur Zapier app is in review and coming soon; this page will say when it is public. You can check numbers in a Zap today: the Webhooks by Zapier action sends one POST request to the MobileValidate API and returns the answer to the next steps, for example to tag a lead in your CRM. You pay only for conclusive answers.
Get a key for your Zap
Start with a test key and the test numbers, then switch to a live key. You pay only for conclusive answers.
Use Webhooks by Zapier today
- Add an action step: Webhooks by Zapier › Custom Request.
- Method:
POST. URL:https://api.mobilevalidate.com/v1/lookup. - Data: the JSON body below. Insert the phone field from your trigger in place of the number.
- Headers:
Authorization=Bearerfollowed by your API key, andContent-Type=application/json. - Test the step. The response fields can then be used in Filter, Paths and later actions.
{"numbers": ["+447700900001"], "checks": ["whatsapp", "carrier"], "wait": 20}Webhooks by Zapier is one of Zapier's premium apps; check that your Zapier plan includes it.
This is the same request as this curl call (it runs as pasted):
curl https://api.mobilevalidate.com/v1/lookup \
-H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
-H "Content-Type: application/json" \
-d '{"numbers": ["+447700900001"], "checks": ["whatsapp", "carrier"], "wait": 20}'Response (real sandbox output, trimmed):
{
"object": "lookup",
"status": "completed",
"results": [{
"e164": "+447700900001",
"country": "GB",
"number_status": "valid",
"checks": {
"whatsapp.registered": {"status": "completed", "registered": true, "checked_at": "2026-11-08T04:18:15.858Z", "billed": false},
"network.carrier": {"status": "completed", "registered": true, "attributes": {"line_type": "mobile", "carrier": "Test Carrier", "country": "GB"}, "billed": false}
}
}],
"billing": {"billed_units": 0, "cost": {"amount": "0", "currency": "USD"}},
"next": null
}Read these fields from the response: results[0].checks["whatsapp.registered"].registered (true, false, or null when the answer is not conclusive) and results[0].checks["network.carrier"].attributes.line_type. If status is "pending", an answer took longer than wait: call the URL in next.poll_url (GET, same header) after a short delay, or send the numbers as a bulk job instead.
- Test first. The example uses the public sandbox key, which answers only the documented test numbers and is never billed. Use your own test key, then a live key, from the dashboard.
- Cost. You pay per conclusive check; unknown, unsupported, invalid and duplicate results are free, and a repeat check within the freshness window is answered from cache at no charge. See pricing.
- Lists. For more than a few hundred numbers, send one bulk job (
POST /v1/jobs, bulk price) instead of one request per number. - Errors. Errors return JSON with
error.code,error.messageanderror.retryable; the error catalog lists every code.
Last updated
Frequently asked questions
Is there a MobileValidate app on Zapier?
It is in review and not public yet. Until then, Webhooks by Zapier calls the same API with the request on this page.
Can I filter leads by the answer?
Yes. Add a Filter or Paths step after the request, for example to continue only when registered is true, or when the carrier's line_type is mobile. Treat an empty value as unknown, not as no.
What if the answer takes longer than the step?
Most checks answer within a few seconds. With "wait": 20 the request waits up to 20 seconds; if an answer is still outstanding the response has status: "pending" and a next.poll_url. Add a Delay step and a second GET request to that URL, or check lists as a bulk job.
What do I pay?
Only conclusive checks, at our prices; inconclusive answers are free. Zapier tasks are billed by Zapier.

