IP2WHOIS WHOIS Lookup API helps users to obtain domain information, WHOIS record, by using a domain name. The WHOIS API returns a comprehensive WHOIS data such as creation date, updated date, expiration date, domain age, the contact information of the registrant, mailing address, phone number, email address, nameservers the domain is using and much more. IP2WHOIS supports the query for 1113 TLDs and 634 ccTLDs.
Note: IP2WHOIS Free API allows you to query up to 500 WHOIS domain name per month.


GET https://api.ip2whois.com/v2

Request Parameter

Parameter Description
key (required) WHOIS lookup API license key.
domain (required) Domain name.
format (optional) Returns the API response in json (default) or xml format. Valid values: json | xml

Response Parameter

Parameter Description
domain Domain name.
domain_id Domain name ID.
status Domain name status.
create_date Domain name creation date.
update_date Domain name updated date.
expire_date Domain name expiration date.
domain_age Domain name age in day(s).
whois_server WHOIS server name.
registrar_iana_id Registrar IANA ID.
registrar_name Registrar name.
registrar_url Registrar URL.
registrant_name Registrant name.
registrant_organization Registrant organization.
registrant_street_address Registrant street address.
registrant_city Registrant city.
registrant_region Registrant region.
registrant_zip_code Registrant ZIP Code.
registrant_country Registrant country.
registrant_phone Registrant phone number.
registrant_fax Registrant fax number.
registrant_email Registrant email address.
admin_name Admin name.
admin_organization Admin organization.
admin_street_address Admin street address.
admin_city Admin city.
admin_region Admin region.
admin_zip_code Admin ZIP Code.
admin_country Admin country.
admin_phone Admin phone number.
admin_fax Admin fax number.
admin_email Admin email address.
tech_name Tech name.
tech_organization Tech organization.
tech_street_address Tech street address.
tech_city Tech city.
tech_region Tech region.
tech_zip_code Tech ZIP Code.
tech_country Tech country.
tech_phone Tech phone number.
tech_fax Tech fax number.
tech_email Tech email address.
billing_name Billing name.
billing_organization Billing organization.
billing_street_address Billing street address.
billing_city Billing city.
billing_region Billing region.
billing_zip_code Billing ZIP Code.
billing_country Billing country.
billing_phone Billing phone number.
billing_fax Billing fax number.
billing_email Billing email address.
name_servers Name servers
GET /v2
curl "https://api.ip2whois.com/v2?key={your_license_key}&domain={domain_name}"

Sample codes for other languages

    "domain": "greendot.com",
    "domain_id": "600750_DOMAIN_COM-VRSN",
    "status": "registered",
    "create_date": "1997-11-03T00:00:00Z",
    "update_date": "2019-10-29T01:25:57Z",
    "expire_date": "2021-11-02T05:00:00Z",
    "domain_age": 8103,
    "whois_server": "whois.corporatedomains.com",
    "registrar": {
        "iana_id": "299",
        "name": "CSC CORPORATE DOMAINS, INC.",
        "url": "www.cscprotectsbrands.com"
    "registrant": {
        "name": "Admin Role",
        "organization": "Green Dot Corporation",
        "street_address": "",
        "city": "Pasadena",
        "region": "CA",
        "zip_code": "91107",
        "country": "US",
        "phone": "+1.8664120548",
        "fax": "+1.8664120548",
        "email": "adminrole@greendotcorp.com"
    "admin": {
        "name": "Admin Role",
        "organization": "Green Dot Corporation",
        "street_address": "",
        "city": "Pasadena",
        "region": "CA",
        "zip_code": "91107",
        "country": "US",
        "phone": "+1.8664120548",
        "fax": "+1.8664120548",
        "email": "adminrole@greendotcorp.com"
    "tech": {
        "name": "Admin Role",
        "organization": "Green Dot Corporation",
        "street_address": "",
        "city": "Pasadena",
        "region": "CA",
        "zip_code": "91107",
        "country": "US",
        "phone": "+1.8664120548",
        "fax": "+1.8664120548",
        "email": "adminrole@greendotcorp.com"
    "billing": {
        "name": "",
        "organization": "",
        "street_address": "",
        "city": "",
        "region": "",
        "zip_code": "",
        "country": "",
        "phone": "",
        "fax": "",
        "email": ""
    "nameservers": "ns1.greendotdns.com, ns2.greendotdns.com"


You may use our official SDK to assist you in code implementation

WHOIS lookup Sample Code

$apiKey = 'Enter_License_Key';
$params['domain'] = 'Enter_Domain_Name';
$params['format'] = 'json';

$query = '';

foreach($params as $key=>$value){
    $query .= '&' . $key . '=' . rawurlencode($value);

$result = file_get_contents('https://api.ip2whois.com/v2?key=' . $apiKey . $query);

$data = json_decode($result);

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Hashtable;
import java.util.Map;

public class test {
    public static void main(String[] args) {
        try {
            String key = "Enter_License_Key";
            Hashtable<String, String> data = new Hashtable<String, String>();
            data.put("domain", "Enter_Domain_Name");
            data.put("format", "json");
            String datastr = "";
            for (Map.Entry<String,String> entry : data.entrySet()) {
                datastr += "&" + entry.getKey() + "=" + URLEncoder.encode(entry.getValue(), "UTF-8");
            URL url = new URL("https://api.ip2whois.com/v2?key=" + key + datastr);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("Accept", "application/json");
            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
            BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
            String output;
            while ((output = br.readLine()) != null) {
        catch (MalformedURLException e) {
        catch (IOException e) {
Imports System.Net
Imports System.IO
Imports System.Uri

Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim request As HttpWebRequest = Nothing
        Dim response As HttpWebResponse = Nothing

        Dim apiKey As String = "Enter_License_Key"
        Dim data As New Dictionary(Of String, String)

        data.Add("domain", "Enter_Domain_Name")
        data.Add("format", "json")
        Dim datastr As String = String.Join("&", data.[Select](Function(x) x.Key & "=" & EscapeDataString(x.Value)).ToArray())

        request = Net.WebRequest.Create("https://api.ip2whois.com/v2?key=" & apiKey & "&" & datastr)

        request.Method = "GET"
        response = request.GetResponse()

        Dim reader As System.IO.StreamReader = New IO.StreamReader(response.GetResponseStream())


    End Sub

End Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Net;
using System.IO;

namespace WebApplication1
    public partial class _Default : System.Web.UI.Page
        protected void Page_Load(object sender, EventArgs e)
            WebRequest request = null;
            WebResponse response = null;

            string apiKey = "Enter_License_Key";
            Dictionary<string, string> data = new Dictionary<string, string>();

            data.Add("domain", "Enter_Domain_Name");
            data.Add("format", "json");
            string datastr = string.Join("&", data.Select(x => x.Key + "=" + System.Uri.EscapeDataString(x.Value)).ToArray());

            request = System.Net.WebRequest.Create("https://api.ip2whois.com/v2?key=" + apiKey + "&" + datastr);

            request.Method = "GET";
            response = request.GetResponse();

            System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream());

import urllib.parse, http.client

p = { 'key': 'Enter_License_Key', 'domain': 'Enter_Domain_Name', 'format': 'json' }

conn = http.client.HTTPSConnection("api.ip2whois.com")
conn.request("GET", "/v2?" + urllib.parse.urlencode(p))
res = conn.getresponse()
print res.read()
require 'uri'
require 'net/http'

uri = URI.parse("https://api.ip2whois.com/v2")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
  'key' => 'Enter_License_Key',
  'domain' => 'Enter_Domain_Name',
  'format' => 'json'

response = http.request(request)

if response == nil
  return false
  return response
var https = require('https');
let data = {
    key: 'Enter_License_Key',
    domain: 'Enter_Domain_Name',
    format: 'json',

let urlStr = 'https://api.ip2whois.com/v2?';

Object.keys(data).forEach(function (key, index) {
    if (this[key] != '') {
        urlStr += key + '=' + encodeURIComponent(this[key]) + '&';
}, data);

urlStr = urlStr.substring(0, urlStr.length - 1);

let d = '';
let req = https.get(urlStr, function (res) {
    res.on('data', (chunk) => (d = d + chunk));
    res.on('end', function () {

req.on('error', function (e) {

Error Codes

error_code error_message
10000 Missing parameter.
10001 API key not found.
10002 API key disabled.
10003 API key expired.
10004 Insufficient credits.
10005 Unknown error.
10006 No data found.
10007 Invalid domain.
10008 Invalid format.
Error Object Response
    "error": {
        "error_code": 10000,
        "error_message": "Missing parameter."

Try WHOIS Domain REST API to lookup domain information for FREE.