Phone Number Validator — Lead Validation, Line Type & Carrier
Pricing
from $2.00 / 1,000 phone number validateds
Phone Number Validator — Lead Validation, Line Type & Carrier
Bulk phone and lead validation with Google's libphonenumber: validity, country, timezone, location, line type and E.164/international/national/RFC 3966 formats. Carrier where the numbering plan exposes it — not for US, Canada or Puerto Rico, where mobile vs fixed line can't be told apart either.
Pricing
from $2.00 / 1,000 phone number validateds
Rating
1.0
(1)
Developer
Sami
Maintained by CommunityActor stats
0
Bookmarked
72
Total users
3
Monthly active users
10 days ago
Last modified
Categories
Share
Phone Number Validator
Validate phone numbers in bulk using Google's libphonenumber. No external APIs: $0.002 per number, run locally with Google's libphonenumber.
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 (the carrier each number range was originally assigned to) — for these three 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 query live carrier databases. 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.
Outside US / CA / PR the carrier field is the number range's original carrier; it may differ if the number was ported. Most countries (the UK and the EU included) also have mobile number portability, so treat carrier as a hint, not the current network.
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
Validation APIs (Twilio Lookup, NumVerify, AbstractAPI) need API key management. This Actor runs Google's libphonenumber locally with no external API calls, at $0.002 per number.
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.002 per number validated ($2 per 1,000 numbers).
Technology
Uses Google's libphonenumber (Python port). No external API calls, so no third-party lookup cost.
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.002 per number ($2 per 1,000 numbers), with no API keys.
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 does this phone number validator do?
This Actor (zhorex/phone-number-validator) validates and formats numbers with Google's libphonenumber library, supports bulk validation via CSV, and costs $0.002 per number.
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 and firmographics (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.
Reviews, good or bad, help other users decide: leave a rating.