NANP Phone Carrier & Line Type Validator
Pricing
from $0.80 / 1,000 record scrapeds
NANP Phone Carrier & Line Type Validator
Validate any NANP phone number and get back the real carrier of record, ILEC, rate centre, and a wireless-vs-landline flag from public numbering-plan data — plus local time and a TCPA calling-window check, not a format parse.
Pricing
from $0.80 / 1,000 record scrapeds
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Bulk Phone Number Carrier & Line Type Validator (NANP)
Validate US, Canadian, and wider NANP phone numbers and get back the carrier of record, not just a format check. Returns operating company, incumbent carrier, wireless-vs-landline classification, rate centre, local time, and a TCPA calling-window flag for every number you submit.
Carrier Validator Features
- Numbering-plan validation for any country —
is_valid,is_possible,number_type,region_code. - Real carrier of record for NANP numbers — operating company name, OCN, and the incumbent carrier for that rate centre. Most "carrier lookup" tools stop at guessing from the area code.
- Wireless-vs-landline flag at the thousand-block level. That's the granularity carrier assignment actually happens at, so an NXX-level guess is wrong for any pooled prefix.
- TCPA calling-window check — local time at the number's rate centre, derived from real coordinates, plus a boolean for whether it's currently between 08:00 and 21:00 there.
- Dead-number signal — flags a thousand-block that's on file as disconnected.
- Honest confidence labels on every row (
exact_block,nxx_level,plan_only) instead of pretending every answer is equally certain.
Who Uses Phone Carrier & Line Type Data?
- TCPA compliance reviewers — confirm a number is wireless before a campaign treats it as landline, and check the calling window before a dial, not after a complaint.
- SMS / outbound sales teams — wireless vs. landline decides whether a text will even deliver. Knowing before you dial beats finding out from a bounce report.
- CRM hygiene runs — validate and enrich a phone column in the same pass you're already running an email or address cleanup in.
- Lead-gen and list brokers — attach a real carrier field to a list instead of the offline format guess every other tool ships.
- Debt collection and skip-tracing shops — the dead-number signal and portability caveat matter more here than almost anywhere else.
How the Carrier Validator Works
- Submit a list of phone numbers in any reasonable format — E.164, national, or a bare 10-digit NANP number.
- Each number gets a full numbering-plan validation, then, for NANP numbers, the actor resolves the exact thousand-block that owns it against public NANP number-administration data.
- Rate-centre coordinates feed a timezone lookup, which produces the number's local time right now and whether it falls inside the 08:00–21:00 calling window.
- You get one row per input number, in the order you submitted them, with an honest confidence label on the carrier fields.
Input
{"phoneNumbers": ["+1 212-380-4567","+1 800 555 0100","not a phone number"],"defaultRegion": "US","maxItems": 15}
| Field | Type | Default | Description |
|---|---|---|---|
phoneNumbers | array | required | Phone numbers to validate. Any format works — E.164, national, or a bare 10-digit NANP number. |
defaultRegion | enum | US | Region assumed for a number with no country code. US or CA. Only matters for national-format input. |
maxItems | integer | 15 | Hard cap on the number of phone numbers processed per run. |
Carrier Validator Output Fields
{"input": "+1 212-380-4567","e164": "+12123804567","country_code": "1","national_number": "2123804567","is_valid": true,"is_possible": true,"region_code": "US","npa": "212","nxx": "380","thousand_block": "4","number_type": "fixed_line","is_toll_free": false,"toll_free_pattern": null,"carrier_ocn": "829J","carrier_name": "PAETEC ITEL, LLC","carrier_type": "CLEC","ilec_ocn": "9104","ilec_name": "VERIZON NEW YORK, INC.","is_wireless_block": false,"is_voip_block": false,"rate_center": "New York City Zone 01","rate_center_state": "NY","lata": "132","switch_clli": "NYCMNYBXX6X","switch_type": "POI","rate_center_lat": 40.739362,"rate_center_lon": -73.991043,"timezone": "America/New_York","utc_offset": -4,"local_time_now": "2026-09-28T15:42:00","is_within_calling_window": true,"block_effective_date": null,"block_disconnect_date": null,"is_disconnected_block": false,"assignment_last_updated": "2026-09-01","carrier_confidence": "exact_block","portability_caveat": true,"validation_reasons": ["POSSIBLE_LENGTH_OK", "NUMBERING_PLAN_VALID", "NANP_DECOMPOSED", "CARRIER_BLOCK_EXACT"]}
| Field | Type | Description |
|---|---|---|
input | string | Original input string, as supplied. |
e164 | string | Normalised +1NPANXXXXXX form. Null when the number doesn't validate. |
country_code | string | Country calling code — "1" for every NANP member. |
national_number | string | National significant number, digits only. |
is_valid | boolean | Numbering-plan validity — not "does it ring." |
is_possible | boolean | True when the number has a plausible length for its region. |
region_code | string | ISO2 territory — US, CA, PR, VI, GU, AS, MP, BS, BB, JM, and other NANP members. |
npa | string | Area code (NANP numbers only). |
nxx | string | Central-office/exchange code (NANP numbers only). |
thousand_block | string | The 7th digit — carrier assignment happens at this level, not the NXX. |
number_type | string | fixed_line, mobile, fixed_or_mobile, voip, toll_free, premium, shared_cost, pager, or uan. |
is_toll_free | boolean | True for the seven NANP toll-free area codes. |
toll_free_pattern | string | Which toll-free area code matched (800, 833, 844, 855, 866, 877, 888). |
carrier_ocn | string | Operating Company Number — the carrier identifier of record. |
carrier_name | string | Carrier name of record for this thousand-block. |
carrier_type | string | ILEC, CLEC, wireless, or VoIP-interconnected. |
ilec_ocn | string | Incumbent carrier's OCN for this rate centre. |
ilec_name | string | Incumbent carrier name for this rate centre. |
is_wireless_block | boolean | True when the block is assigned to a wireless carrier — the TCPA-relevant flag. |
is_voip_block | boolean | True when the block is assigned to a VoIP-interconnected CLEC. |
rate_center | string | Rate centre name. |
rate_center_state | string | State/province/territory of the rate centre. |
lata | string | Local Access and Transport Area code. |
switch_clli | string | Common Language Location Identifier of the serving switch. |
switch_type | string | Switch/office type code. |
rate_center_lat / rate_center_lon | number | Rate centre coordinates. |
timezone | string | IANA timezone derived from the rate centre's coordinates. |
utc_offset | number | Current UTC offset (hours) for that timezone. |
local_time_now | string | Current local time at the rate centre — the field an outbound dialer actually needs. |
is_within_calling_window | boolean | True between 08:00 and 21:00 local time — the TCPA calling-window check. |
block_effective_date | string | Date this block assignment took effect, when published. |
block_disconnect_date | string | Date this block was disconnected — a dead-number tell. Null if still active. |
is_disconnected_block | boolean | True when a disconnect date is on file for this block. |
assignment_last_updated | string | Date the underlying record for this block was last updated. |
carrier_confidence | string | exact_block, nxx_level, or plan_only — honest about how granular the carrier match is. |
portability_caveat | boolean | True whenever carrier data is returned — a ported number's block carrier is the original assignee, not necessarily the current one. |
validation_reasons | array | Rule ids behind is_valid / number_type / carrier_confidence — auditable, not a black box. |
scraped_at | string | When this record was produced. |
FAQ
How do I look up the carrier for a phone number?
Pass it in phoneNumbers in any reasonable format. The validator returns the carrier of record, the incumbent carrier, and a wireless-vs-landline flag in the same row as the standard numbering-plan checks.
Does this work for Canadian numbers?
Yes — NANP covers the US, Canada, and a handful of Caribbean members, and all of them share the same numbering structure. Set defaultRegion to CA if you're passing bare national-format numbers without a country code.
What does carrier_confidence actually mean?
exact_block means the answer is specific to your number's exact thousand-block. nxx_level means the whole exchange is assigned to one carrier so there's no finer distinction to make. plan_only means there's no carrier assignment on file — either the number is outside NANP, or the prefix is unassigned or reserved.
Can I tell if a number is a landline or a cell phone?
That's is_wireless_block. Most numbering-plan-only validators can't answer this for NANP numbers at all — the plan itself doesn't separate mobile ranges the way many other countries do, so this validator answers it from the carrier assignment instead.
Do I need an account or API key?
No. Submit numbers and get results — no signup, no key, no per-number vendor fee.
Need More Features?
Need a different field, a bulk-file input, or coverage beyond NANP? File an issue or get in touch.
Why Use This Carrier Validator?
- Answers the question everyone else guesses at — real carrier of record, not a format parse dressed up as one.
- Built for the compliance use case, not just the sales one — the wireless flag and calling-window boolean are the two facts a TCPA-conscious dialer actually needs, computed together instead of pieced together from two tools.
- Says what it doesn't know — a ported number, an unassigned prefix, or a non-NANP number all come back with an honest confidence label instead of a confident-looking wrong answer.