BSG utilizes HTTP cookies (and similar or complementary technologies) to 1) make this website safe, functional, and accessible (through the use of mandatory cookies) and 2) understand how you use our website (through the use of optional cookies) in order to improve your experience and to provide you with personalized content.

The information in the cookie text files may be related to your personal preferences or your device and is intended to make the site operate according to your expectations. The information contained in cookies does not usually identify your identity directly but is helpful in providing you with a more personalized user experience.

In accordance with the requirements of the General Data Protection Regulation (GDPR) privacy and security law that governs how the personal data of individuals in the EU may be processed and transferred, we provide you the possibility to prohibit the use of certain types of cookies when you use our website.

Read our Cookie Notice and the Privacy Policy for detailed information on how BGS collects and uses cookies. Please note that prohibiting the use of certain types of cookies may affect your interaction with the website and limit the accessibility of services we offer you. Choose the appropriate category below to learn more and to disable cookies.

Accept All cookies*
*Recommended for comfortable use of the site
Accept only necessary cookies
Accept only selected cookies
Necessary cookies
Social media
Analytics
Marketing
Developer Docs
Number Intelligence

Number Verifier

1. General Information

The Number Verifier service is designed to validate mobile phone numbers by checking their live status, current serving operator, country and number portability indicator.

Integration is available via two methods: HTTP API and ENUM API.

The service supports IP- and port-based authentication and offers test endpoints to verify integration correctness.

2. HTTP API

2.1. Authentication

HTTP API queries require authentication to identify the client, return appropriate results and ensure security.

Authentication is based on the client's IP address, as specified in their profile, and the port used during the query.

Prior to using the HTTP API for Number Verifier queries (in both test and production environments), the client should submit a list of IP addresses to their account manager for authentication purposes.

2.2. Query Format

Method: GET / POST

Production:

Domain: hlr.bsg.world
Port: 5011
URL syntax: https://hlr.bsg.world:5011/msisdn/{NUMBER}
URL syntax (optional)*: https://hlr.bsg.world:5011/msisdn/{NUMBER}/tariff/{TARIFF_ID}

*HTTP API also allows selecting a tariff by sending its code in the query (optional, only for clients with multiple tariffs).

Testing:

Domain: hlr-test.bsg.world
Port: 5013
URL syntax: https://hlr-test.bsg.world:5013/msisdn/{NUMBER}

{NUMBER} represents the MSISDN (telephone number in international format) without the “+” sign.

{TARIFF_ID} represents the code of the tariff in the BSG system.

2.3. Retrieving Number Verifier Resolution for a Number

Description:Returns information about a mobile number including its country, MCC/MNC, current serving operator, number portability indicator, live status and additional attributes (refer to Section 5 for details).

2.3.1. Query Example (production):

Standard query:

https://hlr.bsg.world:5011/msisdn/380123456789
              

Optional query (with tariff ID):

https://hlr.bsg.world:5011/msisdn/380123456789/tariff/22
              

2.3.2. Query Example (testing):

https://hlr-test.bsg.world:5013/msisdn/380123456789
              

2.3.3. Response Example

Success:

{
  "tn": "380123456789"
  "cc": "UA"
  "cn": "lifecell"
  "mcc": "255"
  "mnc": "06"
  "sii": 1
  "npi": false
  "nt": "mobile"
  "ls": "000"
  "rc": "000"
}
              

Error (only for Reason Code ranges 100 - 199):

{
  "tn": "380123456789"
  "cc": "UA"
  "cn": "lifecell"
  "mcc": "255"
  "mnc": "06"
  "sii": 1
  "npi": false
  "nt": "mobile"
  "ls": "201"
  "rc": "120"
}
              

Error (only for Reason Code ranges 010 - 070):

{
  "rc": "010"
}
              

Note: Refer to Sections 5–7 for details on the definition of the response fields.

3. ENUM API

3.1. Authentication

ENUM API queries require authentication to identify the client, return appropriate results and ensure security.

Authentication is based on the client's IP address, as specified in their profile, and the port used during the query.

Prior to using the ENUM API for Number Verifier queries (in both test and production environments), the client should submit a list of IP addresses to their account manager for authentication purposes.

3.2. Query Format

Production:

Server IP address: 141.95.255.235
Port: 5001
Query syntax: dig @141.95.255.235 -p 5001 -t naptr {NUMBER}.enum

Testing:

Server IP address: 141.95.255.235
Port: 5003
Query syntax: dig @141.95.255.235 -p 5003 -t naptr {NUMBER}.enum

{NUMBER} represents the MSISDN (telephone number in international format) without the “+” sign.

Note: Queried MSISDN must be reversed and dot-separated (e.g., 3801234567899.8.7.6.5.4.3.2.1.0.8.3).

3.3. Retrieving Number Verifier Resolution for a Number

Description: Returns information about a mobile number including its country, MCC/MNC, current serving operator, number portability indicator, live status and additional attributes (refer to Section 5 for details).

3.3.1. Query Example (production):

dig @141.95.255.235 -p 5001 -t naptr 9.8.7.6.5.4.3.2.1.0.8.3.enum
              

3.3.2. Query Example (testing):

dig @141.95.255.235 -p 5003 -t naptr 9.8.7.6.5.4.3.2.1.0.8.3.enum
              

3.3.3. Response Example:

Success:

; <<>> DiG 9.20.4-3ubuntu1.2-Ubuntu <<>> @141.95.255.235 -p 5001 -t naptr 9.8.7.6.5.4.3.2.1.0.8.3.enum
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38477
;; flags: qr; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;9.8.7.6.5.4.3.2.1.0.8.3.enum.   IN  NAPTR

;; ANSWER SECTION:
9.8.7.6.5.4.3.2.1.0.8.3.enum. 300 IN NAPTR 100 10 "U" "E2U+pstn:tel" "!^.*$!tn:380123456789;cc:UA;cn:lifecell;mcc:255;mnc:06;sii:1;npi:false;nt:mobile;ls:000;rc:000!" .

;; Query time: 32 msec
;; SERVER: 141.95.255.235#5001(141.95.255.235) (UDP)
;; WHEN: Tue Aug 11 11:11:11 EEST 2025
;; MSG SIZE  rcvd: 174
              

Error (only for Reason Code ranges 100 - 199):

; <<>> DiG 9.20.4-3ubuntu1.2-Ubuntu <<>> @141.95.255.235 -p 5001 -t naptr 9.8.7.6.5.4.3.2.1.0.8.3.enum
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44972
;; flags: qr; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;9.8.7.6.5.4.3.2.1.0.8.3.enum.   IN  NAPTR

;; ANSWER SECTION:
9.8.7.6.5.4.3.2.1.0.8.3.enum. 300 IN NAPTR 100 10 "U" "E2U+pstn:tel" "!^.*$!tn:380123456789;cc:UA;cn:lifecell;mcc:255;mnc:06;sii:1;npi:false;nt:mobile;ls:201;rc:120!" .

;; Query time: 38 msec
;; SERVER: 141.95.255.235#5001(141.95.255.235) (UDP)
;; WHEN: Tue Aug 11 11:11:11 EEST 2025
;; MSG SIZE  rcvd: 174
              

Error (only for Reason Code ranges 010 - 070):

; <<>> DiG 9.20.4-3ubuntu1.2-Ubuntu <<>> @141.95.255.235 -p 5001 -t naptr 9.8.7.6.5.4.3.2.1.0.8.3.enum
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 80127
;; flags: qr; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;9.8.7.6.5.4.3.2.1.0.8.3.enum.   IN  NAPTR

;; ANSWER SECTION:
9.8.7.6.5.4.3.2.1.0.8.3.enum. 300 IN NAPTR 100 10 "U" "E2U+pstn:tel" "!^.*$!rc:013!" .

;; Query time: 51 msec
;; SERVER: 141.95.255.235#5001(141.95.255.235) (UDP)
;; WHEN: Tue Aug 11 11:11:11 EEST 2025
;; MSG SIZE  rcvd: 78
              

Note: Refer to Sections 5–7 for details on the definition of the response fields.

4. Testing the Integration Setup

Test endpoints are available for verifying your HTTP and ENUM API integration. They let you check authorization, connectivity, and correct query/response formatting.

As in production, access to the test environment is granted only to pre-submitted client IPs.

Note: Refer to Sections 2.2. and 3.2. for details about the test endpoints.

Note: The test responses do not contain real subscriber data and include the following information:

  • cc — real, provided based on the prefix of the queried number;

  • the rest of the parameters (cn, mcc, mnc, sii, npi, nt, ls, rc, etc) – not real, test values.

5. Number Verifier Response Fields

Field Type Description
tn string Telephone Number for which the query was made
cc string Carrier Country (country code) in ISO 3166-1 alpha-2 format (e.g., UA)
cn string Carrier Name (operator name)
mcc string Mobile Country Code
mnc string Mobile Network Code
sii integer Source Information Indicator
1 – tn has been queried via an hlr lookup; both live status and live routing information can be provided
2 – tn has been queried via an mnp lookup; only live routing information can be provided
3 – tn has been queried via BSG routing information data; only routing information from the global numbering database can be provided
npi boolean Number Portability Indicator
true – the number has been ported
false – the number has not been ported
nt string Number Type
mobile
landline
ls string Live Status (refer to Section 6 for details)
rc string Reason Code (refer to Section 7 for details)

6. Live Status

The Live Status ls field indicates whether a mobile number is currently active on the network. This service dynamically queries the HLR (Home Location Register) of the target operator via the SS7 network to verify the status of the mobile number and retrieve information about the associated subscriber.

The table below lists current field values and supports future expansion as new live statuses or services become available.

Code Description Comment
000 STATUS: ACTIVE Queried number is an active mobile subscriber which was confirmed by the HLR of its serving mobile network operator.
201 STATUS: ABSENT Queried number is not currently available due to technical troubles on the mobile network, long-term absence due to radio coverage issues or its mobile device is turned off. This is a temporary status and it might change in the future.
202 STATUS: BARRED The queried number has service limitations due to billing or technical issues on the network or is not capable of receiving SMS at the moment. This is a temporary status and it might change in the future.
203 STATUS: INVALID The queried number is not an active mobile subscriber which was confirmed by the HLR of its serving mobile network operator.
204 STATUS: ERROR Query message got no response from the subscriber's serving network operator or response waiting timeout has been reached. This might be both permanent or temporary status depending on the case.
205 STATUS: UNKNOWN The query message received an unexpected error from the HLR of the subscriber's serving network operator or specific status of the subscriber cannot be clearly defined at the moment. This might be both permanent or temporary status depending on the case.

7. Reason Code

The Reason Code rc field provides additional information relating to how a query was processed within the BSG system. These codes may indicate failure reasons (such as an invalid number length) or provide other relevant information.

The table below lists current field values and supports future expansion as new reason codes or services become available.

Code Description Comment
000 ACTIVE Successful query
010 ERROR_AUTH Authorisation error, check parameters
011 ERROR_SYSTEM Internal BSG system error. Typically this is a temporary event
012 ERROR_INVALID_ MSISDN Invalid number sequence; unknown country and operator
013 ERROR_INVALID_ MSISDN_LENGTH The number length does not match the standard length for the specified country
014 ERROR_INVALID_ MSISDN_MCC The number check returned a result with an unexpected MCC for the specified country
015 ERROR_INVALID_ BY_WRONG_PREFIX The number is a part of an invalid or unallocated numbering range
016 ERROR_INVALID_ USER_TARIFF The query referenced a tariff code that is not assigned to the client, or no tariff is assigned for the service
110 BARRED The query returned a "BARRED" live status for the subscriber; a status indicating that a subscriber is blocked from accessing network services due to reasons such as non-payment, fraud, etc.
111 BARRED_NO_SMS_ SERVICE The query returned a "BARRED" live status, indicating that the subscriber's SMS service is currently blocked
112 BARRED_NO_SMS_ SERVICE_SUBSCRIBER_ BLOCKED The query returned a "BARRED" live status, indicating that the subscriber's SMS service or the subscriber itself is currently blocked
113 BARRED_SUBSCRIBER_ BLOCKED_OR_UNAVAILABLE_ ROAMING The query returned a "BARRED" status, meaning the subscriber is blocked or roaming without active service
120 ABSENT The query returned an "ABSENT" live status, indicating that the subscriber's device is not currently registered on the network (e.g., switched off or out of coverage)
121 ABSENT_SUBSCRIBER_ UNAVAILABLE_OR_DEVICE_ SWITCHED_OFF The query returned an "ABSENT" live status, indicating that the subscriber's device is unavailable, likely due to the phone being switched off
122 ABSENT_BAD_CONNECTION_ OR_CURRENTLY_UNAVAILABLE The query returned an "ABSENT" live status, indicating that the subscriber's device is unavailable, likely due to bad radio access
123 ABSENT_SUBSCRIBER_IS_ IN_BAD_CONNECTION_OR_ CURRENTLY_UNAVAILABLE The query returned an "ABSENT" live status, indicating that the subscriber's device is unavailable, likely due to network issues
124 ABSENT_DEVICE_CANNOT_ RECEIVE_SMS_FAILURE_OR_ NETWORK_IS_BUSY The query returned an "ABSENT" live status, indicating that the subscriber's device failed to receive the message, likely due to network issues
125 ABSENT_DEVICE_CANNOT_ RECEIVE_SMS_FAILURE_OR_ NO_SPACE_FOR_SMS The query returned an "ABSENT" live status, indicating that the subscriber's device failed to receive the message, likely due to a device-related issue (e.g., no space for SMS)
126 ABSENT_DEVICE_CANNOT_ RECEIVE_SMS_DEVICE_FAILURE The query returned an "ABSENT" live status, indicating that the subscriber's device failed to receive the message, likely due to mobile device issues
127 ABSENT_MAP_UNEXPECTED_ DATA_VALUE The query returned an "ABSENT" live status, indicating a MAP protocol error caused by a network issue
128 ABSENT_INVALID_MSC The query returned an "ABSENT" live status, indicating a temporary subscriber registration error
129 ABSENT_SUBSCRIBER_IN_ POOR_COMMUNICATION_CONDITIONS_ OR_CURRENTLY_UNAVAILABLE The query returned an "ABSENT" live status, indicating that the subscriber's device is unavailable, likely due to network issues or poor radio conditions
130 ABSENT_GSM_MAPERR_ ABSENT_SUBSC_SM_V2P The query returned an "ABSENT" live status, indicating a MAP protocol error caused by a network issue
150 ERROR The query returned an "ERROR" live status, indicating a subscriber-related issue; BSG routing information provided
151 ERROR_TIMEOUT_NO_ RESPONSE_FROM_HLR The query returned an "ERROR" live status, indicating an HLR-related issue; BSG routing information provided
152 ERROR_TIMEOUT_NO_ RESPONSE_FROM_MSC The query returned an "ERROR" live status, indicating an MSC-related issue; BSG routing information provided
170 UNKNOWN The query returned an "UNKNOWN" live status due to a temporary SS7 network issue preventing subscriber live status determination; BSG assigns "UNKNOWN" whenever it cannot determine the subscriber’s live status as "ACTIVE", "BARRED", "ABSENT", or "INVALID"
171 UNKNOWN_NO_RESOURCES_ ON_SMSC The query returned an "UNKNOWN" live status caused by a temporary SMSC issue preventing subscriber live status determination
172 UNKNOWN_RECEIVED_ SCCP_TCAP_ABORT The query returned an "UNKNOWN" live status caused by a temporary SS7 protocol issue preventing subscriber live status determination
173 UNKNOWN_DELIVERY_ ERROR_OF_SMS_EQUIPMENT_ NOT_SM_EQUIPPED The query returned an "UNKNOWN" live status due to a mobile equipment issue (typically inability to receive SMS) preventing subscriber live status determination
174 UNKNOWN_ERROR_OF_ SMS_DELIVERY_UNKNOWN_ SERVICE_CENTRE The query returned an "UNKNOWN" live status due to a mobile network firewall issue preventing subscriber live status determination
175 UNKNOWN_SMS_DELIVERY_ ERROR_SC_CONGESTION The query returned an "UNKNOWN" live status caused by a temporary SMSC congestion issue preventing subscriber live status determination
176 UNKNOWN_SMS_DELIVERY_ ERROR_INVALID_SME_ADDRESS The query returned an "UNKNOWN" live status caused by a temporary SMSC firewall issue preventing subscriber live status determination
177 UNKNOWN_SMS_DELIVERY_ ERROR_SUBSCRIBER_NOT_ SC_SUBSCRIBER The query returned an "UNKNOWN" live status due to a mobile equipment issue (typically inability to receive SMS) preventing subscriber live status determination
179 UNKNOWN_SYSTEM_ FAILURE_HLR The query returned an "UNKNOWN" live status due to an HLR issue in the mobile network preventing subscriber live status determination
180 UNKNOWN_SYSTEM_ FAILURE_MSC The query returned an "UNKNOWN" live status due to an MSC issue in the mobile network preventing subscriber live status determination
190 INVALID The query returned an "INVALID" live status for the subscriber; a status indicating that the queried number is not associated with any subscriber or is missing from the network’s HLR database
191 INVALID_UNKNOWN_ SUBSCRIBER The query returned an "INVALID" live status for the subscriber; a status indicating that the queried number is not associated with any subscriber or is missing from the network’s HLR database

Interested in a special offer?

Ready to reach further?
Let’s talk

I agree to BSG privacy policy
Submit

Useful Materials

What Is Number Verifier — And Why It’s More Than Just an “HLR Lookup”

30% of SMS fail — not because of content, but numbers. Verify before you send.

10 Awesome Back-to-School Marketing Ideas 2025

The start of the school year: when parents trade in their summer margaritas for the

What Is CPaaS? Communications Platform as a Service

Talking to customers these days is more than just emails or phone calls. Businesses need