Phone Number Validator & Formatter (libphonenumber) avatar

Phone Number Validator & Formatter (libphonenumber)

Pricing

from $0.50 / 1,000 phone number validateds

Go to Apify Store
Phone Number Validator & Formatter (libphonenumber)

Phone Number Validator & Formatter (libphonenumber)

Validate and format phone numbers for 240+ countries with Google's libphonenumber data: E.164, international and national formats, mobile/landline type, original carrier, location, time zones. Extract numbers from text. Offline, no lookups.

Pricing

from $0.50 / 1,000 phone number validateds

Rating

0.0

(0)

Developer

oqen

oqen

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Clean up phone numbers from a CRM export, a lead list or a sign-up form. Every number is parsed with Google's libphonenumber metadata (via libphonenumber-js, the max dataset) and returned in standard formats with its type, country, original carrier, location and time zones.

Everything runs offline inside the Actor: no HLR lookups, no calls or SMS, no "who owns this number" databases. It is fast and cheap, and it doesn't touch personal data beyond what you send it.

What you get for each number

FieldExample
status / reasonvalid, or invalid with too_short, too_long, not_a_valid_number_for_region, needs_country_code_or_default_country, not_a_number
e164+14155552671, the format Twilio, WhatsApp and most CRMs want
international / national / rfc3966+1 415 555 2671 / (415) 555-2671 / tel:+14155552671
typeMOBILE, FIXED_LINE, FIXED_LINE_OR_MOBILE, TOLL_FREE, VOIP, PREMIUM_RATE, SHARED_COST, PAGER, UAN, ...
country, countryName, countryCodeUS, United States, +1
carrierNetwork the number range was originally assigned to, e.g. Vodafone. Numbers can be ported, so treat this as a hint.
locationCity or region from the prefix (San Francisco, CA, London) when it's more specific than the country
timeZones["America/Los_Angeles"], handy for scheduling calls
extension99 from +1 415 555 2671 ext. 99

Messy input is fine

  • 00 and US 011 international prefixes are converted to +
  • The UK-style +44 (0)20... trunk zero is removed
  • tel: links, dashes, dots, brackets, non-breaking characters and extensions are handled
  • Numbers without a country code are parsed with your defaultCountry
  • Extract from text: paste a page or an email thread and every phone number in it is found and validated

Input example

{ "phoneNumbers": ["(415) 555-2671", "00351 912 345 678", "+44 (0)20 7946 0000"], "defaultCountry": "US" }

Output example

{ "input": "00351 912 345 678", "valid": true, "status": "valid", "e164": "+351912345678", "international": "+351 912 345 678",
"national": "912 345 678", "rfc3966": "tel:+351912345678", "countryCode": "+351", "country": "PT", "countryName": "Portugal",
"type": "MOBILE", "carrier": "Vodafone", "location": null, "timeZones": ["Atlantic/Azores", "Europe/Lisbon"] }

Accuracy

The test suite cross-checks 2,019 numbers across all 245 regions (fixed line, mobile, toll-free and truncated variants) against Google's reference google-libphonenumber. They agree on validity, E.164 and type for 99.85%. The three differences come from small metadata version gaps (Saint Helena number types, one Paraguay range).

"Valid" means the number matches the official numbering plan for its country. It does not prove that the line is currently connected.

Pricing

Pay per event: one phone-validated event per number returned. Duplicates, blank and non-numeric rows (not_a_number), and numbers dropped by onlyValid or maxNumbers are free. 100,000 numbers usually take under a minute.