Phone Validator - Validation, Normalize, Format & Detect Type avatar

Phone Validator - Validation, Normalize, Format & Detect Type

Pricing

Pay per usage

Go to Apify Store
Phone Validator - Validation, Normalize, Format & Detect Type

Phone Validator - Validation, Normalize, Format & Detect Type

Validate phone numbers in bulk, normalize to E.164, format for display, detect country by code, and identify number type. Supports local numbers with defaultCountry and international numbers like +1, +44, etc. Great for CRM cleanup, lead validation, and contact enrichment.

Pricing

Pay per usage

Rating

5.0

(1)

Developer

Apizy

Apizy

Maintained by Community

Actor stats

1

Bookmarked

6

Total users

5

Monthly active users

16 days ago

Last modified

Share

Phone Number Validator

Validate, normalize, format, and detect country & type of phone numbers in bulk — supports 230+ countries, local and international formats. No coding needed.

ðŸŽŊ Why Use This?

  • Bulk processing — dozens to thousands of numbers in a single run
  • Modular features — validate, normalize, format, detect country, detect type — enable only what you need
  • Local number support — input numbers like 081234567890 using defaultCountry
  • International auto-detect — numbers with + prefix (e.g. +6281234567890) need no extra config
  • Export friendly — JSON/CSV output, plug directly into data pipelines and CRMs

⚙ïļ How It Works

Input a list of phone numbers with optional feature flags. Each number runs through our multi-layer parsing engine and returns only the fields you enable.

  • Local numbers (e.g. 081234567890) require defaultCountry to parse correctly
  • International numbers with + prefix are auto-detected — no defaultCountry needed
  • Invalid or unparseable numbers return isValid: false and null for all other fields

📋 Input

{
"phoneNumbers": ["081234567890", "+14155552671", "12345"],
"defaultCountry": "ID",
"normalize": true,
"format": true,
"detectCountry": true,
"detectType": true
}
FieldTypeDefaultDescription
phoneNumbersarray—Phone numbers to process (required). Local or international format
defaultCountrystring"ID"ISO 2-letter country code. Required for local-format numbers (starting with 0 or no calling code)
normalizebooleanfalseAdd normalizedNumber (E.164) to output
formatbooleanfalseAdd formats (E.164, international, national) to output
detectCountrybooleanfalseAdd country (code, name, callingCode) to output
detectTypebooleanfalseAdd type (MOBILE, FIXED_LINE, etc.) to output

⚠ïļ Always set defaultCountry when any number uses local format. Without it, local numbers return isValid: false.

ðŸ“Ķ Output

Results are saved to the Dataset and Key-Value Store (OUTPUT).

[
{
"input": "081234567890",
"isValid": true,
"normalizedNumber": "+6281234567890",
"formats": {
"e164": "+6281234567890",
"international": "+62 812 3456 7890",
"national": "0812-3456-7890"
},
"country": { "code": "ID", "name": "Indonesia", "callingCode": "+62" },
"type": "MOBILE"
},
{
"input": "12345",
"isValid": false,
"normalizedNumber": null,
"formats": null,
"country": null,
"type": null
}
]

Output Fields

FieldTypeDescription
inputstringOriginal input value
isValidbooleanWhether the number is valid for its country
normalizedNumberstring|nullE.164 format — present if normalize: true
formats.e164string|nullE.164 — present if format: true
formats.internationalstring|nullInternational format — present if format: true
formats.nationalstring|nullNational format — present if format: true
country.codestring|nullISO 2-letter code — present if detectCountry: true
country.namestring|nullCountry name — present if detectCountry: true
country.callingCodestring|nullE.g. "+62" — present if detectCountry: true
typestring|nullNumber type — present if detectType: true

type Values

MOBILE · FIXED_LINE · FIXED_LINE_OR_MOBILE · TOLL_FREE · PREMIUM_RATE · SHARED_COST · VOIP · PERSONAL_NUMBER · PAGER · UAN · VOICEMAIL · null

🧊 Sample Inputs

Validate only

{ "phoneNumbers": ["081234567890", "+14155552671"], "defaultCountry": "ID" }

Normalize + format

{
"phoneNumbers": ["081234567890", "+14155552671"],
"defaultCountry": "ID",
"normalize": true,
"format": true
}

All features

{
"phoneNumbers": ["081234567890", "+14155552671", "12345"],
"defaultCountry": "ID",
"normalize": true,
"format": true,
"detectCountry": true,
"detectType": true
}

💰 Pricing

This Actor is free to use — no subscription, no per-result fee, no matter how many numbers you process. You only pay Apify's standard compute usage fee for the processing time consumed, which is very low.

Free trial credits (~$5) are more than enough to get started. Leave a review and rate this Actor if it helps your workflow — it means a lot! ⭐

📝 Notes

  • Feature flags are independent — enable any combination of normalize, format, detectCountry, detectType in a single run.
  • defaultCountry is only needed for local-format numbers — numbers starting with 0 or without a calling code. International numbers with + prefix are auto-detected and don't need it.
  • Invalid numbers return null for all feature fields (normalizedNumber, formats, country, type) — no errors, run continues.
  • E.164 format is the international standard: + followed by country code and subscriber number, no spaces or special characters, max 15 digits. E.g. +6281234567890.
  • type may return null for some valid numbers — not all number ranges have deterministic type data.
  • Export as JSON or CSV from Dataset, or fetch results via Apify API.