Bulk Phone Format Validator
Pricing
$2.00 / 1,000 phone format validation results
Bulk Phone Format Validator
Validate and normalize user-supplied phone strings offline with libphonenumber rules. Return E.164 formatting, country, and number type without discovering people or numbers.
Pricing
$2.00 / 1,000 phone format validation results
Rating
0.0
(0)
Developer
naoki anzai
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
π Phone Number Validator
Transform raw scraped phone details into perfectly structured, actionable contact data. When you extract profiles from search results or business directories, phone formats vary wildly across different pages. The Bulk Phone Validator eliminates this chaos by automatically detecting regions and standardizing strings into strict E.164 formatting.
Validate and normalize user-supplied phone strings offline with the Google libphonenumber engine. The actor returns formatting, country, and number-type signals without discovering people, acquiring numbers, or calling a per-record enrichment API.
Every run delivers rich, validated contact objects. You extract not just the cleaned phone number, but also vital metadata including the confirmed country dial code and the line classificationβdifferentiating between mobile phones, landlines, and VoIP numbers. This is critical for sales operations teams that need to segment SMS campaigns from voice dialer lists. Schedule the validator to run alongside your email and website scrapers to guarantee your database only receives flawless, fully verified lead records.
Lead Enrichment Pack β 3-step workflow
| Step | Actor | Job |
|---|---|---|
| 1 | CSV Cleaner & Deduplication Tool | Prepare a consented, user-supplied data table |
| 2 | Email Deliverability Checker | Validate emails: syntax, MX records, disposable detection, deliverability score |
| 3 | Phone Number Validator β you are here | Normalize and validate phone numbers with type detection (mobile / landline / VoIP) |
Store Quickstart
Pick the template that fits your workflow:
- Quickstart (10 Sample Numbers) β verify E.164 output and type detection on a mixed international set
- Lead Validation Before Dialing β validate a prospect phone list before loading into a dialer
- Bulk CRM Cleanup β normalize a CRM export with mixed formats and countries; set
defaultCountryto your primary market - International Normalize β standardize global phone data with
defaultCountry: USfallback
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"}
Input Examples
Example: Single phone validation
{"phones": ["+14155552671"]}
Example: Bulk with carrier rollup
{"phones": ["+14155552671","+819012345678","+447911123456"],"includeCarrier": true}
Example: CSV-style hygiene check
{"phones": ["415-555-2671","+1 (415) 555-2671","4155552671"],"normalizeOnly": true}
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
- Set
defaultCountryto your primary market for numbers without a country code prefix β this dramatically improves accuracy on locally-formatted numbers. - Filter by
type: "mobile"for SMS marketing campaigns; mobile numbers are the only type reachable via SMS in most countries. - Use
formatted.e164as the canonical value for CRM import and SMS/voice API calls (Twilio, Vonage, AWS Connect). - Validate an authorized export β normalize phone strings from a consented CRM or customer-supplied dataset.
- Offline processing β no phone numbers are ever sent to an external API. All validation runs locally using Google's libphonenumber library.
- Powered by google-libphonenumber β Google's industry-standard phone validation 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 Enrichment Pack
This actor is Step 3 of the Lead Enrichment Pack:
| Step | Actor | What it does |
|---|---|---|
| β¬ Step 1 | CSV Cleaner & Deduplication Tool | Normalize an authorized CSV export before format validation |
| β¬ Step 2 | π© Email Deliverability Checker | Syntax check, MX lookup, disposable detection, 0-100 deliverability score |
Related data-quality tools:
- 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.
β Was this helpful?
If this actor saved you time, please leave a β rating on Apify Store. It takes 10 seconds, helps other developers discover it, and keeps updates free.
Bug report or feature request? Open an issue on the Issues tab of this actor.