dropdown

Calling API

For getting the API key, you need to get started with our developer account. When you sign up then you can copy the API key from our billing dashboard.

Copied
POST https://api.whoisfreaks.com/v1.0/domain/availability?apiKey=API_KEY
Body


{
    "domainNames":[
        "Google.com",
        "abc.com",
        "google.uk",
        "google.us",
    ]
}



            
POST https://api.whoisfreaks.com/v1.0/domain/availability?apiKey=API_KEY&domain=google.com
Body


{
"tld":[
    "com",
    "uk",
    "us"
    ]
}



            


Input parameters: required

apiKey Get your API key on our billing dashboard.

Input parameters: optional

format Two formats are available JSON, XML. If you don't pass 'format' parameter, default format is JSON.


Response

Following is explanation of API response

  • DomainAvailability
    • true: domain is not registered
    • false: domain is already registered
  • Status
    • true: domain data is fetched successfully and its result is correct
    • false: domain data cannot be fetched and its result is incorrect. No credits will be charged in this case


[
    {
        "domain": "google.us",
        "domainAvailability": false,
        "status": true
    },
    {
        "domain": "google.uk",
        "domainAvailability": false,
        "status": true
    },
    {
        "domain": "Google.com",
        "domainAvailability": false,
        "status": true
    },
    {
        "domain": "abc.com",
        "domainAvailability": false,
        "status": true
    }
]


Bulk Domain Availability with custom TLDs

[ { "domain": "whoisfreaks.us", "domainAvailability": true, "status": true }, { "domain": "whoisfreaks.uk", "domainAvailability": true, "status": true }, { "domain": "whoisfreaks.com", "domainAvailability": false, "status": true } ]



HTTP Error Codes

Below mentioned possible type of error and desc

HTTP Code
Error Message
206 Partial response. 400 Please provide domain 400 Please provide domainNames or tld 413 Requested list size is 501 which exceeds maximum list size of 500 401 Provided API key is invalid. [For Technical Support: support@whoisfreaks.com] 401 Provided API key is inactive. [For Technical Support: support@whoisfreaks.com] 401 Please buy subscription plan or add api credits then use this api key. [For Technical Support: support@whoisfreaks.com] 413 You have exceeded the limit of api credits requests [allowed_request_no].Please upgrade your plan [For Technical Support: support@whoisfreaks.com] 412 You have exceeded the limit of api plan requests and your subscription canceled.Please contact our technical support team: support@whoisfreaks.com] 413 You have exceeded the limit of Surcharge Requests [allowed_surcharge_request_no]. Please upgrade your plan [For Technical Support: support@whoisfreaks.com] 401 Your subscription is deactivated.Please buy new plan or add api credits for using whoisfreaks api's [For Technical Support: support@whoisfreaks.com] 401 Your subscription is deactivated due to many time payment failure.Please buy new plan or add api credits for using whoisfreaks api's 401 Your account is deactivated.[For Technical Support: support@whoisfreaks.com]

    
[
    {
        "domain": "google.gov",
        "domainAvailability": false,
        "status": false
    },
    {
        "domain": "google.us",
        "domainAvailability": false,
        "status": true
    },
    {
        "domain": "google.uk",
        "domainAvailability": false,
        "status": true
    }
]
    
            
 {
    "timestamp": 1655190764370,
    "status": 400,
    "error": "Invalid Param Exception",
    "message": "Please provide domain",
    "path": "/v1.0/domain/availability?domain=&apiKey=API_KEY"
}
            
                        
            
 {
    "timestamp": 1655190764370,
    "status": 400,
    "error": "Invalid Param Exception",
    "message": "Please provide domainNames or tld",
    "path": "/v1.0/domain/availability?domain=&apiKey=API_KEY"
}
            
                        
    
{
    "timestamp": 1655290273273,
    "status": 413,
    "error": "Maximum size limit exceeded",
    "message": "Requested list size is 501 which exceeds maximum list size of 500",
    "path": "/v1.0/domain/availability"
}
    

Some common Errors:

                        
 {
    "timestamp": 1612161378521,
    "status": 401,
    "error": "Api Access Exception",
    "message": "Provided API key is invalid. [For Technical Support: support@whoisfreaks.com]",
    "path": "/v1.0/domain/availability?apiKey=API_KEY"
}
            
                        

                        
 {
    "timestamp": 1612161378521,
    "status": 401,
    "error": "Api Access Exception",
    "message": "Provided API key is inactive. [For Technical Support: support@whoisfreaks.com]",
    "path": "/v1.0/domain/availability?apiKey=API_KEY"
}
            
                        

                        
 {
    "timestamp": 1612161378521,
    "status": 401,
    "error": "Api Access Exception",
    "message": "Please buy subscription plan or add api credits then use this api key. [For Technical Support: support@whoisfreaks.com]",
    "path": "/v1.0/domain/availability?apiKey=API_KEY"
}
            
                        

                        
 {
    "timestamp": 1612161378521,
    "status": 413,
    "error": "Api Access Exception",
    "message": "You have exceeded the limit of api credits requests [allowed_request_no].Please upgrade your plan [For Technical Support: support@whoisfreaks.com]  ",
    "path": "/v1.0/domain/availability?apiKey=API_KEY"
}
            
                        

                        
 {
    "timestamp": 1612161378521,
    "status": 412,
    "error": "Api Access Exception",
    "message": "You have exceeded the limit of api plan requests and your subscription canceled.Please contact our technical support team: support@whoisfreaks.com]",
    "path": "/v1.0/domain/availability?apiKey=API_KEY"
}
            

            

                        
 {
    "timestamp": 1612161378521,
    "status": 413,
    "error": "Api Access Exception",
    "message": "You have exceeded the limit of Surcharge Requests [allowed_surcharge_request_no]. Please upgrade your plan [For Technical Support: support@whoisfreaks.com] ",
    "path": "/v1.0/domain/availability?apiKey=API_KEY"
}
            

            
                        
 {
    "timestamp": 1612161378521,
    "status": 401,
    "error": "Api Access Exception",
    "message": "Your subscription is deactivated.Please buy new plan or add api credits for using whoisfreaks api's [For Technical Support: support@whoisfreaks.com]",
    "path": "/v1.0/domain/availability?apiKey=API_KEY"
}
            
                        

                        
 {
    "timestamp": 1612161378521,
    "status": 401,
    "error": "Api Access Exception",
    "message": "Your subscription is deactivated due to many time payment failure.Please buy new plan or add api credits for using whoisfreaks api's",
    "path": "/v1.0/domain/availability?apiKey=API_KEY"
}
            
                        



                        
 {
    "timestamp": 1612161378521,
    "status": 401,
    "error": "Api Access Exception",
    "message": "Your account is deactivated.[For Technical Support: support@whoisfreaks.com]",
    "path": "/v1.0/domain/availability?apiKey=API_KEY"
}
            
                        

API Usage Rule

Cost Using Bulk Domain Availability Service will charge 1 credit per domain, and maximum of 500 domains can be added in one request.

Code Snippet


    
        curl -d '{"domainNames":["google.com", "google.uk", "google.us"]}' -H "Content-Type: application/json" -X POST https://api.whoisfreaks.com/v1.0/domain/availability?apiKey=API_KEY
    



var request = require('request');
var requestBody = {"domainNames":["google.com", "google.uk", "google.us"]};
var options = {
  'method': 'POST',
    json: true,
    body: requestBody
  'url': 'https://api.whoisfreaks.com/v1.0/domain/availability?apiKey=API_KEY',
  'headers': {
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});





OkHttpClient client = new OkHttpClient();
MediaType mediaType= MediaType.parse("application/json; charset=utf-8");

List<String> domainsList = new ArrayList<>();
domainsList.add("google.com");
domainsList.add("google.uk");
domainsList.add("google.us");

HashMap<String, List<String>> domainMap = new HashMap<>();
domainMap.put("domainNames", domainsList);
ObjectMapper objectMapper = new ObjectMapper();
String jsonDataString = objectMapper.writeValueAsString(domainMap);
RequestBody requestBody = RequestBody.create (mediaType, jsonDataString);

Request request = new Request.Builder()
        .url("https://api.whoisfreaks.com/v1.0/domain/availability?domain=jfreaks.com&apiKey=API_KEY")
        .method("POST", requestBody)
        .addHeader("content-type", "application/json; charset=utf-8")
        .build();
Response response = client.newCall(request).execute();




import http.client
import json

jsonData = {"domainNames":["google.com", "google.uk", "google.us"]}
payload = json.dumps(jsonData)
headers = {"content-type": "application/json"}

conn = http.client.HTTPSConnection("api.whoisfreaks.com")
conn.request("GET", "/v1.0/domain/availability?apiKey=API_KEY", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))




<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.whoisfreaks.com/v1.0/domain/available?apiKey=API_KEY',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS =>'{
    "domainNames":
    [
    "google.com",
    "google.us",
    "google.uk"
    ]
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;






require "uri"
require "net/http"
require 'json'

url = URI("https://api.whoisfreaks.com/v1.0/domain/availability?apiKey=API_KEY")
header = {'Content-Type': 'application/json'}

data= {"domainNames" => ["google.com", "google.us", "google.uk"]}
https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url.request_uri, header)
request.body = data.to_json
response = https.request(request)
puts response.read_body





fetch("https://api.whoisfreaks.com/v1.0/domain/availability?apiKey=API_KEY", {

    method: "POST",
    body: JSON.stringify({
        "domainNames": ["google.com", "google.us", "google.uk"],
    }),

    headers: {
        "Content-type": "application/json; charset=UTF-8"
    }
})

.then(response => response.json())
.then(json => console.log(json));




var client = new RestClient("https://api.whoisfreaks.com/v1.0/domain/available?apiKey=API_KEY");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@"    ""domainNames"":" + "\n" +
@"    [" + "\n" +
@"    ""google.com""," + "\n" +
@"    ""google.us""," + "\n" +
@"    ""google.uk""" + "\n" +
@"    ]" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);




package main

import (
  "fmt"
  "strings"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://api.whoisfreaks.com/v1.0/domain/availability?apiKey=API_KEY"
  method := "POST"

  payload := strings.NewReader(`{
"domainNames":["google.com", "google.us", "google.uk"]
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}




CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
  curl_easy_setopt(curl, CURLOPT_URL, "https://api.whoisfreaks.com/v1.0/domain/available?apiKey=API_KEY");
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
  curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
  struct curl_slist *headers = NULL;
  headers = curl_slist_append(headers, "Content-Type: application/json");
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  const char *data = "{\n    \"domainNames\":\n    [\n    \"google.com\",\n    \"google.us\",\n    \"google.uk\"\n    ]\n}";
  curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
  res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);






import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

var semaphore = DispatchSemaphore (value: 0)

let parameters = "{\n    \"domainNames\":\n    [\n    \"google.com\",\n    \"google.us\",\n    \"google.uk\"\n    ]\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "https://api.whoisfreaks.com/v1.0/domain/available?apiKey=API_KEY")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
  guard let data = data else {
    print(String(describing: error))
    semaphore.signal()
    return
  }
  print(String(data: data, encoding: .utf8)!)
  semaphore.signal()
}

task.resume()
semaphore.wait()



FAQs

What is Bulk Domain Availability API?

Bulk Domain Availability API allows you to check domain availability of multiple domains in a single request. A maximum of 500 domains can be sent in a single request. Moreover, it generates suggestions based on custom TLDs.



What is response time for Bulk Domain Availability API?

Bulk Domain Availability API response takes from 16 seconds to 1 minute for 500 domains.



Not supported domain extension will be charged or not?

No, we don't charge for not supported domain.



Which TLDs are supported by your system?

You can check the current supported TLDs here



Do you have notification service when my API credits or requests near to an end?

Yes, we will inform you via an email. We send notification email on 80%,90%,100% usage.



What happened if my API credits or requests are ended and my system is using whois API?

We don't serve surcharge on API credits but API Subscription plans have surcharge service. We will serve you if your credits or requests limit reached until your surcharge allowed request limit reach. Each subscription plan has a different no of surcharge requests.



What is surcharge service?

Whenever your system will consume your API subscription plan quota 100% then we take care and keep on serving you according to your plan surcharge requests. And when your subscription will renew then our system will calculate amount according to surcharge requests consumed and add this amount to the actual plan price.



API Credit plans have surcharge service?

No. We don't serve when API credit plans have reached their request limit.