Bulk Phone Format Validator avatar

Bulk Phone Format Validator

Pricing

$2.00 / 1,000 phone format validation results

Go to Apify Store
Bulk Phone Format Validator

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

naoki anzai

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

2

Monthly active users

a day ago

Last modified

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

StepActorJob
1CSV Cleaner & Deduplication ToolPrepare a consented, user-supplied data table
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"
}

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

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).
  • 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.

This actor is Step 3 of the Lead Enrichment Pack:

StepActorWhat it does
β¬… Step 1CSV Cleaner & Deduplication ToolNormalize an authorized CSV export before format validation
β¬… Step 2πŸ“© Email Deliverability CheckerSyntax 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.