Address-Validator - Made in Germany & 100% EU-GDPR compliant
Verify and Correct Postal Addresses from 240 Countries World-Wide
Our global address validation service is available not only for the US and Canada - we offer address validation, standardization and correction for 240+ countries worldwide.
Address Auto-Complete for 240 Countries World-Wide
Address Autocomplete uses type-ahead search to suggest addresses as the user is typing, reducing the number of keystrokes up to 75%. It helps to increase conversion rates and decreases cart abandonment rates in e-commerce.
Address Geocoding for 240 Countries World-Wide
Turn addresses into latitude & longitude geo coordinates - our Geocoding Add-on enriches postal addresses from 240 countries world-wide with rooftop accurate geographical coordinates.

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

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.

Address-Validator API Demo

Sample Address Data
Address Input
API Request
API GET Request
API Response

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
GDPR: Data Protection Guaranteed
GDPR: Data Protection Guaranteed
Your data is safe with us. Only you have access to your data. We process and store your data only for the purpose of validation and delete all personally identifiable end-user information within 14 days after the data has been made available to us.
We are happy to help! Please have a look at our FAQ list, or send us an email to