Guides

Best phone number validation APIs in 2026: a criteria-based comparison

Eight phone validation and lookup APIs compared on public, dated evidence: data fields, price at 10,000 lookups, billing of failed lookups, SDKs and MCP, plus a bake-off script.

By Published 12 min readHow we research and fact-check

On this page

The best phone number validation API depends on the job. Forms need format and line type, SMS senders need live reachability, account-security teams need SIM-swap data, and channel routing needs messaging-app presence. No single API leads on all four. The table below compares eight APIs on public, dated evidence and says where each one is strongest.

Disclosure: we make MobileValidate, one of the APIs compared. Every competitor fact below comes from the provider's own public pricing or documentation page, fetched on 26 September 2026 and linked. We re-checked every list price on 3 November 2026, and none had changed. Prices are USD list prices before discounts. Where a provider doesn't publish a price or a policy, we say so rather than guess. We'll refresh this page every quarter. If you spot an error, tell us and we'll fix it.

What should a phone validation API return in 2026?

"Phone validation" covers five different questions. Decide which ones you need before comparing providers:

QuestionDataTypical buyer
Is the number well formed and in an allocated range?Format validation, E.164 normalizationEvery sign-up form
What kind of line is it, on which network?Line type (mobile, landline, VoIP), carrier, portingSMS senders, fraud teams
Is it reachable right now?Live network status (HLR or line status)SMS cost control, list cleaning
Is the person still the owner?SIM swap, identity match, reassigned numberBanks, account-takeover defence
Which messaging apps can reach it?Registration on WhatsApp, Telegram and othersChannel selection, OTP routing

Then weigh the criteria that separate good APIs from cheap ones: coverage per country, what you pay for unknown answers, latency, freshness, privacy and developer tooling. Our buyer's checklist explains each criterion in depth. This page applies the criteria to real products.

A comparison matrix of four generic provider columns against criteria rows for line type, live status, porting, messaging apps, SIM swap, MCP and price per 10,000 lookups, with one column highlighted.A comparison matrix of four generic provider columns against criteria rows for line type, live status, porting, messaging apps, SIM swap, MCP and price per 10,000 lookups, with one column highlighted.
Pick a phone validation API by the job it must do, then run a bake-off on your own numbers.

How do the leading APIs compare?

Main data offered, list price for 10,000 carrier and line type lookups, and what the public pages say about billing for failed lookups. "Not stated" means we couldn't find it on a public page, not that the provider lacks a policy.

APILine type and carrierLive statusSIM swap / identityMessaging-app presence10,000 lookups (list)Failed-lookup billing (public)
Telesign Phone IDYes, $0.011Deactivation status listed on the product pageSIM-swapped, ported-out, call-forwarded signals listed on the product page; other attributes priced through salesNo$110Not stated
Plivo LookupYes, $0.004NoNoNo$40Not stated
Sinch Number LookupYes (port-corrected in US/CA)NoSIM swap (beta, US/CA); reassigned numbers (beta, US)NoNot publicNot stated
Telnyx Number LookupYes, MCC/MNC $0.0025; LRN $0.0015NoNoNo$25 (MCC/MNC)Not stated
NumverifyYesNoNoNo$59.99/month plan (50,000 requests)Every request counts
Abstract APIYesLine status fieldNo (risk level on the Professional plan)No ("messaging" data in the docs is the carrier's email-to-SMS gateway)Plans from $17/month billed annually (60,000 requests a year); larger tiers on the pageEvery request counts, including invalid input
VeriphoneValidation plus carrier; live current carrier costs 10 creditsNoNoNo$12.99–24 for validation; $99 (Business plan) or $119 in credits for live carrierInvalid numbers charged; non-phone input free; unresolved live carrier charged 1 credit
MobileValidateYes, $0.003 real time, $0.0015 bulk (beta)Yes, HLR lookup $0.006 real time, $0.005 bulkNoYes, 11 messaging-app checks$30 real time, $15 bulkUnknown, unsupported, timed-out, invalid and duplicate results are free

Our own figures are our prices on 6 November 2026 (unchanged since 17 October 2026); current prices are on the pricing page and in our live catalog (GET /v1/services). IPQualityScore is left out because its pricing and docs returned HTTP 403 when we fetched them.

Developer tooling, from the same pages:

APIOfficial SDKsMCP server that calls the APIBulk / CSV
Telesign"7 programming languages" (not listed)None foundNot stated
PlivoPython, Node.js, Java, Go, .NET, PHP, RubyDocumentation-only serverNot stated
SinchJava, Node.js, Python, .NETYesNot stated
TelnyxNode/TypeScript, Python, Go, Java, Ruby, PHPYes (package and hosted)Not stated
NumverifyNone foundNone foundNot stated
Abstract APINot verifiedNone foundCSV upload on paid plans
VeriphoneNot verifiedYes, hostedCSV upload on all plans
MobileValidateTypeScript, Python, CLIYes, hosted and localBulk jobs up to 50,000 rows

Where is each API strongest?

A fair summary, based on the tables above:

APIStrongest atConsider something else when
Telesign Phone IDRisk-oriented number attributes such as SIM-swapped and ported-out signalsYou only need format and line type
Plivo LookupSimple carrier and line type at a low per-request priceYou need live status or porting outside US/CA
Sinch Number LookupPort-corrected carrier and SIM swap for US/CAYou need public pricing, or are outside North America
Telnyx Number LookupLowest public per-query carrier (MCC/MNC) and LRN pricesYou need identity or SIM-swap data
NumverifySimple monthly plans with a free non-commercial tierYou need live status or pay-per-lookup billing
Abstract APIOne call with validity, line type, risk level and more on higher plansInvalid input must not use up credits
VeriphoneVery low validation price, 1,000 free credits a monthYou need SIM-swap or identity data
MobileValidateMessaging-app presence (WhatsApp, Telegram, Viber and more) plus carrier in one request; unknown results freeYou need SIM swap, identity match or reassigned numbers

We make no accuracy claims for anyone, including ourselves. Headline accuracy figures are not comparable across providers, and "99% accurate" means nothing without the country, the sample and the definition of unknown. Measure accuracy yourself, with the bake-off below.

Which is best for sign-up forms?

For forms, you need three things: fast format validation, line type (to spot VoIP or landlines where you expect a mobile), and predictable cost at peak traffic.

  • Start free. Validate format and normalize to E.164 in your own code with a maintained library before calling any API. Our phone validation in code guide shows how.
  • Add line type on the server side. Telnyx ($0.0025), MobileValidate ($0.003 real time from 17 October 2026, beta) and Plivo ($0.004) have the lowest public per-request prices for carrier and line type in this comparison. Veriphone is cheapest if you only need validity and carrier from reference data.
  • Mind what failures cost. Forms receive junk input. If every request is billed, including invalid input, bot traffic becomes an expense. Check each provider's policy. Abstract states that invalid input uses a credit, Veriphone doesn't charge for input that isn't a phone number, and we don't charge for invalid numbers or unknown answers.

Use line type as a reason for an extra step, not an automatic block. Many real users have VoIP numbers (VoIP detection at sign-up).

Which is best for SMS cost reduction?

To cut SMS spend, you need to drop numbers that can't receive a message before you send: landlines, unallocated ranges and, ideally, disconnected numbers.

  • Line type removes landlines and toll-free numbers. Every API here offers it.
  • Live status catches mobile numbers that are switched off or no longer in service. Among the APIs compared here, Abstract documents a line status field and Telesign lists deactivation status. Our HLR lookup returns reachable, unreachable or not assigned for mobile numbers, billed per conclusive answer (current price), with unknown answers free.
  • Channel choice is the other lever. Sending an OTP on WhatsApp where the user has it can cost less than SMS in many markets (WhatsApp OTP vs SMS OTP). Messaging-app presence checks are where MobileValidate is different: WhatsApp from $0.25 per 1,000 numbers in bulk ($0.00025 each), and Telegram, Viber and other apps in the same bulk job.

For bulk list cleaning, compare cost per conclusive answer, not per request. A cheap lookup that returns unknown for a third of your list, and bills it, costs more than it looks. Our bulk list-cleaning guide walks through it.

Which is best for choosing a messaging channel?

To decide whether to send a code or a notification by SMS, WhatsApp or another app, you need to know which apps the number is registered on. Of the other APIs in this comparison, only Abstract lists "messaging" data, and its documentation shows that as the carrier's email-to-SMS gateway address, not app registration. The others don't list messaging-app presence at all. So this is the job where MobileValidate is the clearest option here.

One request or bulk job can combine several checks. List prices per number (our prices on 6 November 2026; see pricing for current prices):

CheckReal timeBulkPer 10,000 in bulk
WhatsApp registration$0.004$0.00025$2.50
Telegram registration$0.001$0.0003$3.00
Viber registrationbulk only$0.00015$1.50
RCS capabilitybulk only$0.0005$5.00
Carrier and line type (beta)$0.003$0.0015$15.00

Bulk prices apply per country in a job. WhatsApp checks get the bulk price for groups of at least 132 numbers from one country; smaller groups are priced at the real-time price. Bulk-only checks such as Viber and RCS are billed at least the price of 500 checks for each country that returns an answer, so a short list spread over many countries costs more per number. The free estimate shows both before a job runs.

Each check answers registered: true, false or null (unknown) with a checked_at time. Unknown answers, unsupported countries, timeouts, invalid numbers and duplicates are not billed, and repeat checks inside the freshness window come from your account's cache for free. The checks never return names, photos or profiles. They say whether an account exists, nothing more.

The limits, stated plainly: presence is not activity (a registered account may be rarely used), answers can be unknown, and some checks run in bulk only. Our channel selection page shows the routing flow.

Which is best for account-takeover defence?

Not us. Account-takeover defence depends on ownership signals: was the SIM swapped recently, does the number still belong to this person, has it been reassigned? MobileValidate doesn't sell SIM-swap, identity-match or reassigned-number data.

The APIs to evaluate for this job:

  • Telesign Phone ID: SIM-swapped, ported-out and call-forwarded signals.
  • Sinch: SIM swap (beta, US/CA) and the US Reassigned Numbers Database (beta).

Operators also expose these signals directly through the CAMARA open APIs. SimSwap's latest release is r4.3 (sim-swap API v2.2.0, 30 October 2026), and NumberVerification's is r4.2 (API v2.1.1, 19 October 2026) (CAMARA SimSwap; CAMARA NumberVerification). Availability depends on the operator and the aggregator you contract with. Our SIM-swap fraud signals post explains how to use them.

Where we fit in this flow: as a cheap first filter (line type, messaging-app presence) before a paid ownership check. Not as a replacement for one.

Which is best for AI agents (MCP)?

If an AI agent will call the API, look at more than "has an MCP server". Check three things:

  1. Does the server call the API, or only search the docs? Plivo's server and one of Sinch's servers are documentation-only. Telnyx, Sinch, Veriphone and MobileValidate publish servers that make real calls.
  2. Can you cap spend? An agent in a loop can burn through credit. Look for scoped keys with daily spend caps and a confirmation step for large calls.
  3. Is the output structured? Agents act on true, false and null, not on free text.

Our MCP server accepts only agent keys (scoped and spend-capped) and test keys, never live keys. Calls above a confirmation threshold (USD 1.00 by default) must be repeated with the confirmed amount. For agents, that design matters more than the price per lookup. If your agent needs SIM-swap data, pair a Sinch server with a capped key of your own.

How do I run a fair bake-off?

Test two or three candidates on the same labelled sample: a few hundred numbers you hold with a lawful basis, across your main countries, where you know the truth (recent deliveries, confirmed mobiles, known landlines). Measure the unknown rate, agreement with your labels and latency.

Node.js (18+). Each provider gets a small adapter that returns true, false or null:

JavaScript
// bakeoff.mjs: node bakeoff.mjs sample.csv   (CSV: e164,label  where label is mobile|not_mobile)
import { readFileSync } from "node:fs";

const providers = {
  mobilevalidate: async (e164) => {
    const r = await fetch("https://api.mobilevalidate.com/v1/lookup", {
      method: "POST",
      headers: { Authorization: `Bearer ${process.env.MOBILEVALIDATE_API_KEY}`, "Content-Type": "application/json" },
      body: JSON.stringify({ numbers: [e164], checks: ["carrier"], wait: 10 }),
    }).then((x) => x.json());
    const c = r.results?.[0]?.checks?.["network.carrier"]; // pending or unknown → null
    const lt = c?.status === "completed" ? c.attributes?.line_type : null;
    return lt == null ? null : lt === "mobile";
  },
  // other: async (e164) => { /* call the other provider, return true / false / null */ },
};

const rows = readFileSync(process.argv[2], "utf8").trim().split("\n").slice(1).map((l) => l.split(","));
for (const [name, check] of Object.entries(providers)) {
  let unknown = 0, agree = 0, known = 0; const ms = [];
  for (const [e164, label] of rows) {
    const t = performance.now();
    const v = await check(e164).catch(() => null);
    ms.push(performance.now() - t);
    if (v === null) { unknown++; continue; }
    known++; if (v === (label === "mobile")) agree++;
  }
  ms.sort((a, b) => a - b);
  console.log(name, { n: rows.length, unknownRate: unknown / rows.length, agreement: known ? agree / known : null,
    p50ms: Math.round(ms[Math.floor(ms.length * 0.5)]), p95ms: Math.round(ms[Math.floor(ms.length * 0.95)]) });
}

Python (3.9+), same idea:

Python
# bakeoff.py: python bakeoff.py sample.csv
import csv, os, statistics, sys, time
import httpx

def mobilevalidate(e164):
    r = httpx.post("https://api.mobilevalidate.com/v1/lookup", timeout=30,
                   headers={"Authorization": f"Bearer {os.environ['MOBILEVALIDATE_API_KEY']}"},
                   json={"numbers": [e164], "checks": ["carrier"], "wait": 10}).json()
    c = ((r.get("results") or [{}])[0].get("checks") or {}).get("network.carrier") or {}  # pending or unknown -> None
    lt = (c.get("attributes") or {}).get("line_type") if c.get("status") == "completed" else None
    return None if lt is None else lt == "mobile"

PROVIDERS = {"mobilevalidate": mobilevalidate}  # add adapters for the providers you test

rows = list(csv.DictReader(open(sys.argv[1])))
for name, check in PROVIDERS.items():
    unknown = agree = known = 0; ms = []
    for row in rows:
        t = time.perf_counter()
        try: v = check(row["e164"])
        except Exception: v = None
        ms.append((time.perf_counter() - t) * 1000)
        if v is None: unknown += 1; continue
        known += 1; agree += v == (row["label"] == "mobile")
    q = statistics.quantiles(ms, n=20)
    print(name, dict(n=len(rows), unknown_rate=unknown / len(rows), agreement=agree / known if known else None,
                     p50_ms=round(statistics.median(ms)), p95_ms=round(q[18])))

Check the response shape against each provider's docs before trusting the numbers. Our lookups reference documents ours. Then compare cost per conclusive answer: the invoice total divided by the answers that weren't unknown. Run the test from the region your servers are in, at the time of day your traffic peaks. Test keys return fixed answers, so use live keys on your labelled sample for the real measurement. For a quick spot check first, every account can run up to 5 phone numbers and 5 e-mail addresses through the real-time checks for free on the dashboard's Try it page.

How did we build this comparison?

We followed a fixed method so the table can be checked and repeated:

  1. Criteria first. The five questions and the criteria come from our buyer's checklist, written before any provider was scored.
  2. Public sources only. Every competitor fact comes from the provider's own pricing or documentation page, fetched on 26 September 2026 and linked in the table. We didn't use third-party roundups or competitors' comparison tables about each other.
  3. List prices, like for like. "10,000 lookups" means the list price for 10,000 carrier and line type lookups, or the smallest monthly plan that covers them. Volume discounts, contracts and taxes are excluded.
  4. No guessing. Where a page didn't state a price or a policy, the cell says "not stated", "not public" or "not verified".
  5. Exclusions. We left out providers whose pages we couldn't fetch, and providers whose main product is outside phone validation. Absence from the table is not a judgement.
  6. Our own row uses the same rules. Our prices come from the live catalog, and the rows where we are weaker (SIM swap, identity, live status) are shown as they are.

Prices and features change often. We'll re-fetch every source each quarter and update the date at the top.

What are the key takeaways?

  • Pick by job: format and line type for forms, live status for SMS cost, ownership signals (SIM swap, identity, reassignment) for account security, messaging-app presence for channel choice.
  • On public list prices fetched on 26 September 2026, 10,000 carrier and line type lookups from the other APIs compared cost from $25 (Telnyx) to $110 (Telesign Phone ID); ours cost $30 in real time (beta) at our prices from 17 October 2026.
  • Most providers don't publish whether failed lookups are billed. Ask, and check your first invoice.
  • For SIM swap, identity match and reassigned numbers, evaluate Telesign, Sinch or CAMARA-based operator APIs. MobileValidate doesn't offer these.
  • MobileValidate is strongest for messaging-app presence plus carrier in one request, with unknown results free and a spend-capped MCP server. Run the bake-off on your own numbers before you decide.

Sources

  1. Telesign identity pricing (fetched 26 September 2026) — Telesign, 2026
  2. Telesign Phone ID product page (fetched 26 September 2026) — Telesign, 2026
  3. Plivo Lookup API overview (fetched 26 September 2026) — Plivo, 2026
  4. Sinch Number Lookup API v2 overview (fetched 26 September 2026) — Sinch, 2026
  5. Telnyx Number Lookup pricing (fetched 26 September 2026) — Telnyx, 2026
  6. Numverify pricing (fetched 26 September 2026) — APILayer, 2026
  7. Abstract API phone validation and documentation (fetched 26 September 2026) — Abstract API, 2026
  8. Abstract Phone Intelligence API documentation (fetched 26 September 2026) — Abstract API, 2026
  9. Veriphone pricing and API v3 documentation (fetched 26 September 2026) — Veriphone, 2026
  10. CAMARA SimSwap releases (r4.3, 30 October 2026) — CAMARA project (Linux Foundation), 2026
  11. CAMARA NumberVerification releases (r4.2, 19 October 2026) — CAMARA project (Linux Foundation), 2026
  12. MobileValidate pricing and service catalog, GET /v1/services (current prices; figures on this page are the prices from 17 October 2026) — MobileValidate, 2026

Frequently asked questions

What is the best phone number validation API in 2026?

It depends on the job. For format and line type on sign-up forms, low-cost APIs such as Plivo, Telnyx or Veriphone are strong on price. For account-takeover defence, Telesign and Sinch offer SIM-swap-related data, and operators expose it through CAMARA APIs. For choosing a messaging channel, you need messaging-app presence, which MobileValidate offers. Compare them on your own numbers.

How much does a phone number lookup cost?

On public list prices fetched on 26 September 2026, a carrier and line type lookup from the other APIs compared here costs from $0.0025 (Telnyx MCC/MNC) to $0.011 (Telesign Phone ID) per request, so $25 to $110 for 10,000. MobileValidate's carrier check (beta) is $0.003 in real time from 17 October 2026; the pricing page shows current prices. Plan-based APIs such as Numverify and Abstract sell monthly bundles instead.

Do phone validation APIs charge for invalid or unknown results?

Policies differ, and most providers don't state them on their public pages. Abstract counts every request, including invalid input; Numverify counts every API request; Veriphone doesn't charge for input that isn't a phone number. MobileValidate doesn't charge for unknown, unsupported, timed-out, invalid or duplicate results.

Which phone lookup APIs have an MCP server?

As of 26 September 2026, Telnyx, Sinch, Veriphone and MobileValidate publish MCP servers that call their APIs. Plivo, Sinch and Telnyx also publish documentation-search MCP servers. Check what each server's tools can spend, and whether it accepts capped keys.

Is MobileValidate the best choice for SIM-swap detection?

No. MobileValidate doesn't sell SIM-swap, identity-match or reassigned-number data. Telesign and Sinch offer SIM-swap signals (Sinch in beta for US/CA), and operator networks expose it through the CAMARA SimSwap API.

All articles

Know before you send.

Create a free account: approved automatically, usually within 10–15 minutes.

Free to start: check 20 phone numbers and 10 e-mail addresses for real on your account, plus an unlimited test mode. You pay only for conclusive answers, from $20.