Phone Validator - Validation, Normalize, Format & Detect Type
Pricing
Pay per usage
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
Actor stats
1
Bookmarked
6
Total users
5
Monthly active users
16 days ago
Last modified
Categories
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
081234567890usingdefaultCountry - 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) requiredefaultCountryto parse correctly - International numbers with
+prefix are auto-detected â nodefaultCountryneeded - Invalid or unparseable numbers return
isValid: falseandnullfor all other fields
ð Input
{"phoneNumbers": ["081234567890", "+14155552671", "12345"],"defaultCountry": "ID","normalize": true,"format": true,"detectCountry": true,"detectType": true}
| Field | Type | Default | Description |
|---|---|---|---|
phoneNumbers | array | â | Phone numbers to process (required). Local or international format |
defaultCountry | string | "ID" | ISO 2-letter country code. Required for local-format numbers (starting with 0 or no calling code) |
normalize | boolean | false | Add normalizedNumber (E.164) to output |
format | boolean | false | Add formats (E.164, international, national) to output |
detectCountry | boolean | false | Add country (code, name, callingCode) to output |
detectType | boolean | false | Add type (MOBILE, FIXED_LINE, etc.) to output |
â ïļ Always set
defaultCountrywhen any number uses local format. Without it, local numbers returnisValid: 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
| Field | Type | Description |
|---|---|---|
input | string | Original input value |
isValid | boolean | Whether the number is valid for its country |
normalizedNumber | string|null | E.164 format â present if normalize: true |
formats.e164 | string|null | E.164 â present if format: true |
formats.international | string|null | International format â present if format: true |
formats.national | string|null | National format â present if format: true |
country.code | string|null | ISO 2-letter code â present if detectCountry: true |
country.name | string|null | Country name â present if detectCountry: true |
country.callingCode | string|null | E.g. "+62" â present if detectCountry: true |
type | string|null | Number 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,detectTypein a single run. defaultCountryis only needed for local-format numbers â numbers starting with0or without a calling code. International numbers with+prefix are auto-detected and don't need it.- Invalid numbers return
nullfor 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. typemay returnnullfor some valid numbers â not all number ranges have deterministic type data.- Export as JSON or CSV from Dataset, or fetch results via Apify API.