Zapier phone number checks

In review — coming soon

Our 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

  1. Add an action step: Webhooks by Zapier › Custom Request.
  2. Method: POST. URL: https://api.mobilevalidate.com/v1/lookup.
  3. Data: the JSON body below. Insert the phone field from your trigger in place of the number.
  4. Headers: Authorization = Bearer followed by your API key, and Content-Type = application/json.
  5. Test the step. The response fields can then be used in Filter, Paths and later actions.
JSON
{"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):

Shell
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):

JSON
{
  "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.message and error.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.