Skip to content
Search/
CyberMax › Answers

How to validate phone numbers in bulk (and find the mobile ones)

Updated 2026-11-13 · Data and API builders · by CyberMax

Short answer

Parse each number against its country's official numbering plan: that tells you whether it is valid, its standard E.164 form, and whether the range is mobile, landline, VoIP or toll-free. Dialvett on Apify does this for lists, free text or a dataset column at $0.0006 per number; duplicates and blanks are free.

  1. Paste your numbers (any format) into phoneNumbers, or pick a scraper dataset and set phoneField (phone, phoneNumber, contact.phone).
  2. Set defaultCountry for numbers written without a + country code (US, GB, DE, BR ...).
  3. Turn on onlyValid and onlyMobile if you only want SMS-ready numbers.
  4. Run. Each number comes back as valid/invalid with the reason, e164, international and national format, type, country, carrier, location and time zones.
  5. Import the e164 column into your CRM or dialler: it is the format every phone system accepts.

Copy-paste code

Python (pip install apify-client)

import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("cybermax/phone-number-validator").call(run_input={"phoneNumbers": ["+1 650-253-0000", "020 7946 0958"], "defaultCountry": "GB"})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row)

Chain after any scraper (Apify Integrations -> Run Actor)

{
  "datasetId": "{{resource.defaultDatasetId}}",
  "phoneField": "phone",
  "defaultCountry": "US",
  "onlyValid": true
}

No code: n8n, Make or Zapier

n8n: HTTP Request node (or the Apify node, action "Run an Actor and get dataset")
Method:  POST
URL:     https://api.apify.com/v2/acts/cybermax~phone-number-validator/run-sync-get-dataset-items
Auth:    Header Auth  ->  Authorization: Bearer <your Apify token>
Body:    JSON  {"phoneNumbers": ["+1 650-253-0000"], "defaultCountry": "US"}

Make:    Apify app -> "Run an Actor" (Actor: cybermax/phone-number-validator, wait for finish = yes) -> "Get Dataset Items"
Zapier:  Apify app -> action "Run Actor" (cybermax/phone-number-validator) -> "Fetch Dataset Items" -> your app
Runs longer than 5 minutes: start with POST /v2/acts/cybermax~phone-number-validator/runs and read the dataset when the run finishes.

From an AI agent (MCP)

# Any MCP client (Claude Desktop, Claude Code, Cursor, VS Code): Apify's hosted MCP server
{
  "mcpServers": {
    "phone-number-validator": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.apify.com/?tools=cybermax/phone-number-validator",
               "--header", "Authorization: Bearer ${APIFY_TOKEN}"],
      "env": { "APIFY_TOKEN": "<your Apify token>" }
    }
  }
}
# The agent sees one tool, cybermax--phone-number-validator, with the Actor's input schema.
Real run on Apify (10 Nov 2026: list, text and a dataset column; 2.0 s)
inputvalide164typecountrycarrier / location
+1 650-253-0000true+16502530000landline_or_mobileUSMountain View, CA
+61 491 570 006true+61491570006mobileAUTelstra
+49 30 901820true+4930901820landlineDEBerlin
555-0100falseUS

Source: Dialvett (Apify Actor cybermax/phone-number-validator) README, real Apify run on 10 Nov 2026

Run Dialvett on ApifyHollerdex: website contact finder

Valid, possible and connected are different things

A possible number has the right length for its country. A valid number is also in a range the country has assigned. Neither proves the line is connected today: only a call or a carrier HLR query can, and those cost far more per number.

Why E.164 matters

E.164 (+16502530000) is the one format every CRM, dialler and SMS gateway accepts. Normalising to it also reveals duplicates written two ways, such as (650) 253-0000 and +1 650 253 0000.

Mobile or landline

Most countries give mobiles their own ranges, so the number shows the line type. The US and Canada do not: their numbers come back as landline_or_mobile.

Good to know

The carrier is the one the number range was first assigned to; ported numbers keep their original carrier in this data.

Dialvett never looks up who owns a number.

Hollerdex icon

Hollerdex: Any company's best email, phone and socials

$0.004 per domain with contacts, misses and blocked sites free

Need phone numbers to check? Hollerdex finds each company website's emails, phones and contact page in one run.

Runs on your own Apify account, pay per result; failed results are not charged.

Questions

Is it free to try?

Yes. Run it with no input for a free demo; Apify's free plan includes $5 of monthly credit, enough for about 8,000 numbers.

Can it read numbers from my Google Maps scraper results?

Yes. Pick that run's dataset and set phoneField to phone; each row comes back with phoneValid, phoneE164, phoneType and phoneCarrier added.

Which countries?

Every country in the international numbering plan.

Can an AI agent use it?

Yes. Apify's MCP server exposes it as cybermax--phone-number-validator.

Free: the Free API Starter Kit

Copy-paste calls for 4 APIs with free daily tiers (CVE priority, VIN recalls, US duty rates, email checks), then 5 short emails on KEV/EPSS, MCP and free data.

You get one email to confirm first. Then the kit, and 5 short emails over two weeks. One-click unsubscribe in every email; we never share your address.

Compare the options

Hollerdex vs vdrmota Contact Details Scraper and khadinakbar Contact Details Scraper: company contact details scrapers comparedHollerdex vs two contact details scrapers on Apify: live prices (per domain or per page), labelled company ema

Related answers

How to find the contact email, phone and socials for a list of company domainsGet each company's published email, phone, socials and contact page from its own site, for a whole list of domHow to merge datasets and remove duplicate rows from many Apify runsCombine the results of many scraper runs into one clean list: dedupe by URL, name or phone, fill blanks, keep