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 key from our billing dashboard. We are providing 100 free API calls.

Copied
GET https://api.whoisfreaks.com/v1.0/whois?apiKey=API_KEY&whois=historical&domainName=google.com


Input parameters: required

apiKey Get your API key on our billing dashboard.

whois For getting live or historical or reverse whois.

domainName The domainName for requested whois.

Input parameters: optional

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


Response

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. We are providing 100 free API calls.

        {
    "status": true,
    "whois": "historical",
    "total_records": "2",
    "whois_domains_historical": [
        {
            "num": 1,
            "status": true,
            "domain_name": "google.com",
            "create_date": "1997-09-15",
            "expiry_date": "2020-09-14",
            "domain_registrar": {
                "registrar_name": "MARKMONITOR INC."
            },
            "registrant_contact": {
                "name": "Dns Admin",
                "company": "Google Inc.",
                "city": "Mountain View",
                "state": "CA",
                "zip_code": "94043",
                "country_name": "UNITED STATES",
                "email_address": "dns-admin@google.com",
                "phone": "16502530000",
                "mailing_address": "Please contact contact-admin@google.com, 1600 Amphitheatre Parkway"
            }
        },
        {
            "num": 2,
            "status": true,
            "domain_name": "google.com",
            "create_date": "2017-01-30",
            "expiry_date": "2020-09-14",
            "domain_registrar": {
                "registrar_name": "MarkMonitor Inc."
            },
            "registrant_contact": {
                "name": "Dns Admin",
                "company": "Google Inc.",
                "city": "Mountain View",
                "state": "CA",
                "zip_code": "94043",
                "country_name": "UNITED STATES",
                "email_address": "dns-admin@google.com",
                "phone": "+1.6502530000",
                "mailing_address": "Please contact contact-admin@google.com, 1600 Amphitheatre Parkway"
            },
            "administrative_contact": {
                "name": "Dns Admin",
                "company": "Google Inc.",
                "city": "Mountain View",
                "state": "CA",
                "zip_code": "94043",
                "country_name": "UNITED STATES",
                "email_address": "dns-admin@google.com",
                "phone": "16502530000",
                "mailing_address": "Please contact contact-admin@google.com, 1600 Amphitheatre Parkway"
            },
            "technical_contact": {
                "name": "Dns Admin",
                "company": "Google Inc.",
                "city": "Mountain View",
                "state": "CA",
                "zip_code": "94043",
                "country_name": "UNITED STATES",
                "email_address": "dns-admin@google.com",
                "phone": "16502530000",
                "mailing_address": "Please contact contact-admin@google.com, 1600 Amphitheatre Parkway"
            },
            "billing_contact": {
                "name": "Dns Admin",
                "company": "Google Inc.",
                "city": "Mountain View",
                "state": "CA",
                "zip_code": "94043",
                "country_name": "UNITED STATES",
                "email_address": "dns-admin@google.com",
                "phone": "16502530000",
                "mailing_address": "Please contact contact-admin@google.com, 1600 Amphitheatre Parkway"
            }
        }
    ]
}
        
            

            <HistoricalWhoisResponse>
    <status>true</status>
    <whois>historical</whois>
    <total_records>2</total_records>
    <whois_domains_historical>
        <whois_domains_historical>
            <num>1</num>
            <status>true</status>
            <domain_name>google.com</domain_name>
            <query_time>2020-03-30 21:10:18</query_time>
            <create_date>1997-09-15</create_date>
            <expiry_date>2028-09-13</expiry_date>
            <domain_registrar>
                <registrar_name>MarkMonitor, Inc.</registrar_name>
                <whois_server>whois.markmonitor.com</whois_server>
                <website_url>http://www.markmonitor.com</website_url>
            </domain_registrar>
            <registrant_contact>
                <company>Google LLC</company>
                <state>CA</state>
                <country_name>United States</country_name>
                <country_code>US</country_code>
                <email_address>Select Request Email Form at https://domains.markmonitor.com/whois/google.com</email_address>
            </registrant_contact>
            <administrative_contact>
                <company>Google LLC</company>
                <state>CA</state>
                <country_name>United States</country_name>
                <country_code>US</country_code>
                <email_address>Select Request Email Form at https://domains.markmonitor.com/whois/google.com</email_address>
            </administrative_contact>
            <technical_contact>
                <company>Google LLC</company>
                <state>CA</state>
                <country_name>United States</country_name>
                <country_code>US</country_code>
                <email_address>Select Request Email Form at https://domains.markmonitor.com/whois/google.com</email_address>
            </technical_contact>
            <billing_contact/>
            <name_servers>
                <name_servers>ns1.google.com</name_servers>
                <name_servers>ns2.google.com</name_servers>
                <name_servers>ns3.google.com</name_servers>
                <name_servers>ns4.google.com</name_servers>
            </name_servers>
            <domain_status>
                <domain_status>clientTransferProhibited</domain_status>
                <domain_status>clientDeleteProhibited</domain_status>
                <domain_status>serverDeleteProhibited</domain_status>
                <domain_status>serverTransferProhibited</domain_status>
            </domain_status>
        </whois_domains_historical>
        <whois_domains_historical>
            <num>2</num>
            <status>true</status>
            <domain_name>google.com</domain_name>
            <create_date>2017-01-30</create_date>
            <expiry_date>2020-09-14</expiry_date>
            <domain_registrar>
                <registrar_name>MarkMonitor Inc.</registrar_name>
            </domain_registrar>
            <registrant_contact>
                <name>Dns Admin</name>
                <company>Google Inc.</company>
                <city>Mountain View</city>
                <state>CA</state>
                <zip_code>94043</zip_code>
                <country_name>UNITED STATES</country_name>
                <email_address>dns-admin@google.com</email_address>
                <phone>+1.6502530000</phone>
                <mailing_address>Please contact contact-admin@google.com, 1600 Amphitheatre Parkway</mailing_address>
            </registrant_contact>
        </whois_domains_historical>
    </whois_domains_historical>
</HistoricalWhoisResponse>
        
        



Important Note:

This is the complete json with domain_registrar,registrant_contact,administrative_contact,technical_contact,billing_contact,name_servers, domain_status objects.In some cases some of these objects can be empty when performing whois of requested domains because whois have missing information of such object so you should must have to check condition on your side.

HTTP Error Codes

Below mentioned possible type of error and desc

            
{
    "timestamp": 1612182225247,
    "status": 404,
    "error": "Record Not Found",
    "message": "Record not found",
    "path": "/v1.0/whois/whois=historical&domainName=DOMAIN_NAME&apiKey=API_KEY"
}
            
            
            
 {
    "timestamp": 1612161378521,
    "status": 400,
    "error": "Invalid Param Exception",
    "message": "Please pass domain param correct value[For Technical Support: support@whoisfreaks.com]",
    "path": "/v1.0/whois/whois=historical&domainName=&apiKey=API_KEY"
}
            
                        

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/whois/whois=live&domainName=DOMAIN_NAME&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/whois/whois=live&domainName=DOMAIN_NAME&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/whois/whois=live&domainName=DOMAIN_NAME&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/whois/whois=live&domainName=DOMAIN_NAME&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/whois/whois=live&domainName=DOMAIN_NAME&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/whois/whois=live&domainName=DOMAIN_NAME&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/whois/whois=live&domainName=DOMAIN_NAME&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/whois/whois=live&domainName=DOMAIN_NAME&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/whois/whois=live&domainName=DOMAIN_NAME&apiKey=API_KEY"
}
            
                        

API Usage Rule

Cost Using Historical Whois Service will charge 2 credits per domain.

Code Snippet


    curl --location --request GET 'https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY'



var request = require('request');
var options = {
  'method': 'GET',
  'url': 'https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY',
  'headers': {
  }
};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});





    OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();




    import http.client
    conn = http.client.HTTPSConnection("api.whoisfreaks.com")
payload = ''
headers = {}
conn.request("GET", "/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))




     'https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&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 => 'GET',
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;





require "uri"
require "net/http"

url = URI("https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)

response = https.request(request)
puts response.read_body





    var requestOptions = {
  method: 'GET',
  redirect: 'follow'
};

fetch("https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));




var client = new RestClient("https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);




    package main

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

func main() {

  url := "https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY"
  method := "GET"

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

  if err != nil {
    fmt.Println(err)
    return
  }
  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, "GET");
  curl_easy_setopt(curl, CURLOPT_URL, "https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY");
  curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
  curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
  struct curl_slist *headers = NULL;
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
  res = curl_easy_perform(curl);
}
curl_easy_cleanup(curl);





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

var semaphore = DispatchSemaphore (value: 0)

var request = URLRequest(url: URL(string: "https://api.whoisfreaks.com/v1.0/whois?whois=historical&domainName=jfreaks.com&apiKey=API_KEY")!,timeoutInterval: Double.infinity)
request.httpMethod = "GET"

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 WHOIS Historical API? How it Works?

Our Whois Historical API provides many TlDs historical well-structured whois in JSON format. We save whois information in our db when some changes occured in domain's Whois on the daily basis.



Not Found Historical Whois Record of domains will be charged or not?

No! You will not be charged if our system does not provide historical record.



How Old You Have Historical records?

We are Providing historical whois data from 1986.



Each WHOIS record Will be unique?

Yes, Each whois record will be unique. We only save unique whois record of the domains.



How many TLDs are supported by your system?

You can check here current supported TLD's list



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?

On Subscription plans we have surcharge service. We will serve you if your API 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 server when API credit plans have reached their requests limit.