NANP Phone Carrier & Line Type Validator avatar

NANP Phone Carrier & Line Type Validator

Pricing

from $0.80 / 1,000 record scrapeds

Go to Apify Store
NANP Phone Carrier & Line Type Validator

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

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

  1. Submit a list of phone numbers in any reasonable format — E.164, national, or a bare 10-digit NANP number.
  2. 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.
  3. 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.
  4. 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
}
FieldTypeDefaultDescription
phoneNumbersarrayrequiredPhone numbers to validate. Any format works — E.164, national, or a bare 10-digit NANP number.
defaultRegionenumUSRegion assumed for a number with no country code. US or CA. Only matters for national-format input.
maxItemsinteger15Hard 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"]
}
FieldTypeDescription
inputstringOriginal input string, as supplied.
e164stringNormalised +1NPANXXXXXX form. Null when the number doesn't validate.
country_codestringCountry calling code — "1" for every NANP member.
national_numberstringNational significant number, digits only.
is_validbooleanNumbering-plan validity — not "does it ring."
is_possiblebooleanTrue when the number has a plausible length for its region.
region_codestringISO2 territory — US, CA, PR, VI, GU, AS, MP, BS, BB, JM, and other NANP members.
npastringArea code (NANP numbers only).
nxxstringCentral-office/exchange code (NANP numbers only).
thousand_blockstringThe 7th digit — carrier assignment happens at this level, not the NXX.
number_typestringfixed_line, mobile, fixed_or_mobile, voip, toll_free, premium, shared_cost, pager, or uan.
is_toll_freebooleanTrue for the seven NANP toll-free area codes.
toll_free_patternstringWhich toll-free area code matched (800, 833, 844, 855, 866, 877, 888).
carrier_ocnstringOperating Company Number — the carrier identifier of record.
carrier_namestringCarrier name of record for this thousand-block.
carrier_typestringILEC, CLEC, wireless, or VoIP-interconnected.
ilec_ocnstringIncumbent carrier's OCN for this rate centre.
ilec_namestringIncumbent carrier name for this rate centre.
is_wireless_blockbooleanTrue when the block is assigned to a wireless carrier — the TCPA-relevant flag.
is_voip_blockbooleanTrue when the block is assigned to a VoIP-interconnected CLEC.
rate_centerstringRate centre name.
rate_center_statestringState/province/territory of the rate centre.
latastringLocal Access and Transport Area code.
switch_cllistringCommon Language Location Identifier of the serving switch.
switch_typestringSwitch/office type code.
rate_center_lat / rate_center_lonnumberRate centre coordinates.
timezonestringIANA timezone derived from the rate centre's coordinates.
utc_offsetnumberCurrent UTC offset (hours) for that timezone.
local_time_nowstringCurrent local time at the rate centre — the field an outbound dialer actually needs.
is_within_calling_windowbooleanTrue between 08:00 and 21:00 local time — the TCPA calling-window check.
block_effective_datestringDate this block assignment took effect, when published.
block_disconnect_datestringDate this block was disconnected — a dead-number tell. Null if still active.
is_disconnected_blockbooleanTrue when a disconnect date is on file for this block.
assignment_last_updatedstringDate the underlying record for this block was last updated.
carrier_confidencestringexact_block, nxx_level, or plan_only — honest about how granular the carrier match is.
portability_caveatbooleanTrue whenever carrier data is returned — a ported number's block carrier is the original assignee, not necessarily the current one.
validation_reasonsarrayRule ids behind is_valid / number_type / carrier_confidence — auditable, not a black box.
scraped_atstringWhen 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.