Phone Number Validation API

Integrate our Phone Number Validation & Verification API directly into your website and your customers will be able to fix errors in their contact data 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 vs. mobile).

Try Our API For Free

How the Phone Verification API Works

Integrating our Real-Time Phone Validation API into your website, eCommerce solution, CRM system or content management system (CMS) is very easy - ready-made plugins and code examples in Javascript, PHP, Java, C#, VB.NET are available below.

For each phone number, the API provides detailed information:

  • Status: VALID_CONFIRMED, VALID_UNCONFIRMED or INVALID
  • Line type: FIXED_LINE, MOBILE, VOIP etc. - compliant with the FCC Telephone Consumer Protection Act (TCPA)
  • Location: Region and city
  • Phone number correction and re-formatting according to national and international standards

During the entire process, the phone number is not contacted in any way, nor will any phones connected to a line ring.

Phone Validation API Code Examples

  • API Specification
  • jQuery
  • PHP
  • Java
  • C#
  • VB.NET

Phone Validation API

API URLhttp[s]://api.phone-validator.net/api/v2/verify
MethodGET or POST
Example API request (using the GET method):
https://api.phone-validator.net/api/v2/verify?PhoneNumber=09874-322466&CountryCode=de&APIKey=your API key
Input Parameters
   PhoneNumberphone number to validate (string)
   CountryCodetwo letter ISO 3166-1 country code (string) [optional, if phone number is in international format]
   LocaleIETF language tag for Geocoding (string) [optional; default 'en-US']
   Mode'extensive' | 'express' (string) [optional; default 'extensive']
   APIKeyyour API key (string)
   Timeouttimeout in seconds (int) [optional; default 10s, min 5s, max 300s]
API Result (JSON)
   statusVALID_CONFIRMED, VALID_UNCONFIRMED, INVALID
DELAYED, RATE_LIMIT_EXCEEDED, API_KEY_INVALID_OR_DEPLETED
   linetypeFIXED_LINE, MOBILE, VOIP, TOLL_FREE, PREMIUM_RATE, SHARED_COST, PERSONAL_NUMBER, PAGER, UAN, VOICEMAIL
   locationgeographical location (city, county, state)
   countrycodetwo letter ISO 3166-1 country code
   formatnationalphone number in national format
   formatinternationalphone number in international format
   mccmobile country code to identify a mobile network operator (carrier) using the GSM (including GSM-R), UMTS, and LTE networks
   mncmobile network code to identify a mobile network operator (carrier) using the GSM (including GSM-R), UMTS, and LTE networks

Phone Number Validation with jQuery

<script type="text/javascript" src="path/to/jquery"></script>
<script type="text/javascript">
$(document).ready(function() {
    ...
    // send API request
    PhoneNumber = 'phone number';
    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>

Phone Number Validation with PHP

...
// build API request
$APIUrl = 'https://api.phone-validator.net/api/v2/verify';
$PhoneNumber = "phone number";
$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 = "phone number";
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# .NET 4.5

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 = "phone number";
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 4.5

...
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
...

Wordpress, jQuery & Node.js Plugins

Easy to install & use - these Phone Validator API plugins are available already:

Register for a Free Phone Validation Account!
You can use our Phone Validation API to check up to 100 phone numbers for free -
just register for your free account and we send you an email with the details!

Please choose one of the options below: