APIs Documentation
How To Use
Click on the API for a more detailed view, with instructions on how to use the function and the output.
Whois API use case
Are you looking for the owner of a certain domain name? Is someone infringing on your trademark? Are you hunting down recently registered “fake” domains? Are you looking for common patterns between phishing websites? Are you looking for 100% accurate domain availability checks?
Are you doing analytical research around domain names?
We could go on and on with different use cases, but hopefully, we found one that you can relate to. If we haven’t, we would love to hear from you!
But in the meantime, try our robust whois API, which we are improving every month!
Whois API
List of supported TLDs – Click here
For detailed code examples on how to use whois API, see our code examples page.
Let’s make an example request:
http://api.whoapi.com/?domain=whoapi.com&r=whois&apikey=demokey
Output in JSON format:
{ "status": "0", "whois_server": "whois.PublicDomainRegistry.com", "status_desc": "Successfully processed", "limit_hit": false, "registered": true, "whois_raw": "Disabled due to GDPR", "disclaimer": "", "premium": false, "generic_whois": true, "registry_domain_id": "1640154939_DOMAIN_COM-VRSN", "registrar_iana_id": "303", "date_created": "2011-02-14 15:31:26", "date_expires": "2021-02-14 15:31:26", "date_updated": "2016-04-26 17:42:17", "domain_status": [ "clientTransferProhibited https:\/\/icann.org\/epp#clientTransferProhibited", "clientTransferProhibited https:\/\/icann.org\/epp#clientTransferProhibited" ], "nameservers": [ "NS1.FIRST-NS.DE", "ROBOTNS2.SECOND-NS.DE", "ROBOTNS3.SECOND-NS.COM" ], "emails": "Disabled due to GDPR", "whois_raw_parent": "Disabled due to GDPR", "whois_name": "PublicDomainRegistry", "contacts": [ { "type": "registrar", "name": "", "organization": "PDR Ltd. d\/b\/a PublicDomainRegistry.com", "phone": "+1.2013775952", "email": "abuse-contact@publicdomainregistry.com", "full_address": "" }, { "type": "registrant", "name": "Disabled due to GDPR", "organization": "WhoAPI Inc.", "street": "Disabled due to GDPR", "city": "Disabled due to GDPR", "zipcode": "Disabled due to GDPR", "state": "California", "country": "US", "phone": "Disabled due to GDPR", "fax": "Disabled due to GDPR", "email": "Disabled due to GDPR", "full_address": "Disabled due to GDPR" }, { "type": "admin", "name": "Disabled due to GDPR", "organization": "WhoAPI Inc.", "street": "Disabled due to GDPR", "city": "Disabled due to GDPR", "zipcode": "Disabled due to GDPR", "state": "California", "country": "US", "phone": "Disabled due to GDPR", "fax": "Disabled due to GDPR", "email": "Disabled due to GDPR", "full_address": "Disabled due to GDPR" }, { "type": "tech", "name": "Disabled due to GDPR", "organization": "WhoAPI Inc.", "street": "Disabled due to GDPR", "city": "Disabled due to GDPR", "zipcode": "Disabled due to GDPR", "state": "California", "country": "US", "phone": "Disabled due to GDPR", "fax": "Disabled due to GDPR", "email": "Disabled due to GDPR", "full_address": "Disabled due to GDPR" } ], "domain_name": "whoapi.com", "_cached": false, "requests_available": 10000 }
http://api.whoapi.com/?domain=whoapi.com&r=whois&apikey=demokey&asxml
Output in XML format:
<?xml version="1.0"?> <response> <status>0</status> <whois_server>whois.PublicDomainRegistry.com</whois_server> <status_desc>Successfully processed</status_desc> <limit_hit/> <registered>1</registered> <whois_raw>Disabled due to GDPR</whois_raw> <disclaimer/> <premium/> <generic_whois>1</generic_whois> <registry_domain_id>1640154939_DOMAIN_COM-VRSN</registry_domain_id> <registrar_iana_id>303</registrar_iana_id> <date_created>2011-02-14 15:31:26</date_created> <date_expires>2021-02-14 15:31:26</date_expires> <date_updated>2016-04-26 17:42:17</date_updated> <domain_status> <item0>clientTransferProhibited https://icann.org/epp#clientTransferProhibited</item0> <item1>clientTransferProhibited https://icann.org/epp#clientTransferProhibited</item1> </domain_status> <nameservers> <item0>NS1.FIRST-NS.DE</item0> <item1>ROBOTNS2.SECOND-NS.DE</item1> <item2>ROBOTNS3.SECOND-NS.COM</item2> </nameservers> <emails>Disabled due to GDPR</emails> <whois_raw_parent>Disabled due to GDPR</whois_raw_parent> <whois_name>PublicDomainRegistry</whois_name> <contacts> <item0> <type>registrar</type> <name/> <organization>PDR Ltd. d/b/a PublicDomainRegistry.com</organization> <phone>+1.2013775952</phone> <email>abuse-contact@publicdomainregistry.com</email> <full_address/> </item0> <item1> <type>registrant</type> <name>Disabled due to GDPR</name> <organization>WhoAPI Inc.</organization> <street>Disabled due to GDPR</street> <city>Disabled due to GDPR</city> <zipcode>Disabled due to GDPR</zipcode> <state>California</state> <country>US</country> <phone>Disabled due to GDPR</phone> <fax>Disabled due to GDPR</fax> <email>Disabled due to GDPR</email> <full_address>Disabled due to GDPR</full_address> </item1> <item2> <type>admin</type> <name>Disabled due to GDPR</name> <organization>WhoAPI Inc.</organization> <street>Disabled due to GDPR</street> <city>Disabled due to GDPR</city> <zipcode>Disabled due to GDPR</zipcode> <state>California</state> <country>US</country> <phone>Disabled due to GDPR</phone> <fax>Disabled due to GDPR</fax> <email>Disabled due to GDPR</email> <full_address>Disabled due to GDPR</full_address> </item2> <item3> <type>tech</type> <name>Disabled due to GDPR</name> <organization>WhoAPI Inc.</organization> <street>Disabled due to GDPR</street> <city>Disabled due to GDPR</city> <zipcode>Disabled due to GDPR</zipcode> <state>California</state> <country>US</country> <phone>Disabled due to GDPR</phone> <fax>Disabled due to GDPR</fax> <email>Disabled due to GDPR</email> <full_address>Disabled due to GDPR</full_address> </item3> </contacts> <domain_name>whoapi.com</domain_name> <_cached/> <requests_available>10000</requests_available> </response>
Domain availability API use case
We believe that there are still great domain names that are available for registration, you just have to look hard enough!
Massive amounts of domain availability lookups can be used for various researches, for finding domains for SEO purposes, for building a new domain checker, and for various other purposes. Some of our clients are finding great available domains for their clients, and some of our clients are looking for available domains that recently expired, but have some traffic on them.
Whatever the reason, our domain availability API can help you find those great available domains you are looking for!
Domain availability API
Let’s make an example request:
http://api.whoapi.com/?domain=whoapi.com&r=taken&apikey=demokey
Output in JSON format:
{ "status": "0", "status_desc": "Successfully processed", "taken": "1", "requests_available": 100 }
http://api.whoapi.com/?domain=whoapi.com&r=taken&apikey=demokey&asxml
Output in XML format:
<?xml version="1.0"?> <response> <status>0</status> <taken>1</taken> <requests_available>100</requests_available> <status_desc>Successfully processed</status_desc> </response>
Domain Score API use case
In case you are dealing with a lot of signups on your website, and you want to give special treatment to VIP users our Domain Score API can detect high-profile domains.
Domain Score API
Scoring is not a real-time process as we are doing multiple checks before returning the result to you. For this reason, there are 2 steps:
1. Send domain for scoring (Set task API);
2. Check the scoring state (Get result API).
These two APIs are described in detail below.
Keep in mind that making a request to “Get result API” and skipping the first step will result in an empty reply.
We provide a webhook solution if you would like to get notified when the result is ready.
More details are below.
Set Task API
Get Result API
Webhook Support
If you like to receive the processing result to your URL as soon as it’s ready add “webhook_url” parameter to the API request like this:
https://api.whoapi.com/?domain=whoapi.com&r=domainscore&apikey=yourkey&webhook_url=https://yourwebsite.com/yourscript
Our system will make POST request to the specified URL passing JSON in the request body, like this:
[{“id”:9673,”domain”:”whoapi.com”,”overall_score”:68,”temp_email_service”:false,”score_description”:”Good”}]
The body will contain Array of all domains as Objects. Object fields match API reply fields.
Webhook system supports requests resending in case your URL is not accessible (any HTTP error). In this case we will make 5 retries with the following delays: 5, 15, 30, 60, 60 minutes.
Let’s make an example request
http://api.whoapi.com/?domain=whoapi.com&r=domainscore&apikey=demokey
Output in JSON format:
{ "status": 0, "results": [ { "id": 123, "domain": "whoapi.com" } ], "requests_available": 100, "status_desc": "Successfully processed" }
http://api.whoapi.com/?domain=whoapi.com&r=domainscore&apikey=demokey&asxml
Output in XML format:
<?xml version="1.0"?> <response> <status>0</status> <results> <item0> <id>123</id> <domain>whoapi.com</domain> </item0> </results> <requests_available>100</requests_available> <status_desc>Successfully processed</status_desc> </response>
Parameters meaning
results – array of accepted entries;
id – ID of the accepted entry (used in webhook requests); domain – domain name.
http://api.whoapi.com/?domain=whoapi.com&r=domainscore-check&apikey=demokey
Output in JSON format:
nullhttp://api.whoapi.com/?domain=whoapi.com&r=domainscore-check&apikey=demokey&asxml
Output in XML format:
Parameters meaning
results – array of processed entries;
id – ID of the processed entry (same as in the initial request);
domain – domain name;
overall_score – score for the domain (higher is better);
temp_email_service – true in case this domain provides temp email services;
score_description – textual score description.
Blacklist API use case
Every day, billions of emails are sent. Not thousands. Not millions. Billions! It’s hard for any software or system to automatically or programmatically detect if a message is spam or a genuine important email message from one person to another. So there are a lot of false positives, and there are companies that get blacklisted just because of a bad neighborhood.
You know what we are talking about, email blacklists are a real issue, and our Blacklist API helps you detect that issue whether it’s an IP address or a domain name. So if you are a hosting company with hundreds of IP addresses, or a email marketing company with thousands of them, our email blacklist API can tell you when an IP or a domain name gets blacklisted by one of the major RBL blacklists.
Blacklist API
Let’s make an example request:
http://api.whoapi.com/?domain=whoapi.com&r=blacklist&apikey=demokey
Output in JSON format:
{ "status": "0", "ip": "104.130.21.170", "blacklisted": "0", "blacklists": [ { "tracker": "surbl.org", "blacklisted": "0" }, { "tracker": "barracudacentral.org", "blacklisted": "0" }, { "tracker": "sorbs.net", "blacklisted": "0" }, { "tracker": "spamhaus.org", "blacklisted": "0" } ], "requests_available": 100, "status_desc": "Successfully processed" }
http://api.whoapi.com/?domain=whoapi.com&r=blacklist&apikey=demokey&asxml
Output in XML format:
<?xml version="1.0"?> <response> <status>0</status> <ip>52.32.117.162</ip> <blacklisted>0</blacklisted> <blacklists> <item0> <tracker>surbl.org</tracker> <blacklisted>0</blacklisted> </item0> <item1> <tracker>barracudacentral.org</tracker> <blacklisted>0</blacklisted> </item1> <item2> <tracker>sorbs.net</tracker> <blacklisted>0</blacklisted> </item2> <item3> <tracker>spamhaus.org</tracker> <blacklisted>0</blacklisted> </item3> </blacklists> <requests_available>100</requests_available> <status_desc>Successfully processed</status_desc> </response>
Screenshot API use case
Have you ever been in a situation where you needed more than one pair of eyes? Looking into millions of website can be time consuming, to say the least, so why not do it programmatically? Especially if you need a website screenshot or a thumbnail!
You can tell so much just by glancing at a small thumbnail! You can see if there’s a complete website, or just ads provided by domain registrar. You can see if the colors are bright or dark. You can see if there’s a menu, or just a logo.
Screenshot API
Additional information:
All images are stored on our servers for no more than 31 days. Please download images to your server in order to keep it. You can include the resulting image urls into your website, however be adviced that in case of a huge traffic load we reserve the right to block excesive requests. Keep in mind that depending on the request and page complexity it can take a long time to process a screenshot, use high enough timeouts to get a result.
By default our API waits for all page resources (images, JavaScripts, styles) to load completely. The overall timeout for the load is 30 seconds. If the resources could not be loaded within the set timeframe the API will return an error. If you need to change this behavior you can use the “asap=true” option described above.
Let’s make an example request:
http://api.whoapi.com/?domain=whoapi.com&r=screenshot&apikey=demokey&process=thumb
Output in JSON format:
{ "status": "0", "status_desc": "Successfully processed", "full_size": "http:\/\/node1.whoapi.com\/tmp\/e0dddcfa02522f28ea79c5126a24882d.jpg", "thumbnail": "http:\/\/node1.whoapi.com\/tmp\/e0dddcfa02522f28ea79c5126a24882d_th.jpg", "expires": "2018-01-17 19:37 GMT", "size": "1366x768", "full_size_https": "https:\/\/node1.whoapi.com\/tmp\/e0dddcfa02522f28ea79c5126a24882d.jpg", "thumbnail_https": "https:\/\/node1.whoapi.com\/tmp\/e0dddcfa02522f28ea79c5126a24882d_th.jpg", "requests_available": 100 }
http://api.whoapi.com/?domain=whoapi.com&r=screenshot&apikey=demokey&process=thumb&asxml
Output in XML format:
<?xml version="1.0"?> <response> <status>0</status> <full_size>http://node1.whoapi.com/tmp/e0dddcfa02522f28ea79c5126a24882d.jpg</full_size> <thumbnail>http://node1.whoapi.com/tmp/e0dddcfa02522f28ea79c5126a24882d_th.jpg</thumbnail> <expires>2018-01-17 19:37 GMT</expires> <size>1366x768</size> <full_size_https>https://node1.whoapi.com/tmp/e0dddcfa02522f28ea79c5126a24882d.jpg</full_size_https> <thumbnail_https>https://node1.whoapi.com/tmp/e0dddcfa02522f28ea79c5126a24882d_th.jpg</thumbnail_https> <requests_available>100</requests_available> <status_desc>Successfully processed</status_desc> </response>
Parameters explained:
status – processing result, “0” means success; in case of unsuccessful processing an additional parameter “status_desc” will be added with explanation of the error;
full_size – the full size image; for process=thumb it’s size will be equal the specified resolution, if a full page processing is requested the height of the image can be higher than the set resolution;
thumbnail – the small image of the website with size set in the thumbwidth and thumbheight parameters (133×100 pixels by default);
full_size_https – the https url to the full size image; for process=thumb it’s size will be equal the specified resolution, if a full page processing is requested the height of the image can be higher than the set resolution;
thumbnail_https – the https url to the small image of the website with size set in the thumbwidth and thumbheight parameters (133×100 pixels by default);
expires – the date and time in GMT when the images will no longer be available (will be removed from our servers);
size – the full screenshot size in pixels, for example: 1920×1080 for a process=thumb and resolution=1920×1080;
requests_available – the requests left that you have in your package.
Email Score API use case
In case you are dealing with a lot of signups on your website, and you want to give special treatment to VIP users our Email Score API can detect high-profile email addresses.
Email Score API
Scoring is not a real-time process as we are doing multiple checks before returning the result to you. For this reason, there are 2 steps:
1. Send email for scoring (Set task API);
2. Check the scoring state (Get result API).
These two APIs are described in detail below. Keep in mind that making a request to “Get result API” and skipping the first step will result in an empty reply.
We provide a webhook solution if you would like to get notified when the result is ready.
More details are below.
Set Task API
Get Result API
Webhook support
If you like to receive the processing result to your URL as soon as it’s ready add “webhook_url” parameter to the API request like this:
http://api.whoapi.com/?email=noreply@whoapi.com&r=emailscore&apikey=yourkey&webhook_url=https://yourwebsite.com/yourscript
Our system will make POST request to the specified URL passing JSON in the request body, like this:
[{“id”:9673,”email”:”noreply@whoapi.com”,”overall_score”:68,”temp_email_service”:false,”score_description”:”Good”}]
The body will contain Array of all emails as Objects. Object fields match API reply fields.
Webhook system supports requests resending in case your URL is not accessible (any HTTP error). In this case we will make 5 retries with the following delays: 5, 15, 30, 60, 60 minutes.
Let’s make an example request:
http://api.whoapi.com/?email=noreply@whoapi.com&r=emailscore&apikey=demokey
Output in JSON format:
{ "status": 0, "status_desc": "Successfully processed", "results": [ { "id": 123, "email": "noreply@whoapi.com" } ], "requests_available": 100 }
http://api.whoapi.com/?email=noreply@whoapi.com&r=emailscore&apikey=demokey&asxml
Output in XML format:
<?xml version="1.0"?> <response> <status>0</status> <status_desc>Successfully processed</status_desc> <results> <item0> <id>123</id> <email>noreply@whoapi.com</email> </item0> </results> <requests_available>100</requests_available> </response>
Parameters meaning
results – array of accepted entries;
id – ID of the accepted entry (used in webhook requests);
email – email address.
http://api.whoapi.com/?email=noreply@whoapi.com&r=emailscore-check&apikey=demokey
Output in JSON format:
null
http://api.whoapi.com/?email=noreply@whoapi.com&r=emailscore-check&apikey=demokey&asxml
Output in XML format:
Parameters meaning
results – array of processed entries;
id – ID of the processed entry (same as in the initial request);
email – email address;
overall_score – score for the email (higher is better);
temp_email_service – true in case this address is provided by temp email service;
score_description – textual score description.
SSL API use case
Online security is becoming tremendously important every single passing day. If commerce and businesses are going online, we can’t transfer the locks and alarm systems they have in their brick and mortar stores. We have to create new technologies that do that.
With our SSL API you can check the certificates of any domain name in the world and see it’s expiry date. Either offer your clients the installation of a certificate, or alert them in time when it’s time to renew or switch to another provider!
SSL API
Let’s make an example request:
http://api.whoapi.com/?domain=whoapi.com&r=cert&apikey=demokey
Output in JSON format:
{ "status": "0", "status_desc": "Successfully processed", "certondomain": true, "category": "Private Organization", "organization": "WhoAPI Inc.", "street": "444 Castro Street", "city": "Mountain View", "state": "California", "postalcode": "94041", "country": "US", "other": "US", "issuer": "COMODO CA Limited", "date_issued": "2015-01-09 00:00:00", "date_expires": "2016-01-09 23:59:59", "requests_available": 100 }
http://api.whoapi.com/?domain=whoapi.com&r=cert&apikey=demokey&asxml
Output in XML format:
<?xml version="1.0"?> <response> <status>0</status> <status_desc>Successfully processed</status_desc> <certondomain>1</certondomain> <category>Private Organization</category> <organization>WhoAPI Inc.</organization> <street>444 Castro street</street> <city>Mountain View</city> <state>California</state> <postalcode>94041</postalcode> <country>US</country> <other> <item0>US</item0> <item1>Delaware</item1> </other> <issuer>COMODO CA Limited</issuer> <date_issued>2017-02-01 00:00:00</date_issued> <date_expires>2018-04-02 23:59:59</date_expires> <requests_available>100</requests_available> </response>