Bulk Phone Number Validator — E.164, Carrier & Line Type avatar

Bulk Phone Number Validator — E.164, Carrier & Line Type

Pricing

from $0.60 / 1,000 results

Go to Apify Store
Bulk Phone Number Validator — E.164, Carrier & Line Type

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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:

FieldDescription
inputThe number exactly as you supplied it
isValidWhether the number is valid for its country
isPossibleWhether the number is possible (right length/prefix)
e164E.164 format, e.g. +491701234567
internationalInternational format, e.g. +49 170 1234567
nationalNational format, e.g. 0170 1234567
uritel: URI, e.g. tel:+491701234567
countryCodeCountry calling code, e.g. 49
countryISO country, e.g. DE
countryNameCountry name, e.g. Germany
numberTypeLine type: MOBILE, FIXED_LINE, VOIP, TOLL_FREE, PREMIUM_RATE, FIXED_LINE_OR_MOBILE, …
isMobiletrue if the line can typically receive SMS
locationGeographic area, e.g. San Francisco, CA
carrierCarrier / network, e.g. T‑Mobile
timezoneTimezone(s), e.g. Europe/Berlin
errorPopulated for unparseable or invalid numbers
scrapedAtISO 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

FieldTypeDefaultDescription
phoneNumbersarrayRequired. Numbers to validate. Any format is accepted.
defaultCountrystringISO code (US, GB, DE…) for numbers written without a country code.
includeCarrierDatabooleantrueLook up carrier, timezone and area for valid numbers. Turn off for a faster, validation‑only run.
maxConcurrencyinteger50How 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

  1. Click Try for free.
  2. Paste your phone numbers into the Phone numbers field.
  3. (Optional) Set a Default country if some numbers have no country code.
  4. Click Start.
  5. 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

numberTypeMeaning
MOBILEMobile / cell number
FIXED_LINELandline
FIXED_LINE_OR_MOBILECould be either (common in the US/Canada)
VOIPInternet / VoIP number
TOLL_FREEToll‑free (e.g. 800 numbers)
PREMIUM_RATEPremium‑rate number
SHARED_COSTShared‑cost number
PERSONAL_NUMBERPersonal number
PAGERPager
UANUniversal access number
VOICEMAILVoicemail 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 set defaultCountry.
  • Filter isValid = true first, then isMobile = true for SMS campaigns.
  • Turn off includeCarrierData for the fastest possible run on millions of numbers when you only need validation and formatting.
  • Use e164 as the canonical key when you dedupe or import into a CRM.
  • Mixed‑country lists work best in international format, since a single defaultCountry applies 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 carrier as 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.