What phone validation actually costs
Phone validation is priced per lookup almost everywhere, which makes it cheap to try and surprisingly expensive to operate. The unit price looks trivial. The bill is a function of list size times how often you re-run, and the second term is the one people forget.
Published rates
Checked September 2026. Providers change pricing — verify current rates before you rely on these.
| Provider | Product | Rate |
|---|---|---|
| Twilio | Lookup — Line Type Intelligence | $0.008 / request |
| Telnyx | Number Lookup | from $0.0015 / query ($0.0025 with MCC/MNC) |
| Numverify | Enterprise plan | $129.99 / month, capped at 250,000 requests |
Worked example: 100,000 numbers
| Provider | One run | Weekly, one month |
|---|---|---|
| Twilio Lookup | $800 | $3,200 |
| Telnyx | $150 – $250 | $600 – $1,000 |
| Numverify Enterprise | $129.99/mo, but 400,000 requests exceeds the 250,000 cap | |
The re-run column is the point. Validation is not a one-time event: the list grows, contacts get re-exported, and a list validated in January is materially stale by June. Whatever your first run costs, budget for it repeatedly.
Where the money actually goes
Here is the part that changes the arithmetic. On a typical messy list — bought, scraped, form-filled, or merged across systems — a large share of rows can be ruled out without any API call at all:
- Duplicates, once numbers are normalised to a canonical form
- Malformed numbers: wrong length, stray trunk prefix, junk characters
- Numbers in blocks the numbering authority never allocated
- Landlines, in the many countries whose plan separates them by range
All four are answerable from published numbering-plan data — deterministic,
instant, no per-row cost. Paying $0.008 to be told that
+1 999 999 9999 is not a real number is paying for arithmetic you
could have done locally.
The two-pass approach
Filter locally first, then spend on what survives:
100,000 raw rows
- 8,000 duplicates free
- 6,000 malformed free
- 14,000 unallocated blocks free
- 12,000 landlines free
------------------------------------
60,000 to live lookup $480 at Twilio rates
(vs $800 unfiltered)
The proportions vary enormously by list — a double-opted-in list from your own signup form will barely move, a scraped list can lose more than half. The principle holds either way: never pay per lookup for a number that a free check already ruled out.
When a live lookup is still worth it
Local data has a real boundary, and being straight about it matters more than the sales pitch:
- Ported numbers. Block data reflects the original assignment. A number that moved carriers reads as its old one. Live lookup resolves this; local data cannot.
- Current carrier for a specific segment, where routing or compliance depends on getting it exactly right.
- Caller-name (CNAM) data, which is not in numbering-plan data at all.
So the answer is not "APIs are a rip-off". It is that they are priced for resolving genuine ambiguity, and most of a raw list is not ambiguous — it is plainly, checkably dead.
The other cost
Beyond the lookup bill: sending to a dead list costs you the messages, and it costs you carrier reputation. Delivery-failure rates feed into how carriers treat your traffic, and a throttled or filtered sender is a much larger problem than a validation invoice. That cost does not appear on any provider's pricing page, which is precisely why it gets left out of the calculation.
Try it on a number right now
The free checker on the homepage runs the same engine the desktop app uses — validity, country, line type and carrier, one number at a time.
Check a number free