Phone Number Validation API: Library, Lookup API or Bulk Upload?
A phone number validation API comes in two kinds, and you should pick by what you need to know. If you only need to know whether a number can exist, its country and its E.164 form, use a free library like Google's libphonenumber in your own code: no API key, no per-request cost. If you need the real line type or carrier, such as whether a US number is a mobile, a landline or VoIP, you need a paid carrier lookup API, because that data lives with the phone networks. And if you're checking a list rather than numbers one at a time, a bulk upload is usually simpler than writing code at all.
The options at a glance
| Option | What it checks | Cost | Best for |
|---|---|---|---|
| Library (libphonenumber) | Format, country, E.164, line type by range | Free | Form validation, normalising data in your app |
| Hosted format API | The same, over HTTP | Free tier, then subscription | Stacks where you can't add a library |
| Carrier lookup API | Current carrier, real line type (mobile/landline/VoIP) | Per lookup | SMS sending, sign-up fraud checks |
| Bulk CSV upload | Format plus optional carrier lookup on every row | Flat plan | Lead lists, CRM clean-ups, one-off files |
Option 1: A library, not an API
For format validation, you don't need to call anyone. Google's open-source libphonenumber ships metadata for every country's numbering plan. It runs in your own process, so there's no latency, no rate limit and no bill. Ports exist for most languages:
- JavaScript:
libphonenumber-js(see validating phone numbers in JavaScript) - Python:
phonenumbers(see validating phone numbers in Python) - Java, C++ and others: the original library
What it gives you for each number:
| Field | Example for +33 6 12 34 56 78 |
|---|---|
| Valid? | Yes |
| Country | FR |
| E.164 | +33612345678 |
| National format | 06 12 34 56 78 |
| Line type by range | Mobile |
The one thing to keep on top of is updates. Countries change their numbering plans, and the library's metadata is updated regularly. Upgrade the package from time to time or new ranges will show as invalid.
Its limit is the same as any numbering-plan check: in the US and Canada it can only say "mobile or landline", and it can't see numbers ported to a different type of carrier. The free phone number validator on our site runs this library in your browser if you want to see the results first.
Option 2: A hosted format API
Hosted validation APIs wrap the same kind of numbering-plan check behind an HTTP endpoint. You send a number, you get back JSON with validity, country, formats and line type.
They make sense when you can't add a library: a no-code tool, a spreadsheet script, or a platform that only lets you call webhooks. Most have a free tier and then a monthly subscription for a set number of requests. In October 2026, for example, Numverify listed $14.99 a month and Abstract API $19 a month for 5,000 requests.
Before you pick one, check whether it actually does a live lookup or only a format check. Some services return a "carrier" field that's really the original block holder, not the carrier the number uses today.
Option 3: A carrier lookup API
A carrier lookup API reads live routing data: which network serves the number right now, and whether it's a mobile, a landline or VoIP. In the US and Canada that's the only way to separate mobiles from landlines, because they share area codes and numbers are ported between them. We explain why in phone carrier lookup and mobile vs landline lookup.
Carrier lookups are sold per request, because every one queries a database the networks pay to run. Prices are usually a fraction of a cent to about a cent; Twilio, for example, listed its line-type lookup at $0.008 per request in October 2026. Telnyx, Twilio and other telecom providers offer them alongside their calling and messaging APIs.
Use a carrier lookup API when:
- you're about to send SMS and need to drop landlines (validating numbers for SMS);
- you want to flag VoIP numbers at sign-up (checking if a number is VoIP);
- you need the current carrier for routing or fraud rules.
Always run a free format check first. There's no point paying for a lookup on a number with a missing digit.
Option 4: Bulk upload instead of an API
If your numbers live in a CSV, a CRM export or a lead list, an API is often the long way round. You'd write code to read the file, call the API for each row, handle rate limits and failures, and write a new file. A bulk validator does all of that in one upload.
That's what SimpleVerifier is built for. It works on files, not on per-request API calls:
- Upload a CSV on the verifier. The phone column is found automatically, and emails in the same file get a live mailbox check in the same pass.
- Every row gets
phone_status,phone_e164,phone_countryandphone_typefrom the numbering plan. Numbers without a country code are read as US numbers. - On the Email + Phone plan ($49.99/month), valid numbers also get a live carrier lookup, adding
phone_carrierandphone_line_type. You get 5,000 lookups a month, and failed lookups don't count against the allowance. - Download the full file or just the valid numbers.
The $29.99 Pro plan includes unlimited phone format checks, so you never pay per number for the format step. See bulk phone number validation for the full workflow.
How to choose
- Validating a form field as someone types? Use the library.
- Normalising numbers inside your app or database? Use the library.
- Deciding whether to text a US number in real time? Use a carrier lookup API.
- Cleaning a list of thousands of numbers? Upload it; no code needed.
None of these options tells you that a person answers a number today. Numbers are disconnected and reassigned without leaving their valid ranges. Validation removes numbers that can't be right; lookups tell you what kind of line a number is now.
Common questions
Is there a free phone number validation API?
The free option is a library rather than an API: Google's libphonenumber, with ports for most languages, validates numbers against every country's numbering plan inside your own code, at no cost per number. Hosted APIs that do the same format check usually have a small free tier. Carrier lookups, which need live network data, are paid everywhere.
What does a phone validation API return?
A format API returns whether the number is valid, its country, its E.164 and national formats, and the line type its range was allocated for. A carrier lookup API adds the current carrier and the real line type, such as mobile, landline or VoIP, read from routing data.
How much does a phone carrier lookup API cost?
Usually a fraction of a cent to about a cent per lookup. For example, Twilio listed its line-type lookup at $0.008 per request in October 2026. Subscription APIs bundle a monthly number of requests instead. Check each provider's current pricing page before you build.
Can a phone validation API tell if a number is in service?
Format APIs can't. Carrier lookup APIs tell you which network serves a number and what type of line it is, which is a strong signal, but not proof that the line is switched on or answered today.
Verify unlimited addresses for $29.99/month
Real SMTP mailbox checks. No credits, no per-email fees.
Get Started