Verify Phone Numbers from 240 Countries World-Wide
Mobile & Landline

Stop wasting time on invalid, disconnected numbers - connect with real people.

Check phone numbers in real-time - prevent fraud and make sure only valid phone numbers are accepted."

Real-Time Phone Validation API

Integrate our Phone Number Validation & Verification API directly into your website or CRM/ERP and improve your contact data quality instantly - only valid, reachable phone numbers will be accepted. To ensure full compliance with the FCC Telephone Consumer Protection Act (TCPA), the API also detects the correct line type (landline, mobile or VoIP).

Free Trial

How Does the Phone Validation API Work?

Phone-Validator checks numbers to see if they are valid and active/connected. The service uses live network queries along with a large set of internal and external data sources to ensure maximum accuracy.

Phone number verification can be done in real-time in order to check the customer's details before they become a part of your user database. This can save online businesses a substantial amount of time and money.

Phone-Validator - Available 24/7/365

We guarantee an availability of 99.9%. API requests will typically be answered within 750ms - please see the API server status page for real-time availability information.

Phone-Validator API Demo

You can test our Phone-Validator service with a free trial - just register for a free API key.

Try Phone-Validator for Free
No Credit Card Required

Every moment spent on manual tasks is a missed opportunity for growth and more customer engagement.

That's why we offer 100 free Phone-Validator credits for you to experience the speed and accuracy of our real-time and fully automated Phone-Validator service.

You need a Byteplant account to test our services.
Please log in or register for a free trial.

Phone-Validator APIs Documentation

Real-Time Phone Verification API

GET OR POST https://api.phone-validator.net/api/v2/verify

The Real-Time Phone Verification API can be used to validate a single phone number in real-time. The API returns the status (VALID_CONFIRMED, VALID_UNCONFIRMED, INVALID) as well as additional details like the line type (landline, mobile etc.), the carrier/operator and the location.

Example API request (GET)

https://api.phone-validator.net/api/v2/verify?PhoneNumber=09874-322466&CountryCode=de&APIKey=your API key
Parameters
PhoneNumber

Phone number to validate (string, URL encoded) - either in national format or in international format with a leading +.
Please use URL encoding: + → %2B, <blank> → %20.

CountryCode

two letter ISO 3166-1 country code (string) [optional, if phone number is in international format]

Locale

IETF language tag for Geocoding (string) [optional; default 'en-US']

Mode (string)

express (static checks only)
extensive (full validation)
[optional, default = extensive]

APIKey

your API key (string)

Timeout

timeout in seconds (int) [optional; default 10s, min 5s, max 300s]

Response
status (string)

VALID_CONFIRMED, VALID_UNCONFIRMED, INVALID, DELAYED, RATE_LIMIT_EXCEEDED, API_KEY_INVALID_OR_DEPLETED

linetype (string)

FIXED_LINE, MOBILE, VOIP, TOLL_FREE, PREMIUM_RATE, SHARED_COST, PERSONAL_NUMBER, PAGER, UAN, VOICEMAIL

location (string)

geographical location (city, county, state)

countrycode (string)

two letter ISO 3166-1 country code

formatnational (string)

phone number in national format

formatinternational (string)

phone number in international format

mcc (string)

mobile country code to identify a mobile network operator (carrier) using the GSM (including GSM-R), UMTS, and LTE networks

mnc (string)

mobile network code to identify a mobile network operator (carrier) using the GSM (including GSM-R), UMTS, and LTE networks

ratelimit_remain (int)

number of API requests remaining before the API rate limit is reached (the default API rate limit allows 100 API requests in 300s)

ratelimit_seconds (int)

number of seconds remaining in the current rate limit interval

Bulk Phone Validation API

POST https://api.phone-validator.net/api/v2/bulk-verify

The Bulk API allows you to upload up to 100K phone numbers for validation with a single API request.

When the validation task is finished, we send you an email and (if requested) a HTTP GET request to the NotifyURL (with a 'taskid' parameter in the URL).

Example API request

curl -X POST -H 'Content-Type: text/csv' --data-binary @phonenumbers.csv "https://api.phone-validator.net/api/v2/bulk-verify?APIKey=your API key"
Parameters
Request Body (file)

list of phone addresses to validate in CSV format

APIKey (string)

your API key

TaskName (string)

name for this validation task [optional]

CountryCode

two letter ISO 3166-1 country code (string) [optional, if phone numbers are in international format]

Locale

IETF language tag for Geocoding (string) [optional; default 'en-US']

Mode (string)

express (static checks only)
extensive (full validation)
[optional, default = extensive]

NotifyEmail (string)

email address to receive notifications for this task [optional, default is the email address of the API account]

NotifyURL (string)

URL to receive a completion notification for this task [optional]

Response
status (string)

API result code (SUCC or FAIL)

info (string)

validation task id (if status is SUCC)

Code Examples

jQuery
<script type="text/javascript" src="path/to/jquery"></script>
<script type="text/javascript">
$(document).ready(function() {
    ...
    // send API request
    PhoneNumber = encodeURIComponent('+49 9874 322466');
    CountryCode = 'us';
    Locale = 'en-US';
    $.ajax({
        url: 'https://api.phone-validator.net/api/v2/verify',
        type: 'POST',
        data: { PhoneNumber: PhoneNumber, CountryCode: CountryCode,
                Locale: Locale, APIKey: 'your API key'},
        dataType: 'json',
        success: function (json) {
            // check API result
            if (typeof(json.status) != "undefined") {
                statuscode = json.status;
                switch (statuscode) {
                    case "VALID_CONFIRMED":
                    case "VALID_UNCONFIRMED":
                        linetype = json.linetype;
                        location = json.location;
                        countrycode = json.countrycode;
                        formatnational = json.formatnational;
                        formatinternational = json.formatinternational;
                        mcc = json.mcc;
                        mnc = json.mnc;
                        break;
                    case "INVALID": break;
                    default:
                }
            }
        }
    });
    ...
});
</script>
PHP
...
// build API request
$APIUrl = 'https://api.phone-validator.net/api/v2/verify';
$PhoneNumber = "+49 9874 322466";
$CountryCode = "us";
$Locale = "en-US";
$Params = array('PhoneNumber' => $PhoneNumber,
                'CountryCode' => $CountryCode,
                'Locale' => $Locale,
                'APIKey' => 'your API key');
$Request = http_build_query($Params, '', '&');
$ctxData = array(
    'method'=>"POST",
    'header'=>"Connection: close\r\n".
    "Content-Type: application/x-www-form-urlencoded\r\n".
    "Content-Length: ".strlen($Request)."\r\n",
    'content'=>$Request);
$ctx = stream_context_create(array('http' => $ctxData));

// send API request
$result = json_decode(file_get_contents(
    $APIUrl, false, $ctx));

// check API result
switch($result->{'status'}) {
    case "VALID_CONFIRMED":
    case "VALID_UNCONFIRMED":
        $linetype = $result->{'linetype'};
        $location = $result->{'location'};
        $countrycode = $result->{'countrycode'};
        $formatnational = $result->{'formatnational'};
        $formatinternational = $result->{'formatinternational'};
        $mcc = $result->{'mcc'};
        $mnc = $result->{'mnc'};
    case "INVALID":
        echo $PhoneNumber." is ".$result->{'status'};
        break;
    default:
        echo $result->{'info'};
}
...
Java
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import org.apache.http.util.EntityUtils;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
...
HttpClient client = new DefaultHttpClient();
String PhoneNumber = "+49 9874 322466";
String CountryCode = "us";
String Locale = "en";
String ApiKey = "your API key";
String APIURL = "https://api.phone-validator.net/api/v2/verify";
try {
    HttpPost request = new HttpPost(APIURL);
    List <NameValuePair> Input = new ArrayList<NameValuePair>();
    Input.add(new BasicNameValuePair("PhoneNumber", PhoneNumber));
    Input.add(new BasicNameValuePair("CountryCode", CountryCode));
    Input.add(new BasicNameValuePair("Locale", Locale));
    Input.add(new BasicNameValuePair("APIKey", ApiKey));
    request.setEntity(new UrlEncodedFormEntity(Input));
    HttpResponse response = client.execute(request);
    HttpEntity entity = response.getEntity();
    String Output = EntityUtils.toString(entity, "UTF-8");
    JSONParser parser = new JSONParser();
    Object obj = parser.parse(Output);
    JSONObject jsonObject = (JSONObject) obj;
    String status = (String) jsonObject.get("status");
    switch (status) {
        case "VALID_CONFIRMED":
        case "VALID_UNCONFIRMED":
            String LineType = (String) jsonObject.get("linetype");
            String Location = (String) jsonObject.get("location");
            String CountryCode = (String) jsonObject.get("countrycode");
            String FormatNational = (String) jsonObject.get("formatnational");
            String FormatIntl = (String) jsonObject.get("formatinternational");
            String MCC = (String) jsonObject.get("mcc");
            String MNC = (String) jsonObject.get("mnc");
            break;
        case "INVALID": break;
        default:
    }
    ...
} catch (IOException e) {
    e.printStackTrace();
} catch (ParseException e) {
    e.printStackTrace();
} finally {
    client.getConnectionManager().shutdown();
}
...
C#
using System;
using System.Collections.Generic;
using System.Net.Http;
...

private class APIResult
{
    public String status { get; set; }
    public String linetype { get; set; }
    public String location { get; set; }
    public String countrycode { get; set; }
    public String formatnational { get; set; }
    public String formatinternational { get; set; }
    public String mcc { get; set; }
    public String mnc { get; set; }
}

const String APIURL = "https://api.phone-validator.net/api/v2/verify";
HttpClient client = new HttpClient();
String PhoneNumber = "+49 9874 322466";
String CountryCode = "us";
String Locale = "en-US";
String ApiKey = "your API key";

var postData = new List<KeyValuePair<string, string>>();
postData.Add(new KeyValuePair<string, string>("PhoneNumber", PhoneNumber));
postData.Add(new KeyValuePair<string, string>("CountryCode", CountryCode));
postData.Add(new KeyValuePair<string, string>("Locale", Locale));
postData.Add(new KeyValuePair<string, string>("APIKey", APIKey));

HttpContent content = new FormUrlEncodedContent(postData);

HttpResponseMessage result = client.PostAsync(APIURL, content).Result;
string resultContent = result.Content.ReadAsStringAsync().Result;

APIResult res = new System.Web.Script.Serialization.JavaScriptSerializer().
Deserialize<APIResult>(resultContent);

switch (res.status) {
    case "VALID_CONFIRMED":
    case "VALID_UNCONFIRMED":
        String LineType = res.linetype;
        String Location = res.location;
        String CountryCode = res.countrycode;
        String FormatNational = res.formatnational;
        String FormatInternational = res.formatinternational;
        String MCC = res.mcc;
        String MNC = res.mnc;
        break;
    case "INVALID": break;
    default:
}
...
VB.NET
...
Private Sub checkPhoneNumber(ByVal PhoneNumber As String,
                       ByVal CountryCode As String,
                       ByVal Locale As String,
                       ByVal APIKey As String)
    Const APIURL As String = "https://api.phone-validator.net/api/v2/verify"
    Using client As New Net.WebClient
      Dim postData As New Specialized.NameValueCollection
      postData.Add("PhoneNumber", PhoneNumber)
      postData.Add("CountryCode", CountryCode)
      postData.Add("Locale", Locale)
      postData.Add("APIKey", APIKey)
      Dim reply = client.UploadValues(APIURL, "POST", postData)
      Dim data As String = (New System.Text.UTF8Encoding).GetString(reply)
      Dim res = New System.Web.Script.Serialization.JavaScriptSerializer().
        Deserialize(Of APIResult)(data)
      Select Case res.status
        Case "VALID_CONFIRMED"
        Case "VALID_UNCONFIRMED"
            Dim LineType As String = res.linetype
            Dim Location As String = res.location
            Dim CountryCode As String = res.countrycode
            Dim FormatNational As String = res.formatnational
            Dim FormatInternational As String = res.formatinternational
            Dim MCC As String = res.mcc
            Dim MNC As String = res.mnc
        Case "INVALID"
            ...
        Case Else
            ...
      End Select
    End Using
End Sub

Private Class APIResult
    Public status As String
    Public linetype As String
    Public location As String
    Public countrycode As String
    Public formatnational As String
    Public formatinternational As String
    Public mcc As String
    Public mnc As String
End Class
...

Customer Reviews