The NALENND® Telephone Number Type Identifier Database is used to determine whether a United States or Canadian telephone number is wireless (cellular), VoIP (voice over IP) or landline (wire line) based on current NPA NXX thousands block telephone carrier numbering resource assignments.
Updated monthly, the database lists all active telephone NPA (area code), NXX (exchange prefix) and thousands block identifier combinations. The NPA, NXX and thousands block identifier are used to identify the first seven digits of a ten digit North American telephone number.
This data provides a first step for those applications seeking U.S. FCC TCPA compliancy. These wireless do not call rules prohibit the initiation of telephone calls using automatic telephone dialing systems or an artificial or prerecorded voice to telephone numbers assigned to a paging service, cellular telephone service, specialized mobile radio service, or other radio common carrier service, or any service for which the called party is charged for the call.
While this database can correctly identify approximately 96% of all telephone numbers as either landline, VoIP or wireless, both the NALENND® Telephone Number Type Identifier Database and the iconnectv Wireless Ported Number database which contains United States nationwide ported telephone numbers that have been moved from landline to wireless and wireless to landline are required for those applications seeking 100% compliance with United States wireless do not call rules.
Produced: on or before 5th calendar day monthly
Current Release: November 3, 2024
Distribution Frequency: monthly
Distribution Format: Internet download
Data Field | Gold Edition | Premium Edition | Standard Edition | |
---|---|---|---|---|
Area Code (NPA) | Yes | Yes | Yes | |
Exchange Prefix (NXX) | Yes | Yes | Yes | |
1,000 Block Identifier | Yes | Yes | Yes | |
ISO 3166 Country Code | Yes | Yes | No | |
State or Province Abbreviation | Yes | Yes | No | |
Time Zone (UTC) | Yes | Yes | No | |
Daylight Savings Time (DST) | Yes | Yes | No | |
Number Type (BLOCKTYPE) | Yes | Yes | Yes | |
Landline to Wireless Port Counts | Yes | No | No | |
Wireless to Landline Port Counts | Yes | No | No | |
Operating Company Number (OCN) | Yes | No | No | |
Carrier Name | Yes | No | No |
The Gold Edition database provides the information required to determine if a United States or Canadian telephone number is wireless or landline based on original carrier allocation. This version additionally provides information to determine the time zone based on the geographic area associated with the telephone number. For United States thousands block entries the Gold Edition includes the count of landline to wireless and wireless to landline number ports for the block
CREATE DATABASE if not exists `nalennd`;
USE `nalennd`;
DROP TABLE IF EXISTS `tcpa`;
CREATE TABLE `tcpa`
(
`NPA` CHAR(3) NOT NULL,
`NXX` CHAR(3) NOT NULL,
`BLOCK` CHAR(1) NOT NULL,
`COUNTRY` CHAR(2) NOT NULL,
`STATE` CHAR(2) NOT NULL,
`UTC` CHAR(6) NOT NULL,
`DST` CHAR(1) NOT NULL,
`BLOCKTYPE` CHAR(1) NOT NULL,
`L2W_PORTS` INT(11) NOT NULL,
`W2L_PORTS` INT(11) NOT NULL,
`OCN` char(4) NOT NULL,
`COMPANY` varchar(128) default NULL,
PRIMARY KEY (`NPA`,`NXX`,`BLOCK`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8;
Sample DataThe Premium Edition database provides the information required to determine if a United States or Canadian telephone number is wireless or landline based on original carrier allocation. This version additionally provides information to determine the time zone based on the geographic area associated with the telephone number.
CREATE DATABASE if not exists `nalennd`;
USE `nalennd`;
DROP TABLE IF EXISTS `tcpa`;
CREATE TABLE `tcpa`
(
`NPA` CHAR(3) NOT NULL,
`NXX` CHAR(3) NOT NULL,
`BLOCK` CHAR(1) NOT NULL,
`COUNTRY` CHAR(2) NOT NULL,
`STATE` CHAR(2) NOT NULL,
`UTC` CHAR(6) NOT NULL,
`DST` CHAR(1) NOT NULL,
`BLOCKTYPE` CHAR(1) NOT NULL,
`RESERVED` VARCHAR(128) DEFAULT NULL,
PRIMARY KEY (`NPA`,`NXX`,`BLOCK`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8;
Sample DataThe Standard Edition database provides the minimum information required to determine if a United States or Canadian telephone number is wireless or landline based on original carrier allocation.
CREATE DATABASE if not exists `nalennd`;
USE `nalennd`;
DROP TABLE IF EXISTS `tcpa`;
CREATE TABLE `tcpa`
(
`NPA` CHAR(3) NOT NULL,
`NXX` CHAR(3) NOT NULL,
`BLOCK` CHAR(1) NOT NULL,
`BLOCKTYPE` CHAR(1) NOT NULL,
`RESERVED` VARCHAR(128) DEFAULT NULL,
PRIMARY KEY (`NPA`,`NXX`,`BLOCK`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8;
Sample DataDetermining whether a telephone number is wireless or landline is accomplished through a simple SQL query to the NALENND® data table. Assuming we have the telephone number (352) 357-1234 we would issue the following query. Upon success we would then retrieve the line type from the result set.
SELECT BLOCKTYPE
FROM tcpa
WHERE NPA='352' AND NXX='357' AND BLOCK='1' LIMIT 1;
While the NALENND® Telephone Number Type Identifier Database can identify approximately 97% of all United States telephone numbers as wireless or landline, for full TCPA Wireless-do-not-call compliancy the NALENND® must be augmented with the iconnectv Intermodal Ported Telephone Number data. Thus if we have loaded both the NALENND® and the iconnectv data in to our database we could use a simple SQL stored procedure to query the data.
Note this particular procedure is written for MySQL, implementing in other SQL platforms will be similar.
CREATE DEFINER=`root`@`%` PROCEDURE `linetype`(phone CHAR(10))
READS SQL DATA
BEGIN
DECLARE ltype CHAR(1) DEFAULT null;
DECLARE ported CHAR(1) DEFAULT 'N';
SELECT `btype` INTO ltype FROM `tcpa`
WHERE `NPA`=SUBSTRING(phone,1,3) AND `NXX`=SUBSTRING(phone,4,3) AND `BLOCK`=SUBSTRING(phone,7,1) LIMIT 1;
IF (ltype IS NOT NULL) THEN
/* we have found the number block in our NALENND data, check iconnectv to see if ported */
IF (ltype = 'S') THEN
IF EXISTS(SELECT 1 FROM `landline2wireless` WHERE `number`=phone LIMIT 1) THEN
/* number has been ported, was originally a landline */
SET ported = 'Y';
SET ltype = 'W';
ELSE
SET ltype = 'L';
END IF;
ELSE
IF EXISTS(SELECT 1 FROM `wireless2landline` WHERE `number`=phone LIMIT 1) THEN
/* number has been ported, was originally wireless */
SET ported = 'Y';
SET ltype = 'L';
ELSE
SET ltype = 'W';
END IF;
END IF;
END IF;
SELECT ltype,ported;
END
To use the stored procedure, again using the telephone number (352) 357-1234, we would issue our SQL query like so.
CALL linetype('3523571234');
We would then retrieve the ltype and ported values from our result set.