Bulk Phone Number Validator — E.164, Carrier & Line Type
Pricing
from $0.60 / 1,000 results
Bulk Phone Number Validator — E.164, Carrier & Line Type
Validate and format thousands of phone numbers at once: validity, E.164 / international / national format, line type (mobile, landline, VoIP, toll-free), country, carrier, timezone and area. Fast, offline, keyless phone-list cleaning for CRM, SMS and leads.
Pricing
from $0.60 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Bulk Phone Number Validator — E.164, Line Type, Carrier & Country
Validate and clean thousands of phone numbers at once. Paste a list and get, for every number: is it valid, its E.164 / international / national format, the line type (mobile, landline, VoIP, toll-free…), the country, the carrier, the timezone and the geographic area.
Fast, offline and keyless — no API, no credits, no rate limits. The phone‑data layer you need for CRM hygiene, SMS/WhatsApp deliverability, lead validation and analytics.
Why this Actor?
A raw list of phone numbers is messy: mixed formats, missing country codes, typos, landlines mixed with mobiles, and invalid entries that waste your SMS budget. Before you dial, text or import them, you need to know which numbers are real, what type they are and where they belong.
This Actor does exactly that, in bulk:
- Validates each number against the official numbering rules of its country.
- Normalises it to clean E.164 (
+491701234567) plus international and national formats. - Classifies the line type — mobile, landline, VoIP, toll‑free and more.
- Enriches valid numbers with country, carrier, timezone and geographic area.
Because it runs on embedded numbering metadata, it's completely offline: no third‑party API, no key, no per‑lookup fee, and no rate limit. That makes it ideal for very large lists.
What you get — output fields
One record per phone number:
| Field | Description |
|---|---|
input | The number exactly as you supplied it |
isValid | Whether the number is valid for its country |
isPossible | Whether the number is possible (right length/prefix) |
e164 | E.164 format, e.g. +491701234567 |
international | International format, e.g. +49 170 1234567 |
national | National format, e.g. 0170 1234567 |
uri | tel: URI, e.g. tel:+491701234567 |
countryCode | Country calling code, e.g. 49 |
country | ISO country, e.g. DE |
countryName | Country name, e.g. Germany |
numberType | Line type: MOBILE, FIXED_LINE, VOIP, TOLL_FREE, PREMIUM_RATE, FIXED_LINE_OR_MOBILE, … |
isMobile | true if the line can typically receive SMS |
location | Geographic area, e.g. San Francisco, CA |
carrier | Carrier / network, e.g. T‑Mobile |
timezone | Timezone(s), e.g. Europe/Berlin |
error | Populated for unparseable or invalid numbers |
scrapedAt | ISO timestamp |
A few notes on coverage: carrier is available mainly for mobile numbers (landlines don't map to a single carrier), and location is available mainly for geographic numbers (mobiles in many countries aren't tied to a city). This mirrors how the underlying numbering plans work.
Example output
{"input": "0170 1234567","isValid": "true","isPossible": "true","e164": "+491701234567","international": "+49 170 1234567","national": "0170 1234567","uri": "tel:+491701234567","countryCode": "49","country": "DE","countryName": "Germany","numberType": "MOBILE","isMobile": "true","location": "","carrier": "T-Mobile","timezone": "Europe/Berlin","scrapedAt": "2026-07-09T12:00:00.000Z"}
{"input": "+1 415-555-2671","isValid": "true","e164": "+14155552671","international": "+1 415 555 2671","national": "(415) 555-2671","countryCode": "1","country": "US","countryName": "United States","numberType": "FIXED_LINE_OR_MOBILE","isMobile": "true","location": "San Francisco, CA","carrier": "","timezone": "America/Los_Angeles","scrapedAt": "2026-07-09T12:00:00.000Z"}
Input
| Field | Type | Default | Description |
|---|---|---|---|
phoneNumbers | array | — | Required. Numbers to validate. Any format is accepted. |
defaultCountry | string | — | ISO code (US, GB, DE…) for numbers written without a country code. |
includeCarrierData | boolean | true | Look up carrier, timezone and area for valid numbers. Turn off for a faster, validation‑only run. |
maxConcurrency | integer | 50 | How many numbers to process in parallel. |
Numbers already in international format
{"phoneNumbers": ["+14155552671", "+442071838750", "+491701234567"]}
National‑format numbers (set a default country)
{"phoneNumbers": ["0170 1234567", "030 12345678", "0151 22334455"],"defaultCountry": "DE"}
Fast, validation‑only run on a huge list
{"phoneNumbers": ["+14155552671", "..."],"includeCarrierData": false}
Use cases in detail
1. CRM & database hygiene
Run your entire contact database through the Actor and flag every invalid number, normalise the rest to E.164, and tag each one as mobile or landline. Clean data means fewer failed calls and texts.
2. SMS / WhatsApp deliverability
SMS and WhatsApp only work on mobile numbers. Filter isMobile = true (and drop isValid = false) before a campaign so you never pay to text a landline or an invalid number.
3. Lead validation
Validate phone numbers captured from forms, ads or other scrapers in bulk. Reject fakes and typos at the source and keep only reachable leads.
4. Routing, timezone & compliance
Use timezone to call or message people at a sensible local hour, and country / numberType to apply the right rules (many regions restrict calls to certain line types or hours).
5. Analytics & segmentation
Segment your audience by country, carrier or line type for reporting, geo‑analysis and targeting.
6. Deduplication
Normalising every number to E.164 lets you dedupe a list reliably, since the same number written five different ways collapses to one canonical value.
How to use it
- Click Try for free.
- Paste your phone numbers into the Phone numbers field.
- (Optional) Set a Default country if some numbers have no country code.
- Click Start.
- Export the results as JSON, CSV, Excel or HTML table, or pull them from the Apify API.
Validation is instant; enrichment (carrier/timezone/area) adds a small lookup per valid number, so turning it off makes huge lists even faster.
Calling from the API
Start a run:
curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{ "phoneNumbers": ["+14155552671", "0170 1234567"], "defaultCountry": "US" }'
Fetch the results (JSON or CSV):
$curl "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs/last/dataset/items?token=YOUR_APIFY_TOKEN&format=csv"
Line types explained
numberType | Meaning |
|---|---|
MOBILE | Mobile / cell number |
FIXED_LINE | Landline |
FIXED_LINE_OR_MOBILE | Could be either (common in the US/Canada) |
VOIP | Internet / VoIP number |
TOLL_FREE | Toll‑free (e.g. 800 numbers) |
PREMIUM_RATE | Premium‑rate number |
SHARED_COST | Shared‑cost number |
PERSONAL_NUMBER | Personal number |
PAGER | Pager |
UAN | Universal access number |
VOICEMAIL | Voicemail access |
When the type can't be determined for a valid number, numberType is empty.
Tips for the best results
- Include the country code (
+…) whenever you can — it's the most reliable input. Otherwise setdefaultCountry. - Filter
isValid = truefirst, thenisMobile = truefor SMS campaigns. - Turn off
includeCarrierDatafor the fastest possible run on millions of numbers when you only need validation and formatting. - Use
e164as the canonical key when you dedupe or import into a CRM. - Mixed‑country lists work best in international format, since a single
defaultCountryapplies to all national‑format numbers.
Frequently asked questions
Does it call or text the numbers? No. It never contacts the numbers. It checks them against official numbering rules and metadata — nothing is dialled or messaged, so there's no risk to the number's owner and no cost.
Is it accurate?
Validation and formatting use the same industry‑standard numbering metadata that powers phone validation in major apps. Carrier data reflects the original carrier for a number's prefix; because of number portability, a person may have since switched networks, so treat carrier as a strong hint rather than a guarantee.
Why is carrier or location empty?
Carrier is generally only available for mobile numbers; geographic area is generally only available for landline/geographic numbers. Empty simply means that field doesn't apply to that number.
Do I need an API key? No. It's fully offline — no key, no external service, no rate limit.
How many numbers can it handle? From a handful to millions. Validation is extremely fast; enrichment adds a tiny per‑number lookup.
What formats are accepted?
Any — E.164 (+14155552671), international (+1 415‑555‑2671), or national ((415) 555‑2671 with defaultCountry: US).
In which format can I export? JSON, CSV, Excel, HTML table, or via the Apify API.
Responsible use
Phone numbers are personal data. You are responsible for using the results lawfully:
- Comply with telemarketing, SMS and anti‑spam laws in the relevant jurisdictions (for example TCPA in the US, GDPR and ePrivacy in the EU) and honour do‑not‑call registries and opt‑outs.
- Only process numbers you have a lawful basis and a legitimate reason to handle.
- Treat
carrieras an original‑network hint, not a definitive current‑network lookup.
This Actor is provided for lawful data‑quality, deliverability and analytics purposes. It does not provide legal advice.
Support
Need extra fields (e.g. number portability lookups, additional formats) or higher throughput? Open an issue from the Actor's page and describe what you need.