☎️ Bulk Phone Validator avatar

☎️ Bulk Phone Validator

Pricing

Pay per event

Go to Apify Store
☎️ Bulk Phone Validator

☎️ 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

太郎 山田

太郎 山田

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Share

📞 Phone Number Validator

Lead Enrichment Pack — Step 3 of 3 Extract contactsvalidate emailsvalidate 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

StepActorJob
1Contact Details ExtractorScrape public emails, phones, and social links from company pages
2Email Deliverability CheckerValidate emails: syntax, MX records, disposable detection, deliverability score
3Phone Number Validator ← you are hereNormalize 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 defaultCountry to your primary market
  • International Normalize — standardize global phone data with defaultCountry: US fallback

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

WhoWhy
CRM managersClean phone number columns in customer databases
Sales operationsValidate lead phone numbers before outreach
SaaS onboardingReal-time validation at signup
International complianceEnforce E.164 format for SMS/voice APIs
Data migrationNormalize phone numbers across systems

Input

FieldTypeDefaultDescription
numbersstring[](required)Phone numbers to validate (max 1000)
defaultCountrystringUSDefault ISO country code

Input Example

{
"numbers": ["+1-555-1234567", "03-1234-5678", "020 7946 0958"],
"defaultCountry": "JP"
}

Output

FieldTypeDescription
inputstringOriginal phone string
validbooleanWhether the number is valid
e164stringE.164 formatted version
countrystringISO country code
countryNamestringFull country name
carrierstringCarrier name (if known)
lineTypestringmobile, fixed-line, voip, etc.
errorstringnull

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 ApifyClient
client = 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 defaultCountry to 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.e164 as 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 phones output 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.

This actor is Step 3 of the Lead Enrichment Pack:

StepActorWhat it does
Step 1📧 Contact Details ExtractorScrape emails, phone numbers, and social links from company contact pages
Step 2📩 Email Deliverability CheckerSyntax check, MX lookup, disposable detection, 0-100 deliverability score

Also in the lead generation toolbox:

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.