📞 Phone Number Validator
Pricing
Pay per event
📞 Phone Number Validator
Validate and format phone numbers for 250+ countries using google-libphonenumber. Detect type (mobile, landline, VoIP), country, E.164 format. Fully offline, no API key, bulk processing.
Pricing
Pay per event
Rating
0.0
(0)
Developer
太郎 山田
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Validate and format phone numbers for 250+ countries using google-libphonenumber. Detect type (mobile, landline, VoIP), country, E.164 format.
Store Quickstart
Start with the Quickstart template (10 sample numbers). For CRM cleaning, use Bulk Validation with defaultCountry set.
Key Features
- 📞 250+ countries — Every country's numbering plan supported
- 🏷️ Type detection — Mobile, landline, VoIP, toll-free, premium
- 📝 Multiple format outputs — E.164, international, national
- 🌍 Country detection — Auto-detect country from number format
- ⚡ Offline processing — google-libphonenumber runs locally, no network
- 🔑 No API key needed — Fully offline validation
Use Cases
| Who | Why |
|---|---|
| CRM managers | Clean phone number columns in customer databases |
| Sales operations | Validate lead phone numbers before outreach |
| SaaS onboarding | Real-time validation at signup |
| International compliance | Enforce E.164 format for SMS/voice APIs |
| Data migration | Normalize phone numbers across systems |
Input
| Field | Type | Default | Description |
|---|---|---|---|
| numbers | string[] | (required) | Phone numbers to validate (max 1000) |
| defaultCountry | string | US | Default ISO country code |
Input Example
{"numbers": ["+1-555-1234567", "03-1234-5678", "020 7946 0958"],"defaultCountry": "JP"}
Output
| Field | Type | Description |
|---|---|---|
input | string | Original phone string |
valid | boolean | Whether the number is valid |
e164 | string | E.164 formatted version |
country | string | ISO country code |
countryName | string | Full country name |
carrier | string | Carrier name (if known) |
lineType | string | mobile, fixed-line, voip, etc. |
error | string | null |
Output Example
{"input": "03-1234-5678","isValid": true,"type": "FIXED_LINE","formatted": {"e164": "+81312345678","international": "+81 3-1234-5678","national": "03-1234-5678"},"country": "Japan","countryCode": "JP"}
API Usage
Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console → Settings → Integrations.
cURL
curl -X POST "https://api.apify.com/v2/acts/taroyamada~phone-number-validator/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{ "numbers": ["+1-555-1234567", "03-1234-5678", "020 7946 0958"], "defaultCountry": "JP" }'
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("taroyamada/phone-number-validator").call(run_input={"numbers": ["+1-555-1234567", "03-1234-5678", "020 7946 0958"],"defaultCountry": "JP"})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('taroyamada/phone-number-validator').call({"numbers": ["+1-555-1234567", "03-1234-5678", "020 7946 0958"],"defaultCountry": "JP"});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Tips & Limitations
- Use
defaultCountry: "US"for ambiguous numbers without country codes. - Filter by
lineType: "mobile"for SMS marketing campaigns. - Combine with Email Deliverability Checker for full lead-data hygiene.
- Powered by libphonenumber — Google's industry-standard library.
FAQ
How accurate is this?
Uses google-libphonenumber — Google's official phone validation library. Industry standard.
Does it verify if the number is in service?
No — format validation only. Actual reachability requires an SMS/voice ping (not offered).
What's a 'valid' number?
One with correct country code, valid length, and matching number plan. May still be unassigned.
Type detection accuracy?
Very high for countries with strict mobile/landline separation (US, JP, DE). Weaker for Asia/Africa.
Does this charge per validation like Twilio Lookup?
No — flat per-item dataset pricing. No per-API-call fees.
Will it call the number to verify it's active?
No — format and metadata validation only. No HLR lookups.
Related Actors
Lead Generation & B2B cluster — explore related Apify tools:
- 📧 Contact Details Extractor — Extract emails, phone numbers, and social media links from any webpage.
- 📩 Email Validator — Validate email addresses in bulk: syntax, DNS MX lookup, disposable domain detection, deliverability score.
- Email Deliverability Portfolio Audit API — Audit SPF, DKIM, DMARC, MTA-STS, TLS-RPT, BIMI, and sender-readiness signals across domain portfolios with executive summaries and remediation guidance.
Cost
Pay Per Event:
actor-start: $0.01 (flat fee per run)dataset-item: $0.002 per output item
Example: 1,000 items = $0.01 + (1,000 × $0.002) = $2.01
No subscription required — you only pay for what you use.