Phone Number Validator — Line Type, Country & Format
Pricing
from $2.00 / 1,000 phone number validateds
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
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
9
Monthly active users
12 days ago
Last modified
Categories
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
- Go to the Phone Number Validator page on Apify and click "Try for free"
- Configure your input — paste phone numbers into the
phoneNumbersarray or provide acsvUrlwith a column of numbers - 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:nullcarrierAvailable:falsecarrierLookupNote: 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
| Field | Type | Description |
|---|---|---|
phoneNumbers | array | List of phone numbers in any format |
csvUrl | string | URL to a CSV file with phone numbers |
csvColumn | string | Column name in CSV (default: phone) |
defaultCountryCode | string | ISO country code for numbers without prefix (default: US) |
maxConcurrency | integer | Parallel 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 ApifyClientclient = 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
- Telegram Channel Scraper — Scrape messages, media, and metadata from public Telegram channels
- Letterboxd Scraper — Scrape film details, reviews, and profiles from Letterboxd
- RedNote Xiaohongshu Scraper All-in-One — Scrape posts, comments, and profiles from Xiaohongshu
Finance & Market Data
- TradingView Scraper — Screen 11+ global markets with 40+ technical indicators
Business & Reviews
- G2 Reviews Scraper — Extract software reviews and ratings from G2.com
- Capterra Reviews Scraper — Software ratings, pros/cons, reviewer profiles
Lead generation & B2B
- LinkedIn Company Enrichment — Company profiles + key employees (no login)
SEO & Data Tools
- Domain Authority Checker — Bulk check domain authority for SEO analysis
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.