VOOZH about

URL: https://apify.com/zhorex/phone-number-validator

⇱ Phone Number Validator & Carrier Lookup Β· Apify


πŸ‘ 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

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

30

Total users

7

Monthly active users

a month 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 =newApifyClient({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

Legal

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.

You might also like

Phone Validator

tomba-io/phone-validator

Verify phone number formats, check carrier information, and get detailed validation results. Furthermore, our phone validator supports international numbers and provides comprehensive line type analysis.

Phone Number Validator

automation-lab/phone-number-validator

Validate and format phone numbers using Google libphonenumber. Returns validity, type (mobile, fixed-line, VoIP), country, E.164 format, national format, and carrier info. Process up to 10,000 numbers per run. Ideal for CRM cleanup and lead enrichment.

πŸ‘ User avatar

Stas Persiianenko

23

5.0

Phone Number Validator - Bulk International Phone Validation

santamaria-automations/phone-validator

Validate and format phone numbers in bulk. Detect country, number type (mobile/landline/VoIP), carrier, timezone, and geographic region. Powered by Google's libphonenumber β€” the industry standard used by major platforms. Perfect for CRM cleanup, lead validation, and SMS campaigns.

Phone Number Validation

easyapi/phone-number-validation

Validate, parse, and retrieve location information for any phone number with our Phone Number Validation API. Determine if a number is local or international, identify its type (fixed line or mobile), and reformat it for local and international dialing.

Phone Number Lookup API

khadinakbar/phone-number-lookup-api

All-in-one phone intelligence API. Validates any number, returns carrier, line type (mobile/landline/VoIP), country, region, owner name (US/CA), fraud score, breach data, WhatsApp/Telegram presence, and reverse-lookup URLs in a single call. 240+ countries.

187

3.0

phone number lookup

syntellect_ai/my-actor-2

A powerful Apify Actor to validate, format, and retrieve detailed information about phone numbers. It supports a free offline mode using `google-libphonenumber` and integrates with premium providers like Twilio, Numverify, and Telesign for advanced carrier and reputation data.

πŸ‘ User avatar

christopher athans crow

127

Phone Number Validator, Carrier & Litigator Lookup (US, Canada)

checkthatphone/phone-validator

Bulk-verify US & Canada phone numbers with real live carrier data: line type (mobile/landline/VoIP), current carrier, deliverability, ported status, TCPA litigator scrub, landline-SMS routing, and built-in GeoIP (phone geolocation).

πŸ‘ User avatar

CheckThatPhone

20

5.0

PhoneInfoga β€” Phone Number OSINT Scanner

datacach/phoneinfoga-phone-number-osint-scanner

Reverse phone lookup powered by PhoneInfoga. Detects carrier, country, line type and OSINT footprints for any international number. Integrates Numverify, Google Search and OVH. Free to start.

Anyphone - Mobile Phone Numbers

andrewthecube/anyphone0-2

Find any mobile phone number that is or was public through a methodic scouring of the internet.

πŸ‘ User avatar

Andrew Koumoudjian

62