☎️ Bulk Phone Validator
Pricing
Pay per event
☎️ Bulk Phone Validator
Clean and enrich scraped contact details in bulk. Convert raw phone strings into dialer-ready E.164 numbers with verified country codes and line types.
Pricing
Pay per event
Rating
0.0
(0)
Developer
太郎 山田
Actor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
📞 Phone Number Validator
Lead Enrichment Pack — Step 3 of 3 Extract contacts → validate emails → validate phones → hand off to CRM
Normalize and validate phone numbers extracted from company pages before they reach your CRM or dialer. After running Contact Details Extractor, feed its phones output here to get clean E.164-formatted numbers, confirmed country codes, and line-type classification (mobile, landline, VoIP, toll-free) — all processed offline using Google's libphonenumber library with no external API calls.
Built for sales ops and RevOps teams who need to standardize messy scraped phone data across 250+ countries before importing to a CRM, dialer, or SMS platform.
Lead Enrichment Pack — 3-step workflow
| Step | Actor | Job |
|---|---|---|
| 1 | Contact Details Extractor | Scrape public emails, phones, and social links from company pages |
| 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"}
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). - Feed from Contact Details Extractor — this validator is designed to clean the
phonesoutput from the extractor as Step 3 of the Lead Enrichment Pack. - 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 | 📧 Contact Details Extractor | Scrape emails, phone numbers, and social links from company contact pages |
| ⬅ Step 2 | 📩 Email Deliverability Checker | Syntax check, MX lookup, disposable detection, 0-100 deliverability score |
Also in the lead generation toolbox:
- 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.