Bulk Phone Number Validator & Formatter (libphonenumber)
Pricing
$0.70 / 1,000 phone number checkeds
Bulk Phone Number Validator & Formatter (libphonenumber)
Use this when you need to check, clean or format phone numbers. $0.0007/number ($0.70 per 1,000); non-numbers and duplicates free. Input: {"phone":"0412 345 678","defaultCountry":"AU"}. Output: valid, E.164, line type, original carrier, region, time zones. Offline check, not a live line test.
Pricing
$0.70 / 1,000 phone number checkeds
Rating
0.0
(0)
Developer
Isaac
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 minutes ago
Last modified
Categories
Share
Bulk Phone Number Validator & Formatter API: E.164, Line Type, Carrier, Time Zone
Use this when you or your AI agent need to check, clean or format phone numbers. Paste numbers in any format, from any country, and get back clean JSON for each one:
- ✅ Valid or not, with a plain-English reason ("too short", "number range not in use", "missing area code")
- 🔢 Normalised formats: E.164 (
+61412345678), international, national andtel:URI, plus extensions - 📱 Line type: mobile, landline, toll-free, premium-rate, VoIP, shared-cost, pager and more
- 🌍 Country, region and city (for example "Mountain View, CA" or "London")
- 📡 Original carrier for mobile numbers (for example Optus, Vodafone, T-Mobile)
- 🕒 Time zones, so you know when it is polite to call
- 🚩 Expected-country check: flag numbers that are not from the countries you expect
- ♻️ De-duplication after normalising, so
0412 345 678and+61 412 345 678count once - 💸 $0.70 per 1,000 numbers. Text that is not a phone number and duplicates are free. No start fee
It runs fully offline on Google's open-source libphonenumber metadata (the library Android and Google use), so it is fast and private. 10,000 numbers take about a second.
What it does not do: it does not ring the number or query the mobile network (no HLR lookup), so it cannot tell you whether a line is currently connected, and the carrier shown is the original carrier of the number range, not the current one after porting. Live network lookups cost 10–50x more.
What can I use it for?
- Cleaning CRM and lead lists before importing them into HubSpot, Salesforce or a dialler
- Checking numbers before sending SMS: skip landlines, toll-free and invalid numbers
- Normalising form input to E.164 for Twilio, WhatsApp or your database
- Spotting fake or foreign sign-ups with the expected-country check
- Call scheduling: get the time zone of every number
- Pairing with the Bulk Email Verifier to clean whole contact lists
Input
| Field | Type | Description |
|---|---|---|
phone | string | One number (shortcut for agents) |
phones | array | Numbers in any format, up to 1,000,000 per run |
defaultCountry | string | ISO code for numbers written without +, e.g. AU, US, GB |
expectedCountries | array | Optional ISO codes; adds countryMatchesExpected |
language | string | Language for carrier and location names (default en) |
deduplicate | boolean | Skip repeats after normalising (default true) |
{"phones": ["0412 345 678", "+44 20 7946 0958", "+1 650 253 0000 ext 12", "12345", "call me"],"defaultCountry": "AU","expectedCountries": ["AU", "NZ"]}
Output
One dataset item per number:
{"input": "0412 345 678","valid": true,"possible": true,"e164": "+61412345678","international": "+61 412 345 678","national": "0412 345 678","rfc3966": "tel:+61-412-345-678","country": "AU","callingCode": 61,"nationalNumber": "412345678","extension": null,"lineType": "mobile","carrier": "Optus","location": null,"timeZones": ["Australia/Adelaide", "Australia/Brisbane", "Australia/Perth", "Australia/Sydney", "..."],"countryMatchesExpected": true,"reason": "valid number"}
An invalid number keeps the parsed parts and explains why:
{"input": "12345", "valid": false, "e164": null, "country": "AU", "reason": "right length but not a number range in use in this country (read as a AU number; add +country code if it is foreign)"}
lineType values: mobile, landline, landline_or_mobile (US/Canada numbers cannot be told apart from metadata), toll_free, premium_rate, shared_cost, voip, personal_number, pager, uan, voicemail, unknown.
Pricing
$0.0007 per phone number checked ($0.70 per 1,000). You pay only for text that could be read as a phone number, valid or invalid, because both answers are useful. Lines that are not phone numbers ("call me", empty cells) and duplicates are free. There is no start fee. Set Maximum cost per run and the Actor stops cleanly at your limit.
Use it from an AI agent
AI agents can call it through the Apify MCP server with https://mcp.apify.com/?tools=poised_beardlichen/phone-number-validator. A single number returns in a few seconds. It also works with Make, Zapier, n8n and Google Sheets through Apify integrations.
For large lists, start the run and fetch the results afterwards:
POST https://api.apify.com/v2/acts/poised_beardlichen~phone-number-validator/runswith{"phones": [...], "defaultCountry": "US"}- Poll
GET https://api.apify.com/v2/actor-runs/<runId>?waitForFinish=60untilSUCCEEDED GET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?clean=true
FAQ
Is a valid number guaranteed to be connected? No. Valid means the number has the right length and belongs to a range that is assigned in that country. It may still be disconnected or unused.
Why is the carrier sometimes empty? Carrier data exists only for mobile ranges in many countries, and some countries (for example the US) do not publish it. Ported numbers keep the original carrier.
Where does the data come from? From libphonenumber (Apache 2.0), via the phonenumbers Python port. Metadata is updated with each build.
Is my data shared? No. Numbers are processed inside your run and never sent to any third-party service.
Other tools by us
- Audio & Video Transcriber (Whisper): MP3, WAV, M4A and MP4 to text, timed segments and SRT subtitles at $0.006 per audio minute.
- Bulk Email Verifier: syntax, MX, disposable and role-address checks at $0.30 per 1,000 emails.
- Website Screenshot & PDF API: bulk screenshots and PDFs of any page with cookie banners and pop-ups removed.
- Website Screenshot & PDF for AI Agents: fast single-page screenshots and PDFs for agents, from $0.0015 per screenshot.
- PDF to Text & Markdown with OCR: turn PDFs, DOCX and scans into clean, LLM-ready Markdown.
- Image to Text OCR API: extract text from PNG, JPEG, TIFF and WebP images in 27 languages.
- Bulk PageSpeed & Lighthouse Checker: Lighthouse scores, Core Web Vitals and top fixes for many URLs.
- Website Tech Stack Detector: CMS, ecommerce, analytics, CDN and 7,600+ other technologies behind any website.
- Research Paper Search: arXiv, PubMed and Crossref papers plus legal open-access full text from $0.0015 per paper.
- SEC EDGAR Financials & Filings: US company financials, filings and 10-K sections as compact JSON.
- Website Legitimacy & Scam Check: domain age, SSL, look-alike brands, VAT and LEI signals at $0.008 per site.
- Company Contact & Profile Extractor: generic emails, phones, socials and profile from any company website at $0.004 per site.
- UK & Australia Company Check: ABN, ACN, ASIC and Companies House status and red flags from $0.003 per company.
- Company Careers & Open Jobs Lookup: open jobs from Greenhouse, Lever, Ashby and more at $0.0015 per job.
Support
Found a number that is classified wrongly? Open an issue on the Issues tab.