The MNP Lookup service is designed to identify the current serving operator, country, and number portability status of a mobile phone number.
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.
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 MNP Lookup queries (in both test and production environments), the client should submit a list of IP addresses to their account manager for authentication purposes.
| Method: | GET / POST |
Production:
| Domain: | mnp.bsg.world |
| Port: | 5010 |
| URL syntax: | https://mnp.bsg.world:5010/msisdn/{NUMBER} |
| URL syntax (optional)* | https://mnp.bsg.world:5010/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: | mnp-test.bsg.world |
| Port: | 5012 |
| URL syntax: | https://mnp-test.bsg.world:5012/msisdn/{NUMBER} |
{NUMBER} represents the MSISDN (telephone number in international format) without the “+” sign.
{TARIFF_ID} represents the code of the tariff in BSG system.
Description: Returns information about a mobile number including its country, MCC/MNC, current serving operator, number portability indicator and additional attributes (refer to Section 5 for details).
Standard query:
https://mnp.bsg.world:5010/msisdn/380123456789
Optional query (with tariff ID):
https://mnp.bsg.world:5010/msisdn/380123456789/tariff/22
https://mnp-test.bsg.world:5012/msisdn/380123456789
Success:
{
"tn": "380123456789",
"cc": "UA",
"cn": "lifecell",
"mcc": "255",
"mnc": "06",
"sii": 1,
"npi": false,
"nt": "mobile",
"rc": "000"
}
Error (Reason Code ranges 010 - 070):
{
"rc": "010"
}
Note: Refer to Sections 5–6 for details on the definition of the response fields.
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 MNP Lookup queries (in both test and production environments), the client should submit a list of IP addresses to their account manager for authentication purposes.
| Server IP address: | 141.95.255.235 |
| Port: | 5000 |
| Query syntax: | dig @141.95.255.235 -p 5000 -t naptr {NUMBER}.enum |
Testing:
| Server IP address: | 141.95.255.235 |
| Port: | 5002 |
| Query syntax: | dig @141.95.255.235 -p 5002 -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., 380123456789 → 9.8.7.6.5.4.3.2.1.0.8.3.).
Description: Returns information about a mobile number including its country, MCC/MNC, current serving operator, number portability indicator and additional attributes (refer to Section 5 for details).
dig @141.95.255.235 -p 5000 -t naptr 9.8.7.6.5.4.3.2.1.0.8.3.enum
dig @141.95.255.235 -p 5002 -t naptr 9.8.7.6.5.4.3.2.1.0.8.3.enum
Success:
; <<>> DiG 9.20.4-3ubuntu1.2-Ubuntu <<>> @141.95.255.235 -p 5000 -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: 49443
;; 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:2;npi:false;nt:mobile;rc:000!" .
;; Query time: 53 msec
;; SERVER: 141.95.255.235#5000(141.95.255.235) (UDP)
;; WHEN: Tue Aug 11 11:11:11 EEST 2025
;; MSG SIZE rcvd: 167
Error (Reason Code ranges 010 - 070):
; <<>> DiG 9.20.4-3ubuntu1.2-Ubuntu <<>> @141.95.255.235 -p 5000 -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: 30411
;; 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: 48 msec
;; SERVER: 141.95.255.235#5000(141.95.255.235) (UDP)
;; WHEN: Tue Aug 11 11:11:11 EEST 2025
;; MSG SIZE rcvd: 78
Note: Refer to Sections 5–6 for details on the definition of the response fields.
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, rc, etc) – not real, test values.
| 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 Indicator1 – tn has been queried via an hlr lookup; live routing information can be provided2 – tn has been queried via an mnp lookup; live routing information can be provided3 – tn has been queried via BSG routing information data; only routing information from the global numbering database can be provided
|
| npi | boolean |
Number Portability Indicatortrue – the number has been portedfalse – the number has not been ported
|
| nt | string |
Number Type • mobile• landline
|
| rc | string | Reason Code (refer to Section 6 for details) |
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 | SUCCESS | 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 |