Phone Number Validator
Pricing
from $0.28 / 1,000 phone numbers
Phone Number Validator
Checks phone numbers from a list or a dataset offline and returns E.164, international and national formats, country, line type, original carrier and time zones. Every invalid number gets a reason, such as too short or no country code.
Pricing
from $0.28 / 1,000 phone numbers
Rating
0.0
(0)
Developer
deriverge s.r.o.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Phone Number Validator checks a list of phone numbers and returns one row per number: whether it is valid, its E.164, international and national formats, the country, the line type (mobile, fixed line, toll free and others), the carrier the number range was assigned to, its time zones and, for an invalid number, the reason. Paste numbers into Phone numbers, set Default country and click Start. The check runs offline against Google's libphonenumber data, so it cannot tell whether a valid number is switched on or in use. It costs $0.55 per 1,000 phone numbers on the Free plan ($0.275 on Business), and the $5 of monthly credit in Apify's Free plan covers about 9,000 phone numbers.
What data does it return?
| Field | Description |
|---|---|
input, position | The number as you gave it and its place in the input, starting at 1. |
valid | true when the number belongs to a range assigned in its country, such as a real UK mobile range. |
possible | true when the number of digits fits the country, even if the range is not assigned. |
e164 | The number in E.164 form for databases and SMS gateways, such as +447400123456. null when the length does not fit any country. |
international, national | The number formatted for calling from abroad (+44 7400 123456) and inside the country (07400 123456). |
rfc3966 | A tel: link, such as tel:+44-7400-123456, with ;ext= when there is an extension. |
countryCode, countryName, countryCallingCode | ISO two-letter code (GB), English name (United Kingdom) and calling code without + (44). |
nationalNumber, extension | Digits after the calling code, and the extension written after the number (ext. 12, x 12). |
lineType | MOBILE, FIXED_LINE, FIXED_LINE_OR_MOBILE, TOLL_FREE, PREMIUM_RATE, SHARED_COST, VOIP, PERSONAL_NUMBER, PAGER, UAN or VOICEMAIL; null for an invalid number. |
carrier | Mobile network the number range was originally assigned to, such as Vodafone or O2. Only for mobile and pager numbers. |
timeZones | IANA time zones of the number, such as ["Europe/Prague"]. A number tied to an area gets that area's zone; toll free and most mobile numbers get every zone of their country. |
invalidReason, invalidReasonText | Why a number is invalid: TOO_SHORT, TOO_LONG, INVALID_LENGTH, INVALID_NUMBER (right length, unassigned range), INVALID_COUNTRY (no country could be found), NOT_A_NUMBER or EMPTY, with a sentence in plain English. |
defaultCountry, datasetOffset | The country used for numbers without +, and for numbers read from a dataset the offset of their item, starting at 0. |
How to validate phone numbers in bulk
- Paste the numbers into Phone numbers, one per line or separated by commas or semicolons. Any common format works:
+44 20 7946 0958,(201) 555-0123,0049 1512 3456789,1-800-FLOWERSor+1 202-456-1111 ext. 12. - Set Default country to the country of numbers written without a + code, as a code (
US,GB,DE), an English name or a calling code (+44). Numbers that start with + or 00 ignore it. - To check numbers another run collected, pick that run's dataset in Dataset with phone numbers and name the field in Field with the phone number, such as
phoneorcontact.phone. A field with a list (phones) gives one row per number, and Field with the country can supply each item's own country. - Turn on Skip duplicates to get each number once, then click Start.
- The rows appear in the Output tab, where you can filter on
validorlineTypeand download CSV, Excel or JSON. TheSUMMARYrecord in the key-value store counts valid and invalid numbers, reasons, line types and countries.
Over the API, an input looks like this:
{"phoneNumbers": ["+44 20 7946 0958", "030 901820", "0049 1512 3456789"],"defaultCountry": "DE","skipDuplicates": true}
Example output
One row from a run on 11 October 2026. The input was a Czech mobile number in international format, so the default country (US) was not used.
{"position": 6,"input": "+420 601 123 456","defaultCountry": "US","valid": true,"possible": true,"e164": "+420601123456","international": "+420 601 123 456","national": "601 123 456","rfc3966": "tel:+420-601-123-456","countryCallingCode": "420","countryCode": "CZ","countryName": "Czechia","nationalNumber": "601123456","extension": null,"lineType": "MOBILE","carrier": "O2","timeZones": ["Europe/Prague"],"invalidReason": null,"invalidReasonText": null}
How much does it cost to validate phone numbers?
| Free plan | Starter | Scale | Business | |
|---|---|---|---|---|
| 1,000 phone numbers | $0.55 | $0.44 | $0.358 | $0.275 |
You pay only for the events in the table. There is no start fee, and compute time and proxies are included.
A list of 10,000 numbers costs $5.50 on the Free plan and $2.75 on Business. Valid and invalid numbers cost the same, because both are checked; empty lines and duplicates removed by Skip duplicates are not charged.
Limits
- The check uses the numbering data of Google libphonenumber release v9.0.41 from October 2026, bundled with the actor. A range a regulator opened after that release shows as invalid until the data is updated.
- Valid means the number fits a range assigned in its country. The actor makes no network lookup (no HLR, no WhatsApp check), so it cannot say whether the number is active, reachable or who uses it.
carrieris the network the range was assigned to. A number moved to another network keeps the original name. There is no carrier data for the United States, Canada and Mexico; in an October 2026 test, 93% of valid mobile numbers outside North America had one.- In the United States and Canada mobile and fixed numbers share the same ranges, so their
lineTypeisFIXED_LINE_OR_MOBILE. - Time zones of numbers not tied to an area list every zone of the country: a US toll free number gets 42.
- Without Default country, a number written without + or 00 cannot be placed and gets
INVALID_COUNTRY. A number starting with 00 is read as international when it is not valid as a national number of the default country. - Speed: 10,000 numbers took 6 seconds of run time on 256 MB of memory, about 4 of them for checking and saving.
- A dataset is read through the one field you name. A label before the number (
Tel: ...,Call us on ...) is skipped, and several numbers in one value, separated by commas, semicolons or/, give one row each. Numbers inside longer free text, such as a whole page, are not searched for.
FAQ
Is it legal to validate phone numbers?
The actor checks the numbers you give it against public numbering plans and never contacts the numbers, a carrier or any other service. The numbers stay in your run's dataset and are not written to the log. Phone numbers of people are personal data in many countries, so you are responsible for having a lawful reason to process the list.
Does it tell me if a number is on WhatsApp or still in service?
No. Both need a live lookup with an outside service, and this actor works offline. Use the valid flag and line type to clean a list before sending it to a messaging or HLR service.
Why is a number I can call marked invalid?
Most often the default country is wrong for a number written without a country code, or the number has a missing or extra digit. Check invalidReason: INVALID_COUNTRY means no country could be found, TOO_SHORT and TOO_LONG point to a wrong digit count, and INVALID_NUMBER means the digits fall outside every assigned range in the data from October 2026.
Related scrapers
Support
This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.