Nexmo's Number Insight API delivers real-time intelligence about the validity, reachability and roaming status of a phone number and tells you how to format the number correctly in your application. There are three levels of Number Insight API available: Basic, Standard and Advanced. The advanced API is available asynchronously as well as synchronously.
Provides basic number insight information about a number.
Note that this endpoint also supports POST
requests.
GET
https://api.nexmo.com/ni/basic/:format
Key | Description | Example | Default |
---|---|---|---|
format Required | string |
The format of the response Must be one of: json or xml
|
json
|
None |
Key | Description | Example | Default |
---|---|---|---|
api_key apiKey |
You can find your API key in your account overview |
abc123
|
None |
api_secret apiKey |
You can find your API secret in your account overview |
abc123
|
None |
number Required | string |
A single phone number that you need insight about in national or international format. |
447700900000
|
None |
country string |
If a number does not have a country code or is uncertain, set the two-character country code. This code must be in ISO 3166-1 alpha-2 format and in upper case. For example, GB or US. If you set country and number is already in E.164 format, country must match the country code in number. |
GB
|
None |
View response field descriptions
Field | Description | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
status
integer |
0 , 1 , 3 , 4 , 5 or 9
|
||||||||||||||
status_message
string |
The status description of your request. |
||||||||||||||
request_id
string |
The unique identifier for your request. This is a alphanumeric string up to 40 characters. |
||||||||||||||
international_format_number
string |
The |
||||||||||||||
national_format_number
string |
The |
||||||||||||||
country_code
string |
Two character country code for |
||||||||||||||
country_code_iso3
string |
Three character country code for |
||||||||||||||
country_name
string |
The full name of the country that |
||||||||||||||
country_prefix
string |
The numeric prefix for the country that |
Field | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_id
string |
The unique identifier for your request. This is a alphanumeric string up to 40 characters. |
||||||||||||
international_format_number
string |
The |
||||||||||||
local_number
object |
An object containing the |
||||||||||||
|
|||||||||||||
error
object |
The error code and status of your request |
||||||||||||
|
{
"status": 0,
"status_message": "Success",
"request_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"international_format_number": "447700900000",
"national_format_number": "07700 900000",
"country_code": "GB",
"country_code_iso3": "GBR",
"country_name": "United Kingdom",
"country_prefix": "44"
}
<?xml version="1.0" encoding="UTF-8"?>
<format>
<request_id>aaaaaaaa-bbbb-cccc-dddd-0123456789ab</request_id>
<international_format_number>447700900000</international_format_number>
<local_number country_code="GB" country_code_iso3="GBR" country_name="United Kingdom" country_prefix="44">
07700 900000
</local_number>
<error code="0">Success</error>
</format>
Provides standard number insight information about a number.
Note that this endpoint also supports POST
requests.
GET
https://api.nexmo.com/ni/standard/:format
Key | Description | Example | Default |
---|---|---|---|
format Required | string |
The format of the response Must be one of: json or xml
|
json
|
None |
Key | Description | Example | Default |
---|---|---|---|
api_key apiKey |
You can find your API key in your account overview |
abc123
|
None |
api_secret apiKey |
You can find your API secret in your account overview |
abc123
|
None |
number Required | string |
A single phone number that you need insight about in national or international format. |
447700900000
|
None |
country string |
If a number does not have a country code or is uncertain, set the two-character country code. This code must be in ISO 3166-1 alpha-2 format and in upper case. For example, GB or US. If you set country and number is already in E.164 format, country must match the country code in number. |
GB
|
None |
cnam boolean |
Indicates if the name of the person who owns the phone number should be looked up and returned in the response. Set to true to receive phone number owner name in the response. This features is available for US numbers only and incurs an additional charge. |
true
|
false
|
View response field descriptions
Field | Description | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
status
integer |
0 , 1 , 3 , 4 , 5 or 9
|
||||||||||||||
status_message
string |
The status description of your request. |
||||||||||||||
request_id
string |
The unique identifier for your request. This is a alphanumeric string up to 40 characters. |
||||||||||||||
international_format_number
string |
The |
||||||||||||||
national_format_number
string |
The |
||||||||||||||
country_code
string |
Two character country code for |
||||||||||||||
country_code_iso3
string |
Three character country code for |
||||||||||||||
country_name
string |
The full name of the country that |
||||||||||||||
country_prefix
string |
The numeric prefix for the country that |
||||||||||||||
request_price
number |
The amount in EUR charged to your account. |
||||||||||||||
refund_price
number |
If there is an internal lookup error, the |
||||||||||||||
remaining_balance
number |
Your account balance in EUR after this request. Not returned with Number Insight Advanced Async API. |
||||||||||||||
current_carrier
object |
Information about the network |
||||||||||||||
|
|||||||||||||||
original_carrier
object |
Information about the network |
||||||||||||||
|
|||||||||||||||
ported
string |
If the user has changed carrier for unknown , ported , not_ported , assumed_not_ported or assumed_ported
|
||||||||||||||
roaming
object |
Information about the roaming status for |
||||||||||||||
|
|||||||||||||||
caller_identity
object |
Information about the network |
||||||||||||||
|
|||||||||||||||
caller_name
string |
Full name of the person or business who owns the phone number. |
||||||||||||||
last_name
string |
Last name of the person who owns the phone number if the owner is an individual. This parameter is only present if |
||||||||||||||
first_name
string |
First name of the person who owns the phone number if the owner is an individual. This parameter is only present if |
||||||||||||||
caller_type
string |
The value will be business , consumer or unknown
|
Field | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_id
string |
The unique identifier for your request. This is a alphanumeric string up to 40 characters. |
||||||||||||||||||
international_format_number
string |
The |
||||||||||||||||||
local_number
object |
An object containing the |
||||||||||||||||||
|
|||||||||||||||||||
error
object |
The error code and status of your request |
||||||||||||||||||
|
|||||||||||||||||||
request_price
number |
If there is an internal lookup error, the |
||||||||||||||||||
remaining_balance
number |
Your account balance in EUR after this request. Not returned with Number Insight Advanced Async API. |
||||||||||||||||||
current_carrier
object |
Information about the network |
||||||||||||||||||
|
|||||||||||||||||||
original_carrier
object |
Information about the network |
||||||||||||||||||
|
|||||||||||||||||||
ported
|
If the user has changed carrier for number. The assumed status means that the information supplier has replied to the request but has not said explicitly that the number is ported |
||||||||||||||||||
|
|||||||||||||||||||
roaming
object |
Information about the roaming status for number. This is applicable to mobile numbers only. |
||||||||||||||||||
|
|||||||||||||||||||
caller_identity
object |
Contains details of the number owner, if |
||||||||||||||||||
|
{
"status": 0,
"status_message": "Success",
"request_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"international_format_number": "447700900000",
"national_format_number": "07700 900000",
"country_code": "GB",
"country_code_iso3": "GBR",
"country_name": "United Kingdom",
"country_prefix": "44",
"request_price": "0.04000000",
"refund_price": "0.01500000",
"remaining_balance": "1.23456789",
"current_carrier": {
"network_code": "12345",
"name": "Acme Inc",
"country": "GB",
"network_type": "mobile"
},
"original_carrier": {
"network_code": "12345",
"name": "Acme Inc",
"country": "GB",
"network_type": "mobile"
},
"ported": "not_ported",
"roaming": {
"status": "roaming",
"roaming_country_code": "US",
"roaming_network_code": 12345,
"roaming_network_name": "Acme Inc"
},
"caller_identity": {
"caller_type": "consumer",
"caller_name": "John Smith",
"first_name": "John",
"last_name": "Smith"
},
"caller_name": "John Smith",
"last_name": "Smith",
"first_name": "John",
"caller_type": "consumer"
}
<?xml version="1.0" encoding="UTF-8"?>
<lookup>
<request_id>aaaaaaaa-bbbb-cccc-dddd-0123456789ab</request_id>
<international_format_number>447700900000</international_format_number>
<local_number country_code="GB" country_code_iso3="GBR" country_name="United Kingdom" country_prefix="44">
07700 900000
</local_number>
<error code="0">Success</error>
<request_price>0.01500000</request_price>
<remaining_balance>1.23456789</remaining_balance>
<current_carrier network_code="12345" name="Acme Inc" country="GB" network_type="mobile">
</current_carrier>
<original_carrier network_code="12345" name="Acme Inc" country="GB" network_type="mobile">
</original_carrier>
<ported>not_ported</ported>
<roaming status="unknown">
</roaming>
<caller_identity caller-type="consumer" caller-name="John Smith" first-name="John" last-name="Smith">
<caller_name>John Smith</caller_name>
<last_name>Smith</last_name>
<firs_name>John</firs_name>
<caller_type>consumer</caller_type>
</caller_identity>
</lookup>
Provides advanced number insight number information asynchronously using the URL specified in the callback
parameter. Nexmo recommends asynchronous use of the Number Insight Advanced API, to avoid timeouts.
Note that this endpoint also supports POST
requests.
GET
https://api.nexmo.com/ni/advanced/async/:format
Key | Description | Example | Default |
---|---|---|---|
format Required | string |
The format of the response Must be one of: json or xml
|
json
|
None |
Key | Description | Example | Default |
---|---|---|---|
api_key apiKey |
You can find your API key in your account overview |
abc123
|
None |
api_secret apiKey |
You can find your API secret in your account overview |
abc123
|
None |
callback Required | string | (uriref) |
The callback URL |
https://example.com/callback
|
None |
number Required | string |
A single phone number that you need insight about in national or international format. |
447700900000
|
None |
country string |
If a number does not have a country code or is uncertain, set the two-character country code. This code must be in ISO 3166-1 alpha-2 format and in upper case. For example, GB or US. If you set country and number is already in E.164 format, country must match the country code in number. |
GB
|
None |
cnam boolean |
Indicates if the name of the person who owns the phone number should be looked up and returned in the response. Set to true to receive phone number owner name in the response. This features is available for US numbers only and incurs an additional charge. |
true
|
false
|
ip string |
This parameter is deprecated as we are no longer able to retrieve reliable IP data globally from carriers. |
123.0.0.255
|
None |
View response field descriptions
Field | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_id
string |
The unique identifier for your request. This is a alphanumeric string up to 40 characters. |
||||||||||||||||||||
number
string |
The |
||||||||||||||||||||
remaining_balance
string |
Your account balance in EUR after this request. Not returned with Number Insight Advanced Async API. |
||||||||||||||||||||
request_price
number |
If there is an internal lookup error, the |
||||||||||||||||||||
status
integer |
0 , 1 , 3 , 4 , 5 , 9 , 19 , 43 , 44 , 45 or 999
|
Field | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_id
string |
The unique identifier for your request. This is a alphanumeric string up to 40 characters. |
||||||||||||||||||||
number
string |
The |
||||||||||||||||||||
remaining_balance
string |
Your account balance in EUR after this request. Not returned with Number Insight Advanced Async API. |
||||||||||||||||||||
request_price
number |
If there is an internal lookup error, the |
||||||||||||||||||||
status
integer |
0 , 1 , 3 , 4 , 5 , 9 , 19 , 43 , 44 , 45 or 999
|
{
"request_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"number": "447700900000",
"remaining_balance": "1.23456789",
"request_price": "0.01500000",
"status": 0
}
<?xml version="1.0" encoding="UTF-8"?>
<lookup>
<requestId>aaaaaaaa-bbbb-cccc-dddd-0123456789ab</requestId>
<number>447700900000</number>
<remainingBalance>1.23456789</remainingBalance>
<requestPrice>0.01500000</requestPrice>
<status>0</status>
</lookup>
Contains the response to your Number Insight Advanced API request.
POST
https://example.com
/webhooks/event
Key | Description | Example | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
status Required | integer |
One of: 0 , 1 , 3 , 4 , 5 , 9 , 19 , 43 , 44 , 45 or 999
|
0
|
||||||||||||||||||||
status_message Required | string |
The status description of your request. |
Success
|
||||||||||||||||||||
request_id Required | string |
The unique identifier for your request. This is a alphanumeric string up to 40 characters. |
aaaaaaaa-bbbb-cccc-dddd-0123456789ab
|
||||||||||||||||||||
international_format_number Required | string |
The |
447700900000
|
||||||||||||||||||||
national_format_number Required | string |
The |
07700 900000
|
||||||||||||||||||||
country_code Required | string |
Two character country code for |
GB
|
||||||||||||||||||||
country_code_iso3 Required | string |
Three character country code for |
GBR
|
||||||||||||||||||||
country_name Required | string |
The full name of the country that |
United Kingdom
|
||||||||||||||||||||
country_prefix Required | string |
The numeric prefix for the country that |
44
|
||||||||||||||||||||
request_price number |
The amount in EUR charged to your account. |
0.04000000
|
||||||||||||||||||||
refund_price number |
If there is an internal lookup error, the |
0.01500000
|
||||||||||||||||||||
remaining_balance number |
Your account balance in EUR after this request. Not returned with Number Insight Advanced Async API. |
1.23456789
|
||||||||||||||||||||
current_carrier object |
Information about the network |
|||||||||||||||||||||
|
||||||||||||||||||||||
original_carrier object |
Information about the network |
|||||||||||||||||||||
|
||||||||||||||||||||||
ported string |
If the user has changed carrier for One of: unknown , ported , not_ported , assumed_not_ported or assumed_ported
|
not_ported
|
||||||||||||||||||||
roaming object |
||||||||||||||||||||||
|
||||||||||||||||||||||
caller_identity object |
||||||||||||||||||||||
|
||||||||||||||||||||||
lookup_outcome integer |
Shows if all information about a phone number has been returned. Possible values:
One of: 0 , 1 or 2
|
0
|
||||||||||||||||||||
lookup_outcome_message string |
Shows if all information about a phone number has been returned. |
Success
|
||||||||||||||||||||
valid_number string |
Does One of: unknown , valid , not_valid , inferred or inferred_not_valid
|
valid
|
||||||||||||||||||||
reachable string |
Can you call One of: unknown , reachable , undeliverable , absent , bad_number or blacklisted
|
reachable
|
{
"status": 0,
"status_message": "Success",
"request_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"international_format_number": "447700900000",
"national_format_number": "07700 900000",
"country_code": "GB",
"country_code_iso3": "GBR",
"country_name": "United Kingdom",
"country_prefix": "44",
"request_price": "0.04000000",
"refund_price": "0.01500000",
"remaining_balance": "1.23456789",
"current_carrier": {
"network_code": "12345",
"name": "Acme Inc",
"country": "GB",
"network_type": "mobile"
},
"original_carrier": {
"network_code": "12345",
"name": "Acme Inc",
"country": "GB",
"network_type": "mobile"
},
"ported": "not_ported",
"roaming": {
"status": "roaming",
"roaming_country_code": "US",
"roaming_network_code": 12345,
"roaming_network_name": "Acme Inc"
},
"caller_identity": {
"caller_type": "consumer",
"caller_name": "John Smith",
"first_name": "John",
"last_name": "Smith"
},
"lookup_outcome": "0",
"lookup_outcome_message": "Success",
"valid_number": "valid",
"reachable": "reachable"
}
<?xml version="1.0" encoding="UTF-8"?>
<lookup>
<request_id>aaaaaaaa-bbbb-cccc-dddd-0123456789ab</request_id>
<international_format_number>447700900000</international_format_number>
<local_number country_code="GB" country_code_iso3="GBR" country_name="United Kingdom" country_prefix="44">
07700 900000
</local_number>
<error code="0">Success</error>
<request_price>0.01500000</request_price>
<remaining_balance>1.23456789</remaining_balance>
<current_carrier network_code="12345" name="Acme Inc" country="GB" network_type="mobile">
</current_carrier>
<original_carrier network_code="12345" name="Acme Inc" country="GB" network_type="mobile">
</original_carrier>
<ported>not_ported</ported>
<caller_identity caller-type="consumer" caller-name="John Smith" first-name="John" last-name="Smith">
</caller_identity>
<caller_name>John Smith</caller_name>
<last_name>Smith</last_name>
<firs_name>John</firs_name>
<caller_type>consumer</caller_type>
<lookup_outcome code="0">Success</lookup_outcome>
<reachable>reachable</reachable>
<roaming status="roaming" roaming_country_code="US" roaming_network_code="12345" roaming_network_name="Acme Inc">
</roaming>
<valid_number>valid</valid_number>
<ip_warnings>unknown</ip_warnings>
</lookup>
Provides advanced number insight information about a number synchronously, in the same way that the basic and standard endpoints do.
Nexmo recommends accessing the Advanced API asynchronously using the /advanced/async
endpoint, to avoid timeouts.
Note that this endpoint also supports POST
requests.
GET
https://api.nexmo.com/ni/advanced/:format
Key | Description | Example | Default |
---|---|---|---|
format Required | string |
The format of the response Must be one of: json or xml
|
json
|
None |
Key | Description | Example | Default |
---|---|---|---|
api_key apiKey |
You can find your API key in your account overview |
abc123
|
None |
api_secret apiKey |
You can find your API secret in your account overview |
abc123
|
None |
number Required | string |
A single phone number that you need insight about in national or international format. |
447700900000
|
None |
country string |
If a number does not have a country code or is uncertain, set the two-character country code. This code must be in ISO 3166-1 alpha-2 format and in upper case. For example, GB or US. If you set country and number is already in E.164 format, country must match the country code in number. |
GB
|
None |
cnam boolean |
Indicates if the name of the person who owns the phone number should be looked up and returned in the response. Set to true to receive phone number owner name in the response. This features is available for US numbers only and incurs an additional charge. |
true
|
false
|
ip string |
This parameter is deprecated as we are no longer able to retrieve reliable IP data globally from carriers. |
123.0.0.255
|
None |
View response field descriptions
Field | Description | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
status
integer |
0 , 1 , 3 , 4 , 5 , 9 , 19 , 43 , 44 , 45 or 999
|
||||||||||||||||||||
status_message
string |
The status description of your request. |
||||||||||||||||||||
request_id
string |
The unique identifier for your request. This is a alphanumeric string up to 40 characters. |
||||||||||||||||||||
international_format_number
string |
The |
||||||||||||||||||||
national_format_number
string |
The |
||||||||||||||||||||
country_code
string |
Two character country code for |
||||||||||||||||||||
country_code_iso3
string |
Three character country code for |
||||||||||||||||||||
country_name
string |
The full name of the country that |
||||||||||||||||||||
country_prefix
string |
The numeric prefix for the country that |
||||||||||||||||||||
request_price
number |
The amount in EUR charged to your account. |
||||||||||||||||||||
refund_price
number |
If there is an internal lookup error, the |
||||||||||||||||||||
remaining_balance
number |
Your account balance in EUR after this request. Not returned with Number Insight Advanced Async API. |
||||||||||||||||||||
current_carrier
object |
Information about the network |
||||||||||||||||||||
|
|||||||||||||||||||||
original_carrier
object |
Information about the network |
||||||||||||||||||||
|
|||||||||||||||||||||
ported
string |
If the user has changed carrier for unknown , ported , not_ported , assumed_not_ported or assumed_ported
|
||||||||||||||||||||
roaming
object |
Information about the roaming status for |
||||||||||||||||||||
|
|||||||||||||||||||||
caller_identity
object |
Information about the network |
||||||||||||||||||||
|
|||||||||||||||||||||
lookup_outcome
integer |
Shows if all information about a phone number has been returned. Possible values:
0 , 1 or 2
|
||||||||||||||||||||
lookup_outcome_message
string |
Shows if all information about a phone number has been returned. |
||||||||||||||||||||
valid_number
string |
Does unknown , valid , not_valid , inferred or inferred_not_valid
|
||||||||||||||||||||
reachable
string |
Can you call unknown , reachable , undeliverable , absent , bad_number or blacklisted
|
Field | Description | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
request_id
string |
The unique identifier for your request. This is a alphanumeric string up to 40 characters. |
||||||||||||||
international_format_number
string |
The |
||||||||||||||
local_number
object |
An object containing the |
||||||||||||||
|
|||||||||||||||
error
object |
The error code and status of your request |
||||||||||||||
|
|||||||||||||||
request_price
number |
If there is an internal lookup error, the |
||||||||||||||
remaining_balance
number |
Your account balance in EUR after this request. Not returned with Number Insight Advanced Async API. |
||||||||||||||
current_carrier
object |
Information about the network |
||||||||||||||
|
|||||||||||||||
original_carrier
object |
Information about the network |
||||||||||||||
|
|||||||||||||||
ported
|
If the user has changed carrier for |
||||||||||||||
|
|||||||||||||||
caller_identity
|
Contains details of the number owner, if |
||||||||||||||
|
|||||||||||||||
caller_name
string |
Full name of the person or business who owns the phone number. |
||||||||||||||
last_name
string |
Last name of the person who owns the phone number if the owner is an individual. This parameter is only present if |
||||||||||||||
firs_name
string |
First name of the person who owns the phone number if the owner is an individual. This parameter is only present if |
||||||||||||||
caller_type
string |
The value will be business , consumer or unknown
|
||||||||||||||
lookup_outcome
object |
An object indicating whether all information about a phone number has been returned. |
||||||||||||||
|
|||||||||||||||
reachable
string |
Can you call unknown , reachable , undeliverable , absent , bad_number or blacklisted
|
||||||||||||||
roaming
object |
Information about the roaming status for |
||||||||||||||
|
|||||||||||||||
valid_number
string |
Does unknown , valid , not_valid or inferred_not_valid
|
||||||||||||||
ip_warnings
string |
This property is deprecated and can safely be ignored. |
{
"status": 0,
"status_message": "Success",
"request_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"international_format_number": "447700900000",
"national_format_number": "07700 900000",
"country_code": "GB",
"country_code_iso3": "GBR",
"country_name": "United Kingdom",
"country_prefix": "44",
"request_price": "0.04000000",
"refund_price": "0.01500000",
"remaining_balance": "1.23456789",
"current_carrier": {
"network_code": "12345",
"name": "Acme Inc",
"country": "GB",
"network_type": "mobile"
},
"original_carrier": {
"network_code": "12345",
"name": "Acme Inc",
"country": "GB",
"network_type": "mobile"
},
"ported": "not_ported",
"roaming": {
"status": "roaming",
"roaming_country_code": "US",
"roaming_network_code": 12345,
"roaming_network_name": "Acme Inc"
},
"caller_identity": {
"caller_type": "consumer",
"caller_name": "John Smith",
"first_name": "John",
"last_name": "Smith"
},
"lookup_outcome": "0",
"lookup_outcome_message": "Success",
"valid_number": "valid",
"reachable": "reachable"
}
<?xml version="1.0" encoding="UTF-8"?>
<lookup>
<request_id>aaaaaaaa-bbbb-cccc-dddd-0123456789ab</request_id>
<international_format_number>447700900000</international_format_number>
<local_number country_code="GB" country_code_iso3="GBR" country_name="United Kingdom" country_prefix="44">
07700 900000
</local_number>
<error code="0">Success</error>
<request_price>0.01500000</request_price>
<remaining_balance>1.23456789</remaining_balance>
<current_carrier network_code="12345" name="Acme Inc" country="GB" network_type="mobile">
</current_carrier>
<original_carrier network_code="12345" name="Acme Inc" country="GB" network_type="mobile">
</original_carrier>
<ported>not_ported</ported>
<caller_identity caller-type="consumer" caller-name="John Smith" first-name="John" last-name="Smith">
</caller_identity>
<caller_name>John Smith</caller_name>
<last_name>Smith</last_name>
<firs_name>John</firs_name>
<caller_type>consumer</caller_type>
<lookup_outcome code="0">Success</lookup_outcome>
<reachable>reachable</reachable>
<roaming status="roaming" roaming_country_code="US" roaming_network_code="12345" roaming_network_name="Acme Inc">
</roaming>
<valid_number>valid</valid_number>
<ip_warnings>unknown</ip_warnings>
</lookup>