Validate & Correct Addresses.

Boost checkout conversion ↑

Stop wasting money on return mail ↓

Address verification, correction, auto-complete & geocoding for 240 countries world-wide.

Online APIs for Address Validation, Correction and Autocomplete

Save money on mailing and shipping - verify address information right at the point of entry. Integrating our Realtime Global Address Validation APIs directly into your website or eCommerce application allows your customers to correct errors instantly and only valid addresses will be accepted.

Our APIs help you to

How Does the Address Validation API Work?

Integrating our Global Address Verification API into your website, eCommerce solution, CRM system or content management system (CMS) is very easy - code examples in Javascript, PHP, Java, C#, VB.NET are available below.

For each address, we provide detailed information like:

  • the deliverability status
  • correction suggestions in case the address is not deliverable
  • Geocoding
  • Address correction, standardization and re-formatting according to international postal standards

Address-Validator - Available 24/7/365

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

Address-Validator API Demo

Sample Addresses
Please select one of the sample addresses or enter the address you want to validate below.
Address Input
Note: House/Building Number can be part of Street Address or be provided separately.
API Request
API GET Request
API Response
What Our Users Say ...

Address-Validator APIs Documentation

API Description

Address Validation API

The Address Validation API returns the deliverability status and detailed information for the address that is provided as input.
Method GET or POST
Example API request (GET)

Address Bulk Verification API

The Address Bulk Verification API allows you to upload up to 100K addresses for validation with a single API request. The Bulk API is asynchronous - you send a request and receive a callback by email (NotifyEmail) or HTTP (NotifyURL) when processing is complete.
Method POST
Example 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).

Address Auto-Complete API

The Address Auto-Complete API returns suggestions matching the freeform address that is provided as input query.
Method GET or POST
Example API request (GET)

Address Retrieval API

The Address Retrieval API returns detailed information for an address id provided as suggestion from the Address Auto-Complete API.
Method GET or POST
Input Parameters
<script type="text/javascript" href="/path/to/jquery"></script>
<script type="text/javascript">
$(document).ready(function() {
    // send API request
    Locale = 'en';
        url: '',
        type: 'POST',
        data: { StreetAddress: StreetAddress,
                City: City,
                PostalCode: PostalCode,
                State: State,
                CountryCode: CountryCode,
                Locale: Locale,
                APIKey: 'your API key'},
        dataType: 'json',
        success: function (json) {
            // check API result
            if (typeof(json.status) != "undefined") {
                status = json.status;
                formattedaddress = json.formattedaddress;
// build API request
$APIUrl = '';
$Params = array('StreetAddress' => $StreetAddress,
                'City' => $City,
                'PostalCode' => $PostalCode,
                'State' => $State,
                'CountryCode' => $CountryCode,
                'Locale' => $Locale,
                'APIKey' => 'your API key');
$Request = http_build_query($Params, '', '&');
$ctxData = array(
    'header'=>"Connection: close\r\n".
    "Content-Type: application/x-www-form-urlencoded\r\n".
    "Content-Length: ".strlen($Request)."\r\n",
$ctx = stream_context_create(array('http' => $ctxData));

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

// check API result
if ($result && $result->{'status'} == 'VALID') {
    $formattedaddress = $result->{'formattedaddress'};
} else {
    echo $result->{'info'};
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 StreetAddress = "...";
String City = "...";
String PostalCode = "...";
String State = "...";
String CountryCode = "US";
String Locale = "en";
String APIKey = "your API key";
String APIURL = "";
try {
    HttpPost request = new HttpPost(APIURL);
    List <NameValuePair> Input = new ArrayList<NameValuePair>();
    Input.add(new BasicNameValuePair("StreetAddress", StreetAddress));
    Input.add(new BasicNameValuePair("City", City));
    Input.add(new BasicNameValuePair("PostalCode", PostalCode));
    Input.add(new BasicNameValuePair("State", State));
    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 result = (String) jsonObject.get("status");
    if (result.equalsIgnoreCase("VALID")) {
        String formattedaddress = (String) jsonObject.get("formattedaddress");
} catch (IOException e) {
} catch (ParseException e) {
} finally {
C# .NET 4.5
// C# .NET 4.5
using System;
using System.Collections.Generic;
using System.Net.Http;

private class APIResult
    public String status { get; set; }
    public String formattedaddress { get; set; }

const String APIURL = "";
HttpClient client = new HttpClient();
String StreetAddress = "...";
String City = "...";
String PostalCode = "...";
String State = "...";
String CountryCode = "US";
String Locale = "en";
String APIKey = "your API key";

var postData = new List<KeyValuePair<string, string>>();
postData.Add(new KeyValuePair<string, string>("StreetAddress", StreetAddress));
postData.Add(new KeyValuePair<string, string>("City", City));
postData.Add(new KeyValuePair<string, string>("PostalCode", PostalCode));
postData.Add(new KeyValuePair<string, string>("State", State));
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().

if (res.status.Equals("VALID")) {
    String formattedaddress = res.formattedaddress;
VB.NET 4.5
' VB.NET 4.5
Private Sub checkAddress(ByVal StreetAddress As String,
                       ByVal City As String,
                       ByVal PostalCode As String,
                       ByVal State As String,
                       ByVal CountryCode As String,
                       ByVal Locale As String,
                       ByVal APIKey As String)
    Const APIURL As String = ""
    Using client As New Net.WebClient
      Dim postData As New Specialized.NameValueCollection
      postData.Add("StreetAddress", StreetAddress)
      postData.Add("City", City)
      postData.Add("PostalCode", PostalCode)
      postData.Add("State", State)
      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)
      If res.status.Equals("VALID") Then
        Dim formattedaddress As String = res.formattedaddress
      End If
    End Using
End Sub

Private Class APIResult
    Public status As String
    Public formattedaddress As String
End Class