Emails Checker offers a robust and user-friendly REST-based JSON API that empowers you to verify and validate email addresses with precision at the point of entry. Designed for ease of integration, this API ensures that email addresses submitted through your system meet high standards of accuracy and validity.
By leveraging the Emails Checker API, you can perform comprehensive checks that go beyond basic syntax validation. Our API confirms the existence of email addresses using MX-Records and the Simple Mail Transfer Protocol (SMTP), and it determines whether a mailbox is set up to catch all incoming mail traffic. This detailed validation process helps in filtering out invalid or generic email addresses, thereby reducing bounce rates and enhancing the integrity of your email communications.
To get started with the Emails Checker API, you'll need an API key. Simply create a free account at emails-checker.net to obtain your API key. Once you have it, you can easily integrate our powerful email validation capabilities into your applications, ensuring that your data remains accurate and reliable.
API Endpoint
https://api.emails-checker.net/time
The Emails Checker API provides a comprehensive solution for verifying email addresses through multiple layers of validation. Beyond basic syntax checks, the API ensures the validity of email addresses by utilizing MX-Records and the Simple Mail Transfer Protocol (SMTP) to confirm their existence. It also assesses whether a mailbox is configured to catch all incoming traffic, which can help in filtering out generic or catch-all addresses.
The API is integrated with a suite of regularly updated databases that categorize email providers into disposable (e.g., "Mailinator"), free (e.g., "Gmail", "Yahoo"), and individual domains. This categorization facilitates efficient separation and management of various types of email addresses, enhancing the accuracy and reliability of email validation processes.
| Object | Description |
|---|---|
| success | Returns the True or False represents api success of error |
| response | This array will give you a complete email details. |
| Contains the exact email address requested. | |
| result | Return 4 results deliverable, undeliverable, risky, unknown in this opeion only *deliverable* is safe to send emails. |
| syntax | Returns true or false depending on whether email syntax is valid or not |
| mx_records | Returns true or false depending on whether or not MX-Records for the requested domain could be found. |
| smtp_code | Returns smtp result codes you can check all about smtp codes at here |
| catch_all | Returns true or false depending on whether or not the requested email address is found to be part of a catch-all mailbox. |
| disposable | Returns true or false depending on whether or not the requested email address is a disposable email address. (e.g. "[email protected]") |
| description | This will give you a reason of your email delivery. |
| user | Returns the local part of the request email address. (e.g. "jarvis" in "[email protected]") |
| domain | Returns the domain of the requested email address. (e.g. "company.com" in "[email protected]") |
| free_email | Returns true or false if the email provider is free for all or not. eg gmail.com, yahoo.com are free and other like emails-checker.net is private domain so it will return false. |
| role | Returns true or false depending on whether or not the requested email address is a role email address. (e.g. "[email protected]", "[email protected]") |
Result example :
{
"success": true,
"response": {
"email": "[email protected]",
"result": "deliverable",
"syntax": false,
"mx_records": true,
"smtp_code": "250",
"catch_all": false,
"disposable": false,
"description": "Valid Email Address.",
"user": "support",
"domain": "emails-checker.net",
"free_email": true,
"role": true
}
}
The API uses standard HTTP status codes to indicate the success or failure of a request. All error responses include a JSON body with details about the error.
| HTTP Status | Error Type | Description |
|---|---|---|
| 400 | bad_request |
The request was malformed or missing required parameters. Verify that all required query parameters are provided and correctly formatted. |
| 401 | unauthorized |
Authentication failed. The provided API key is missing, invalid, or has been revoked. Ensure you are using a valid access key from your dashboard. |
| 402 | payment_required |
Your account has insufficient credits to complete this request. Upgrade your plan or purchase additional credits to continue using the API. |
| 403 | forbidden |
Your account is inactive or suspended. Contact support to resolve account status issues. |
| 404 | not_found |
The requested endpoint or resource does not exist. Verify the API endpoint URL and ensure it matches the documentation. |
| 422 | unprocessable_entity |
The request was well-formed but contains semantically invalid data. For example, the email address parameter is missing or empty. |
| 429 | too_many_requests |
Rate limit exceeded. You have sent too many requests within the allowed time window. Refer to the Rate Limits section for details on permitted request rates. |
| 500 | internal_server_error |
An unexpected error occurred on the server. If this error persists, contact support with the request details for assistance. |
Returned when the request is missing required parameters or contains invalid data.
HTTP/1.1 400 Bad Request
{
"success": false,
"response": {
"code": 400,
"type": "bad_request",
"error": "Missing required parameter: email"
}
}
Returned when the API key is missing, invalid, or revoked. Include a valid access_key parameter in your request.
HTTP/1.1 401 Unauthorized
{
"success": false,
"response": {
"code": 401,
"type": "unauthorized",
"error": "Invalid or missing API key."
}
}
Returned when your account has insufficient credits. Upgrade your plan or purchase additional credits to continue.
HTTP/1.1 402 Payment Required
{
"success": false,
"response": {
"code": 402,
"type": "payment_required",
"error": "Insufficient credits. Please upgrade your plan."
}
}
Returned when you exceed the rate limit. Implement exponential backoff and retry after the specified interval.
HTTP/1.1 429 Too Many Requests
{
"success": false,
"response": {
"code": 429,
"type": "too_many_requests",
"error": "Rate limit exceeded. Please retry after 60 seconds."
}
}
The /credits endpoint allows you to retrieve the current available balance of your account. This endpoint provides a simple and straightforward way to check how many credits you have remaining, which can be useful for managing your usage and ensuring you have sufficient credits for your ongoing email verification needs.
| PARAMS | DESCRIPTION |
|---|---|
| success | If your request is success you will get true else false with http code other than 200 depending on error. |
| response | This array will give you all necessary details about your request. |
| credits | This id will return your current available Credits. |
HttpURLConnection conn = (HttpURLConnection) new URL(
"https://api.emails-checker.net/credits?access_key=" + accessKey
).openConnection();
conn.setRequestMethod("GET");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
String response = new BufferedReader(
new InputStreamReader(conn.getInputStream())
).lines().reduce("", String::concat);
return new JSONObject(response).getJSONObject("response");
}
$ composer require guzzlehttp/guzzle
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->get('https://api.emails-checker.net/credits', [
'query' => ['access_key' => $accessKey]
]);
echo json_decode($response->getBody(), true);
$ npm install axios
const axios = require('axios');
const response = await axios.get('https://api.emails-checker.net/credits', {
params: { access_key: accessKey }
});
return response.data.response;
$ pip install requests
url = 'https://api.emails-checker.net/credits'
response = requests.get(url, params={'access_key': access_key})
data = response.json()
return data['response']
The /time endpoint returns the current server time. This endpoint is useful for verifying that your API key is valid and that the service is operational. It can also be used to synchronize your application's clock with the server.
| PARAMS | DESCRIPTION |
|---|---|
| success | If your request is success you will get true else false with http code other than 200 depending on error. |
| response | This array will give you all necessary details about your request. |
| time | The current server time in ISO 8601 format. |
HttpURLConnection conn = (HttpURLConnection) new URL(
"https://api.emails-checker.net/time?access_key=" + accessKey
).openConnection();
conn.setRequestMethod("GET");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
String response = new BufferedReader(
new InputStreamReader(conn.getInputStream())
).lines().reduce("", String::concat);
return new JSONObject(response).getJSONObject("response");
}
$ composer require guzzlehttp/guzzle
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->get('https://api.emails-checker.net/time', [
'query' => ['access_key' => $accessKey]
]);
echo json_decode($response->getBody(), true);
$ npm install axios
const axios = require('axios');
const response = await axios.get('https://api.emails-checker.net/time', {
params: { access_key: accessKey }
});
return response.data.response;
$ pip install requests
url = 'https://api.emails-checker.net/time'
response = requests.get(url, params={'access_key': access_key})
data = response.json()
return data['response']
Perform a single email validation request.
The /check endpoint helps you verify if an email address is valid. When you use this endpoint, it performs a series of checks to make sure the email address is formatted correctly, actually exists, and can receive emails. It can be integrated in any of your desired applications and scripts.
If you are going to use this API within a sign-up form, you must consider Deliverable, Accept-all and Unknown statuses as valid, so you do not miss out on any sign-ups.
| PARAMS | DESCRIPTION |
|---|---|
| success | If your request is success you will get true else false with http code other than 200 depending on error. |
| response | This array will give you all necessary details about your request. Check responses page for details of the response parameters. |
HttpURLConnection conn = (HttpURLConnection) new URL(
"https://api.emails-checker.net/check?access_key=" + accessKey + "&email=" + email
).openConnection();
conn.setRequestMethod("GET");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
String response = new BufferedReader(
new InputStreamReader(conn.getInputStream())
).lines().reduce("", String::concat);
return new JSONObject(response).getJSONObject("response");
}
$ composer require guzzlehttp/guzzle
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->get('https://api.emails-checker.net/check', [
'query' => [
'access_key' => $accessKey,
'email' => $email,
]
]);
echo json_decode($response->getBody(), true);
$ npm install axios
const axios = require('axios');
const response = await axios.get('https://api.emails-checker.net/check', {
params: {
access_key: accessKey,
email: email,
}
});
return response.data.response;
$ pip install requests
url = 'https://api.emails-checker.net/check'
response = requests.get(url, params={'access_key': access_key,'email': email})
data = response.json()
return data['response']
HTTP/1.1 200 Success
{
"success": true,
"response": {
"email": "[email protected]",
"result": "deliverable",
"syntax": false,
"mx_records": true,
"smtp_code": "250",
"catch_all": false,
"disposable": false,
"description": "Valid Email Address.",
"user": "support",
"domain": "emails-checker.net",
"free_email": true,
"role": true
}
}