Email-Validator - Made in Germany & 100% EU-GDPR compliant

Real-Time Email Validation API

Check the quality of email addresses right at the point of signup with Byteplant's easy-to-use email verification API. Our email verification API automatically detects if an email address is valid or not and helps you to eliminate all disposable, fake and mistyped email addresses.

Try Our API For Free

How Does The Email Validation API Work?

Byteplant's email address validator identifies all kinds of problematic email addresses and flags them before they harm your email sender reputation. Our email validation API uses a multi-layer testing algorithm that runs multiple checks to find out if an email address is really valid and accepts mail.

Our Email Validator uses a multi-layer checking process, with every single email going through all of these validation and verification steps:

  • Syntax verification (IETF/RFC standard conformance)
  • DNS validation, including MX record lookup
  • Disposable email address detection
  • Misspelled domain detection to prevent Typosquatting
  • SMTP connection and availability checking
  • Temporary unavailability detection
  • Mailbox existence checking
  • Catch-All testing
  • Greylisting detection

During the entire process, we never send any email to the recipient address.

Our Real-Time Online Email Verification API can be easily integrated into your sign-up forms, applications and websites or into content management systems (CMS) like WordPress, Drupal, Typo3 or Joomla. We provide detailed code examples in Javascript, PHP, Java, C#, VB.NET - all you have to do is to send a simple HTTP or HTTPS (SSL) request to our API servers! Each request returns a result code and a detailed description.

To make things as easy as possible for you, we offer ready-made plugins for WordPress, Drupal, jQuery and Node.js for easy out-of-the-box integration.

Email Validation API Code Examples

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

Real-Time Email Verification API

API URLhttp[s]://
MethodGET or POST
Example API request (GET) API key
Input Parameters
EmailAddress (string)email address to validate
APIKey (string)your API key
Timeout (int)timeout in seconds (default 10s, min 5s, max 300s)
API Result (JSON)
status (int)API result code
  '401', '118' and '119' status codes indicate API errors:
  '401' -> info: 'Email address missing'
  '118' -> info: 'Rate Limit Exceeded'
  '119' -> info: 'API Key Invalid or Depleted'
info (string)short status description
details (string)full status description
freemail (boolean)indicates freemail addresses (Gmail, Yahoo, Outlook/Hotmail/Live, AOL, ...) [true | false]
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 Email Validation API

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

Example API request
curl -X POST -H 'Content-Type: text/csv' --data-binary @emails.csv " API key"
Input Parameters
Request Bodylist of email addresses to validate in CSV format
APIKey (string)your API key
TaskName (string)name for this validation task [optional]
ValidationMode (string) express (retries unavailable servers for 2 hours)
extensive (retries unavailable servers for 72 hours)
[optional, default = express]
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]
API Result (JSON)
status (int)API result code (121 or 119)
info (string)validation task id
(if status is 121/"Task Accepted")

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

Email Validation with jQuery

<script type="text/javascript" src="path/to/jquery"></script>
<script type="text/javascript">
$(document).ready(function() {
    // send API request
        url: '',
        type: 'POST',
        cache: false,
        crossDomain: true,
        data: { EmailAddress: 'email address', APIKey: 'your API key' },
        dataType: 'json',
        success: function (json) {
            // check API result
            if (typeof(json.status) != "undefined") {
                var resultcode = json.status;
                if (typeof( != "undefined") {
                    // short summary
                    info =;
                } else info = "";
                if (typeof(json.details) != "undefined") {
                    // detailed description
                    details = json.details;
                } else details = "";
                // resultcode 200, 207, 215 - valid
                // resultcode 215 - can be retried to update catch-all status
                // resultcode 114 - greylisting, wait 5min and retry
                // resultcode 118 - api rate limit, wait 5min and retry
                // resultcode 3xx/4xx - bad

Email Validation API with PHP

// build API request
$APIUrl = '';
$Params = array('EmailAddress' => 'email address', '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'} > 0) {
    switch ($result->{'status'}) {
        // valid addresses have a {200, 207, 215} result code
        // result codes 114 and 118 need a retry
        case 200:
        case 207:
        case 215:
            echo "Address is valid.";
            // 215 - can be retried to update catch-all status
        case 114:
            // greylisting, wait 5min and retry
        case 118:
            // api rate limit, wait 5min and retry
            echo "Address is invalid.";
            echo $result->{'info'};
            echo $result->{'details'};
} else {
    echo $result->{'info'};

Email Address Validation with Java

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 Email = "email address";
String APIKey = "your API key";
String APIURL = "";

try {
    HttpPost request = new HttpPost(APIURL);
    List <NameValuePair> Input = new ArrayList<NameValuePair>();
    Input.add(new BasicNameValuePair("EmailAddress", Email));
    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;
    Long result = (Long) jsonObject.get("status");
    // result 200, 207, 215 - valid
    // result 215 - can be retried to update catch-all status
    // result 114 - greylisting, wait 5min and retry
    // result 118 - api rate limit, wait 5min and retry
    // result 3xx/4xx - bad
    String info = (String) jsonObject.get("info");
    String details = (String) jsonObject.get("details");
} catch (IOException e) {
} catch (ParseException e) {
} finally {

Email-Validator with C#

using System;
using System.Collections.Generic;
using System.Net.Http;

private class APIResult
    public int status { get; set; }
    public String info { get; set; }
    public String details { get; set; }

const String APIURL = "";
HttpClient client = new HttpClient();
String Email = "email address";
String APIKey = "your API key";

var postData = new List<KeyValuePair<string, string>>();
postData.Add(new KeyValuePair<string, string>("EmailAddress", Email));
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().

switch (res.status) {
    // valid addresses have a {200, 207, 215} result code
    // result codes 114 and 118 need a retry
    case 200:
    case 207:
    case 215:
        // address is valid
        // 215 - can be retried to update catch-all status
    case 114:
        // greylisting, wait 5min and retry
    case 118:
        // api rate limit, wait 5min and retry
        // address is invalid
        // res.details

Email-Validator API with VB.NET

Private Sub checkEmail(ByVal Email As String, ByVal APIKey As String)
    Const APIURL As String = ""
    Using client As New Net.WebClient
        Dim postData As New Specialized.NameValueCollection
        postData.Add("EmailAddress", Email)
        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 200, 207, 215
            ' address is valid
            ' 215 - can be retried to update catch-all status
            Case 114, 118
            ' greylisting, wait 5min and retry
            Case 118
            ' api rate limit, wait 5min and retry
            Case Else
            ' address is invalid
        End Select
    End Using
End Sub

Private Class APIResult
    Public status As Integer
    Public info As String
    Public details As String
End Class

WordPress, jQuery & Node.js Plugins

Easy to install & use - these Email Validation API plugins are available already:

Email Validator API: Free Trial

You can use our Online Email Verification API to check up to 1000 email addresses for free - sign up for your free API key!

Email Validator API FAQ

Which availability do you guarantee for the Email Validator service?

Our Email Validation Online API is hosted at three different locations in Europe. We guarantee an availability of 99.9% - please see the API server status page for real-time availability information.

What is the average API response time?

API requests will be typically answered within 750 milliseconds.

Where do I find detailed descriptions for all validation result codes?

Our online email validation process provides 100% accurate results in real-time. For each email address you get a detailed validation status.

What does the API result code 114 mean?

If you receive a 114 reply, the check could not be completed within the request timeout period. The mail server for this address may be unavailable at the moment, or it may implement Greylisting. You can retry an address with a 114 result every 5-20 minutes, until a final result is available.

What does the API result code 118 mean?

To guarantee short response times to customers providing online services or running call centers, the Email Validator API implements rate limiting. If you have large amounts of email addresses to check, consider submitting these addresses as an email list. This also frees you from the need to retry greylisted addresses.

You can use our Online Email Validation API to check up to 1000 email addresses for free -
just register for your free account and we send you an email with the details!