logoPandorLabs
managed data service

Phone Number Validation & Carrier Data

Validate a number, identify its country and line type, and name the operator its block is allocated to — with a confidence value and refresh date on every answer

  • Validation, line type, and carrier in one call
  • Built on official national number allocations
  • Confidence and refresh date on every response, porting stated plainly
  • Take the allocation table itself, not just the API
Official Allocations
Dated & Scored Answers
No Personal Data
lookup
+33 6 12 34 56 78
validtrue
countryFR · +33
typemobile
carrierOrange France
prefix612
regionFrance
confidence: allocation — block holder, not corrected for portability

Illustrative example, not live data or a coverage metric.

why it holds up

A Carrier Answer You Can Trace

Most phone validation APIs hand back a carrier name and a price per lookup. What they rarely hand back is when the answer was last true, or how confident they are — which is exactly what you need when a number decides whether a message sends, a signup clears, or a payout goes out.

What if every answer told you how sure it is?

Validity and country are decided offline, with no network call. The carrier comes from the official national allocation of number blocks, refreshed on your schedule. Live routing, where it matters, is checked on request.

Three layers, one response — with the confidence and the refresh date attached, so a result you do not believe can be checked rather than argued about.

3
Numbering plans imported
149K+
Allocation blocks
1
Indexed query per lookup

how a lookup is answered

Three Layers, One Answer

Each layer answers a different question, and each is authoritative for its own. Nothing is inferred from a field it does not own.

Parsing — is it real?

Numbering metadata evaluated offline decides validity, country, calling code, and the E.164 and national formats. No network call, no rate limit, no per-lookup fee.

Allocation — whose block is it?

Every prefix of the national number is tested against the allocated ranges in one indexed query, and the longest match wins. That match carries the operator, the line type, the region, and when it was last refreshed.

Routing — where does it go today?

Live routing records, checked on request. A routing hit survives porting and outranks the allocation, which is why a response tells you when one was found.

Offline
Validation path
1 query
Per carrier lookup
Per-record
Refresh date
Opt-in
Live routing check

coverage

Countries Covered Today

Listed as they actually are, including where a country publishes less than you would like. Adding a country is a contained piece of work, not a rebuild.

+33

France

Mobile, fixed and non-geographic

Every allocated block with its operator and official line type, down to five-digit prefixes for the non-geographic ranges.

+44

United Kingdom

Every number range and sub-block

Every allocated sub-block across all number ranges, normalised into one prefix table with operator and line type.

+1

United States

Code holder per NPA-NXX

Code holder per NPA-NXX. US allocations carry no official line type, and porting is pervasive — treat the result as the code holder rather than the serving carrier.

+91

India

Telecom Circle per mobile MSC code

Every allotted five-digit mobile series with its licensee and Telecom Circle, reconciled across re-allotments and withdrawals. Names the allotted Circle, not the post-MNP operator, and marks unresolved series instead of guessing.

applications

Where a Number Decides Something

Anywhere a phone number gates a decision, the cost of a wrong answer is paid downstream.

Signup & Fraud Screening

Reject impossible numbers before they reach your OTP provider, and flag line types that correlate with abuse — VoIP and non-geographic ranges are visible in the allocation, not guessed at.

SMS & Voice Cost Control

Route and price by line type and operator before you send. Mobile, fixed, premium-rate, and non-geographic blocks carry very different economics, and every block is labelled.

CRM Hygiene

Normalise a contact database to E.164, drop the unreachable, and enrich the rest with country, region, and carrier — as a batch over the whole table, not one paid lookup at a time.

Telecom Analytics

Take the allocation table itself and analyse operator footprint, block utilisation, or numbering-plan change over time. Each sync is retained, so movement between plans is measurable.

KYC & Onboarding Evidence

Attach a dated, confidence-scored validation result to an onboarding record, so a reviewer months later can see what was checked and against what.

Deliverability Monitoring

Correlate failed sends against carrier and block rather than against raw prefixes, and see whether a delivery problem is concentrated in one operator's ranges.

delivery and compliance

Ready for Access Requirements

The details your security, legal, and data teams will ask about before the first dataset changes hands.

No personal data

Numbering plans describe ranges and the operators holding them. No subscribers, no lookups of individuals.

Public data only

Official, publicly available allocation data, dated per record. Nothing behind an authentication wall.

Runs in your stack

Take the allocation table as a dataset and resolve numbers inside your own perimeter, with nothing leaving it.

Any delivery target

API, or JSON, CSV, and Parquet into S3, GCS, Snowflake, or BigQuery on the cadence you set.

questions

Frequently Asked Questions

Everything you need to know before you send us your first request.

How is the carrier determined?
From the official national allocation of number blocks: which operator holds which range of numbers. We maintain that allocation as one normalised prefix table per country and answer each lookup with a single indexed query. Every result carries the date its allocation was last refreshed and a confidence value, so you can see how current and how certain an answer is instead of trusting a black box.
Does it account for number portability?
Not on its own, and we would rather say so up front than have you find out in production. The allocation table names the block’s original holder, so for a number that has been ported the operator we return is the one that was allocated the range, not necessarily the one serving it today. Every response carries a confidence field and a note stating exactly that. Two things can beat it: a live routing record, which we check on request and which does survive porting, or a paid HLR query over SS7 — if your use case genuinely needs live routing, we will tell you that rather than sell you allocation data as if it were the same thing.
What does a lookup actually return?
Validity and possibility, the E.164, international and national formats, the country and calling code, the line type, the carrier and its prefix block, the region, and the date the allocation was last refreshed — plus a confidence value and human-readable notes explaining how the answer was reached. Parsing is authoritative for validity and country; the allocation table is authoritative for the carrier, and where the two disagree about line type the allocation wins.
Which countries are covered, and can you add ours?
France, the United Kingdom, the United States, and India are imported today. Adding a country is a contained piece of work rather than a rebuild: refreshes, pruning, sync history, and endpoints are all shared, so a new country is mostly a matter of mapping its allocation format. Most EU countries are within reach — tell us which one you need and we will scope it.
How fresh is the allocation data?
Each country is re-imported on a schedule you choose, and every run is recorded with what it fetched, what it upserted, what it pruned, and how long it took, so staleness is observable rather than assumed. Refreshes upsert and then prune by sync timestamp, which means lookups keep serving the previous plan while a sync is running — there is no window where the table is half-built. A run that parses zero rows is treated as a parsing failure and leaves the existing table untouched, because an empty file is a bug, never an empty numbering plan.
What does the allocation data contain, and how can I access it?
Number allocations describe ranges and the operators holding them, rather than individual subscribers. Query the lookup API or export collected rows as JSON or CSV. Contact us to discuss other delivery and data handling requirements.

Still have questions?

Talk to an engineer

Ready to Get Started?

Talk to us about your sources and volume. We'll return a sample dataset from your target sites before you commit to anything.

Scoped API Access
Discuss Data Requirements
Run tracking

© 2026 PandorLabs LLC. All rights reserved.