n8n phone number checks

Coming soon

Our n8n community node, n8n-nodes-mobilevalidate, is coming soon; this page will say when it is published. You don't have to wait: n8n's built-in HTTP Request node calls the MobileValidate API today. One POST request checks a number against WhatsApp, carrier, HLR or any other check, and you pay only for conclusive answers. The setup is below.

Get a key for your workflow

Start with a test key and the test numbers, then switch to a live key. You pay only for conclusive answers.

Install the community node (once it is published)

Status: coming soon. The package is not published yet, so these steps don't work today. Use the HTTP Request node below in the meantime.

  1. In n8n, open Settings › Community nodes and choose Install.
  2. Enter the npm package name n8n-nodes-mobilevalidate, confirm that you understand the risks of installing unverified code, and choose Install.
  3. Add a node, search for MobileValidate, and create a credential with your API key (a test key to start).

Installing packages from npm works on self-hosted n8n. On n8n Cloud, only community nodes that n8n has verified can be installed.

Use the HTTP Request node today

  1. Add an HTTP Request node. Method: POST. URL: https://api.mobilevalidate.com/v1/lookup.
  2. Authentication: Generic Credential Type › Header Auth. Create a credential with Name Authorization and Value Bearer followed by your API key.
  3. Turn on Send Body, choose JSON, and enter the body below. Map the number from an earlier node with an expression, for example {{ $json.phone }}.
JSON
{"numbers": ["+447700900001"], "checks": ["whatsapp", "carrier"], "wait": 20}

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 the MobileValidate n8n node available?

Not yet: it is coming soon, and this page will be updated when it is published. Until then, the HTTP Request node calls the same API with the request shown on this page.

Does it work on n8n Cloud?

The HTTP Request node does, on every plan. Community nodes installed from npm need self-hosted n8n; n8n Cloud offers only the community nodes n8n has verified.

How do I check a whole list in n8n?

For a few hundred numbers, put up to 100 in one request's numbers array. For larger lists, create a bulk job with POST /v1/jobs, then read the results when the job.completed webhook arrives. A Webhook node can receive it.

What do I pay?

Only conclusive checks, at the prices on our site: unknown, unsupported, invalid and duplicate results are free. n8n itself is priced by n8n.