Phone Number Validator — Line Type, Country & Format avatar

Phone Number Validator — Line Type, Country & Format

Pricing

from $2.00 / 1,000 phone number validateds

Go to Apify Store
Phone Number Validator — Line Type, Country & Format

Phone Number Validator — Line Type, Country & Format

Bulk phone validation with Google's libphonenumber: line type, country, timezone, location, E.164/international/national/RFC 3966 formats. Carrier lookup where libphonenumber data is available (US/CA/PR null due to Mobile Number Portability — see README). No external APIs, no rate limits.

Pricing

from $2.00 / 1,000 phone number validateds

Rating

1.0

(1)

Developer

Sami

Sami

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

9

Monthly active users

12 days ago

Last modified

Share

Phone Number Validator

Validate phone numbers in bulk using Google's libphonenumber. No external APIs required — fast, accurate, and free to run.

How to validate phone numbers in 3 easy steps

  1. Go to the Phone Number Validator page on Apify and click "Try for free"
  2. Configure your input — paste phone numbers into the phoneNumbers array or provide a csvUrl with a column of numbers
  3. Click "Run", wait for validation to finish, and download your results in JSON, CSV, or Excel

No coding required. Works with Apify's free plan.

What it does

For each phone number, the Actor returns:

  • Validation — Whether the number is valid and possible for its region
  • Country — Country code (US, GB, ES...) and full country name
  • Number type — Mobile, fixed line, VOIP, toll-free, premium rate, etc.
  • Carrier — Network operator (Vodafone, Orange, Movistar…) — see US/CA carrier note below
  • Timezone — All applicable timezones for the number
  • Location — Approximate geographic location
  • Formatted output — E.164, international, national, and RFC3966 formats

Known limitation — carrier lookup on US / CA / PR numbers

libphonenumber returns blank carrier for US, Canada, and Puerto Rico numbers. This is intentional in the underlying library, not a bug in this Actor.

Why: since 2003, US/CA/PR implemented Mobile Number Portability (MNP). People can keep their phone number when they switch carriers, which means a number's prefix no longer reliably maps to its current carrier. Google's libphonenumber maintains an offline prefix-to-carrier database that's accurate for most countries — but for MNP regions it deliberately returns an empty string rather than report a stale answer.

What you get instead on US / CA / PR numbers (v1.1+):

  • carrier: null
  • carrierAvailable: false
  • carrierLookupNote: an explicit explanation string (so the null is never a silent failure)
  • All other fields populated normally: country, line type, timezone, location, formatted outputs

If you specifically need live US/CA carrier identification, you need an HLR-lookup service (Twilio Lookup, Telnyx Number Lookup, NumLookupAPI, RealPhoneValidation, etc.). Those services hit live carrier databases at ~$0.003–$0.01 per lookup. This Actor's $0.002/lookup tier is for the validation + country + line type + format layer; carrier on US/CA is a different (live, paid) data source.

Carrier lookup works fine for non-MNP regions — UK, ES, DE, FR, IT, JP, IN, BR, AU, MX, AR, CL, CO, PE, PT, NL, BE, SE, NO, DK, FI, PL, RU, KR, TW, HK, SG, MY, TH, PH, ID, VN, ZA, NG, EG, KE, AE, SA, IL, TR, AT, CH, IE, NZ, CZ, RO, HU, GR, UA, and most others have prefix-stable carrier mapping.

Input

FieldTypeDescription
phoneNumbersarrayList of phone numbers in any format
csvUrlstringURL to a CSV file with phone numbers
csvColumnstringColumn name in CSV (default: phone)
defaultCountryCodestringISO country code for numbers without prefix (default: US)
maxConcurrencyintegerParallel processing limit (default: 50)

Example input

{
"phoneNumbers": [
"+1 (555) 123-4567",
"+44 20 7946 0958",
"+34 612 345 678",
"invalid-number"
],
"defaultCountryCode": "US"
}

Output

Each validated number produces a result like:

{
"input": "+44 20 7946 0958",
"isValid": true,
"isPossible": true,
"numberType": "FIXED_LINE",
"countryCode": "GB",
"countryName": "United Kingdom",
"carrier": null,
"carrierAvailable": false,
"carrierLookupNote": "Carrier lookup returned blank for this number. libphonenumber's offline carrier database does not cover this prefix; the number is still valid if isValid is true.",
"timezone": ["Europe/London"],
"location": "London",
"formatted": {
"e164": "+442079460958",
"international": "+44 20 7946 0958",
"national": "020 7946 0958",
"rfc3966": "tel:+44-20-7946-0958"
},
"validatedAt": "2026-04-07T12:00:00+00:00"
}

Success case — carrier populated (ES mobile):

{
"input": "+34 612 345 678",
"isValid": true,
"isPossible": true,
"numberType": "MOBILE",
"countryCode": "ES",
"countryName": "Spain",
"carrier": "Syma",
"carrierAvailable": true,
"carrierLookupNote": null,
"timezone": ["Europe/Madrid"],
"location": "Spain",
"formatted": {
"e164": "+34612345678",
"international": "+34 612 34 56 78",
"national": "612 34 56 78",
"rfc3966": "tel:+34-612-34-56-78"
},
"validatedAt": "2026-05-22T09:53:13+00:00"
}

MNP case — carrier intentionally null (US mobile):

{
"input": "+1 415 555 1234",
"isValid": true,
"isPossible": true,
"numberType": "FIXED_LINE_OR_MOBILE",
"countryCode": "US",
"countryName": "United States",
"carrier": null,
"carrierAvailable": false,
"carrierLookupNote": "Carrier lookup unavailable: this country implemented Mobile Number Portability, so the number's prefix no longer reliably maps to a carrier (numbers move freely between carriers). Google's libphonenumber intentionally returns blank for these regions. For live carrier identification on US / CA / PR numbers you need an HLR-lookup service (Twilio Lookup, Telnyx, NumLookupAPI). All other fields (country, line type, timezone, location, formatted outputs) are accurate for these numbers.",
"timezone": ["America/Los_Angeles"],
"location": "California",
"formatted": {
"e164": "+14155551234",
"international": "+1 415-555-1234",
"national": "(415) 555-1234",
"rfc3966": "tel:+1-415-555-1234"
},
"validatedAt": "2026-05-22T09:53:13+00:00"
}

Invalid numbers return isValid: false with an error field explaining why.

US / CA / PR numbers always return carrier: null with carrierAvailable: false and the explicit MNP carrierLookupNote — see the Known limitation section above.

Phone validation API alternative

Most phone validation APIs (Twilio Lookup, NumVerify, AbstractAPI) charge $0.005-0.01 per lookup and require API key management. This Actor is the best phone number validation alternative in 2026 — it runs Google's libphonenumber locally with no external API calls, costing only $0.001 per number. You get the same validation quality used by Google, WhatsApp, and Telegram at a fraction of the price.

Use cases

  • Lead generation — Clean and validate phone lists before outreach
  • CRM hygiene — Remove invalid numbers from your database
  • Data enrichment — Add country, carrier, and timezone to phone records
  • Compliance — Verify number formats before SMS campaigns

Use with Python, JavaScript, or no code

You can call this validator programmatically using the Apify API client.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("zhorex/phone-number-validator").call(run_input={
"phoneNumbers": ["+1 (555) 123-4567", "+44 20 7946 0958", "+34 612 345 678"],
"defaultCountryCode": "US"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('zhorex/phone-number-validator').call({
phoneNumbers: ['+1 (555) 123-4567', '+44 20 7946 0958', '+34 612 345 678'],
defaultCountryCode: 'US',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Or skip coding entirely and use the web interface with no-code tools like Zapier, Make, or n8n.

Pricing

Pay per event: $0.001 per number validated ($1 per 1,000 numbers).

Technology

Uses Google's libphonenumber (Python port) — the same library used by Google, WhatsApp, and Telegram. No external API calls = zero additional cost, maximum reliability.

FAQ

How many phone numbers can I validate at once? There is no hard limit. The Actor processes numbers in parallel (default concurrency: 50) and can handle thousands of numbers in a single run. You can also provide a CSV file URL for very large batches.

Does it work with numbers from any country? Yes. It supports all countries and regions covered by Google's libphonenumber library — virtually every country in the world. Set defaultCountryCode for numbers that don't include a country prefix.

How much does it cost to validate phone numbers? $0.001 per number ($1 per 1,000 numbers). Apify's free plan includes $5/month in credits, enough for 5,000 validations. Compare that to Twilio Lookup ($0.005/lookup) or NumVerify ($0.01/lookup).

Can I use this phone validator in Python? Yes. Install the Apify Python client (pip install apify-client) and call the Actor with a few lines of code. See the Python example above.

Is phone number validation legal? Phone number validation using libphonenumber is a standard technical operation that checks format validity and metadata. It does not access private data or perform live carrier lookups. Always comply with applicable data protection regulations (GDPR, CCPA, etc.) when handling personal phone numbers.

What is the best phone number validator in 2026? This Actor (zhorex/phone-number-validator) uses the same Google libphonenumber library as WhatsApp and Telegram, supports bulk validation via CSV, and costs 5-10x less than competing API services.

Integrations & data export

This Actor integrates with the full Apify ecosystem:

  • Google Sheets — Automatically push validated phone data to a spreadsheet
  • Zapier / Make / n8n — Connect validation results to 5,000+ apps with no-code automation
  • REST API — Start runs, fetch results, and manage datasets programmatically
  • Webhooks — Get notified when validation finishes and push clean data to your CRM
  • Amazon S3 / Google Cloud Storage — Export datasets directly to cloud storage
  • Slack / Email — Receive notifications with validation results after each run

More Actors by Zhorex

Social & Entertainment

Finance & Market Data

Business & Reviews

Lead generation & B2B

SEO & Data Tools

This Actor validates phone numbers using Google's open-source libphonenumber library. It does not make live network calls, access private data, or perform carrier-level lookups. Use responsibly and in compliance with applicable data protection regulations.


Found this Actor useful? Please leave a star rating — it helps other users discover this tool.