Bulk Phone Number Validator & Formatter
Pricing
from $0.80 / 1,000 phone number validateds
Bulk Phone Number Validator & Formatter
Bulk phone number validator and formatter for lists of up to 10,000 numbers. Checks each number against its country numbering plan and returns E.164, international and national formats, the country and the line type (mobile, landline, VoIP, toll-free...). Works offline: no number is sent anywhere.
Pricing
from $0.80 / 1,000 phone number validateds
Rating
0.0
(0)
Developer
UHQxx
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
What is Phone Number Validator?
Phone Number Validator checks a list of phone numbers and cleans them up in seconds. For each number it tells you whether it is valid for its country, gives you the E.164, international and national formats, the country, and the line type (mobile, landline, VoIP, toll-free, premium-rate...). You can validate up to 10,000 numbers per run and export the result as JSON, CSV or Excel.
What makes it different: it works fully offline. No number is called, looked up or sent to a third-party service, nothing is guessed or enriched, and no phone number is written in the logs.
What can this phone validator do?
- Validate numbers written in any common way:
01 23 45 67 89,06.12.34.56.78,+33 6 12 34 56 78,0033612345678,tel:+33612345678. - Check each number against the numbering plan of its country (valid length and valid number range).
- Return clean formats ready for a CRM or an SMS tool: E.164 (
+33612345678), international (+33 6 12 34 56 78) and national (06 12 34 56 78). - Detect the line type: mobile, landline, VoIP, toll-free, premium-rate, shared-cost and more.
- Explain every verdict in plain English (
Number is too short,Unknown country calling code...). - Remove duplicates, even when the same number is written in different ways.
- Skip the numbers in your exclusion list.
Who is it for?
- Marketing and sales teams cleaning a contact list before a campaign or a CRM import.
- Developers who need a simple number check inside an import or sign-up workflow, through the Apify API.
- Anyone who wants consistent phone formats across several countries.
3 ways to use it
- Clean a list before an SMS or call campaign. Remove numbers that cannot exist and review the
riskyones (premium-rate, toll-free...). - Standardise formats at import. Turn
06 12 34 56 78,0612345678and+33 6 12 34 56 78into one E.164 value. - Separate mobile from landline numbers. Use the
numberTypecolumn to route messages to mobiles and calls to landlines.
Example output
Real output from the Actor (fictional numbers):
[{"phoneNumber": "01 23 45 67 89","verdict": "ok","reason": "Valid landline number (FR)","isValid": true,"e164": "+33123456789","international": "+33 1 23 45 67 89","national": "01 23 45 67 89","country": "FR","countryCallingCode": "33","numberType": "FIXED_LINE","isPossible": true},{"phoneNumber": "0899 12 34 56","verdict": "risky","reason": "Valid premium-rate (surcharged) number (FR): not an ordinary line to reach a person","isValid": true,"e164": "+33899123456","international": "+33 899 12 34 56","national": "0 899 12 34 56","country": "FR","countryCallingCode": "33","numberType": "PREMIUM_RATE","isPossible": true},{"phoneNumber": "12345","verdict": "invalid","reason": "Number is too short","isValid": false,"e164": null,"international": null,"national": null,"country": null,"countryCallingCode": null,"numberType": null,"isPossible": false}]
How to use it
- Open the Actor on Apify and paste your numbers in Phone numbers (one per line; commas and semicolons also work).
- Set the Default country (FR by default) for the numbers written without a
+and a country code. Numbers that start with+keep their own country. - Optional: fill the Exclusion list with numbers that must not be processed (see the GDPR section).
- Click Start, then open the Results table or export it as JSON, CSV or Excel. A short run summary (totals only) is saved in the
SUMMARYrecord of the key-value store.
You can also run it from your own tools through the Apify API, on a schedule, or from integrations such as Make, Zapier or n8n.
Input
| Field | Meaning | Default |
|---|---|---|
phoneNumbers | Numbers to check (required). | none |
defaultCountry | Two-letter country code (FR, DE, GB, US, ES, IT...) applied to numbers without a +. | FR |
excludedNumbers | Numbers that must NOT be processed. They are skipped, not saved and not counted. Written the same way as above. | empty |
maxNumbers | Safety limit per run, from 1 to 10,000. Numbers beyond it are not checked (a warning is logged). | 1,000 |
Output columns
| Column | Meaning |
|---|---|
phoneNumber | The number as you provided it (trimmed). |
verdict | ok, risky or invalid (see below). |
reason | Why, in plain English. |
isValid | The number matches a known number range of its country. |
e164 | International format without spaces, for example +33612345678 (null if invalid). |
international / national | The same number formatted with spaces (null if invalid). |
country | Two-letter country code (null if invalid). Where several countries share a calling code (for example +44), it is the best match: GB, GG, JE or IM. |
countryCallingCode | The country calling code without the +. |
numberType | MOBILE, FIXED_LINE, FIXED_LINE_OR_MOBILE, VOIP, TOLL_FREE, PREMIUM_RATE, SHARED_COST, PERSONAL_NUMBER, PAGER, UAN, VOICEMAIL, or null if unknown or invalid. |
isPossible | The length is plausible for the country (weaker than isValid). |
What the verdicts mean
- ok: a valid number on an ordinary line (mobile, landline, VoIP, or a type the numbering data does not specify).
- risky: a valid number, but on a special line type that is not an ordinary line to reach a person: premium-rate, toll-free, shared-cost, personal, pager, universal access or voicemail numbers.
- invalid: not a valid number for its country (too short, too long, unknown country code, a range that does not exist, or not a number at all).
FAQ
Does it tell me whether a number is active or reachable?
No. The Actor does not call numbers or query any operator, so it cannot know whether a number is in service, who owns it, or whether it can receive SMS. ok means "a valid number of an existing range", not "this person can be reached".
Where does the validation data come from?
From the open-source library libphonenumber-js (MIT licence), which uses the numbering data of Google's libphonenumber project. Numbering plans change; the data reflects the version of the library bundled in the Actor.
What if my numbers have no country code?
Set the Default country. A number written without + is read as a number of that country: 020 7946 0958 is valid with GB and invalid with FR. Numbers written with a + or 00 prefix always keep their own country.
Is it safe for personal data?
Phone numbers are personal data when they identify a person. The Actor makes no network call: numbers are not sent to any service, and no number is written in the logs. You remain responsible for your use: see the GDPR section below.
How many numbers can I check in one run?
Up to 10,000 (the maxNumbers setting, 1,000 by default). In our local test, 10,000 numbers were processed in a few seconds.
Honest limits
- It cannot tell whether a number is in service (see the FAQ).
- The line type comes from the numbering data and can be missing or approximate for some countries. When the data does not give a type, the number is
okwith the reason "line type unknown". - Extensions are accepted (
+33 6 12 34 56 78 ext 12) but are not part of thee164value. - Text around a number is not extracted:
call me on 0612345678isinvalid. Give one number per line. - Numbers with more than 100 characters are rejected as invalid.
Data and GDPR: please read
Data processed. The phone numbers you provide, which are personal data when they identify a person. The output contains the same number plus fields derived from it. Nothing else is collected: no names, addresses, profiles or sensitive data.
What leaves the Actor. Nothing. The Actor makes no network call. No number is sent to a third-party service. Logs contain totals only, never numbers.
What is kept. The Actor keeps nothing of its own. Your results and your run input (including any exclusion list) are stored by Apify with your run, according to Apify's own retention rules. You can delete them from the Console.
You are responsible for your use. You decide why and how the numbers are used, so you are responsible for compliance. In particular:
- Have a valid legal basis for any processing and any contact, and follow the rules of your country on phone and SMS prospecting, which are often stricter than for other channels.
- Inform the people concerned and honour objections and other requests (within one month under the GDPR).
- Make sure your list was obtained lawfully.
- Do not use this Actor to guess or rebuild phone numbers.
- Use the Exclusion list for people who objected, so they are never processed again.
This is general information, not legal advice.
En bref (français)
Contrôlez et nettoyez une liste de numéros de téléphone : validité selon le pays, formats E.164 / international / national, pays, type de ligne (mobile, fixe, VoIP, numéro vert, surtaxé...). Chaque numéro reçoit un verdict (ok, risky, invalid) avec la raison. L'Actor fonctionne entièrement hors ligne : il n'appelle aucun numéro, n'interroge aucun opérateur ni service tiers, ne devine aucun numéro et n'écrit aucun numéro dans ses logs. Limite principale : il ne peut pas savoir si le numéro est en service. Vous restez responsable de l'usage de vos listes (base légale, information des personnes, droit d'opposition, règles de la prospection téléphonique et par SMS) : voir la section « Data and GDPR ». Une liste d'exclusion permet d'écarter les personnes qui se sont opposées.
Pricing
You pay per number checked. The price is shown in the Pricing tab of the Actor.
- Charged: each number that was actually checked and got a verdict of
ok,riskyorinvalid. - Never charged: duplicates, numbers in your exclusion list, and numbers beyond your
maxNumberslimit. - A small fixed fee per run start may also apply, as shown in the Pricing tab.
- You can cap what a run can spend with the maximum cost setting of the run. The Actor stops cleanly when the cap is reached; results already saved are kept.
More tools by the same developer
- Bulk Email Verifier & Validator (No SMTP): checks email addresses the same privacy-friendly way (format, domain, mail server, disposable domains, typos), with no probing of mail servers.