Get WHOIS information using PHP

13 min read

In this tutorial, we will be using PHP API to get the WHOIS records and ownership details of any domain name, like owner name, email address, country, creation, last updated, expiration, location of both registrar and domain in the JSON format.

What is WHOIS ?

WHOIS is a query and response protocol that is widely used for querying databases that store the registered users or assignees of an Internet resource, such as a domain name, an IP address block or an autonomous system.

We will be using API from whoisfreaks.com that provides well-parsed and structured domain WHOIS data for all domain names, registrars and countries.

We can easily fetch the WHOIS information with a simple get request to the following API endpoint :

https://api.whoisfreaks.com/v1.0/whois?apiKey={API_KEY}&whois=live&domainName={DOMAIN_NAME}

where

API_KEY => get your own key from here whoisfreaks.com
DOMAIN_NAME => domain name we want to query (like google.com)

Follow this video for complete guidance :

 

 

First, we will create a form to input the name of domain :

<form action="" method="get">
    <input type="text" name="domain" class="form-control" placeholder="abc.com" required>
</form>

Now, we can call the API from PHP as :

$api = "https://api.whoisfreaks.com/v1.0/whois?apiKey=".$api_key."&whois=live&domainName=".$domain;
$response = file_get_contents($api);

The following is the complete working source code to query the WHOIS information of a specific domain name :

Note : Just replace {YOUR_API_KEY} with your actual API Key provided by whoisfreaks.com

<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.1/css/bootstrap.min.css">

<style type="text/css">
    body{
        background: #eee;
    }
    .font-light{
        color: #757575;
    }
</style>

<div class="container mt-5">
    <div class="row d-flex align-items-centers justify-content-center">
        <div class="col-6">
            <div class="card mb-3">
                <div class="card-header">
                    Whois Data
                </div>
                <div class="card-body">
                    <form action="" method="get">
                        <input type="text" name="domain" class="form-control" placeholder="abc.com" required>
                    </form>
                </div>
            </div>
        </div>
    </div>




<hr>

<?php 

$api_key = {YOUR_API_KEY};

if(isset($_GET['domain']) && $_GET['domain']!=''){
    $domain = $_GET['domain'];
    if(file_exists($domain)){
        $api = $domain;
        $response = file_get_contents($api);
    }else{
        $api = "https://api.whoisfreaks.com/v1.0/whois?apiKey=".$api_key."&whois=live&domainName=".$domain;
        $response = file_get_contents($api);
        file_put_contents($domain, $response);
    }
    $response = json_decode($response);
    if(isset($response->status) && $response->status){?>
        <h3 class="text-center m-4"><?php echo $response->domain_name;?></h3>
        
        <div class="row">
            <div class="col-6">
                <div class="card mb-3">
                    <div class="card-header">
                        <h4>Domain Information</h4>
                    </div>
                    <div class="card-body">
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Domain :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->domain_name;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Registrar :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->domain_registrar->registrar_name;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Registered On :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->create_date;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Expires On :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->expiry_date;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Updated On :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->update_date;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Status :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo implode('<br>', $response->domain_status);?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Name Servers :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo implode('<br>',$response->name_servers);?></p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="col-6">
                <div class="card mb-3">
                    <div class="card-header">
                        <h4>Registrant Contact</h4>
                    </div>
                    <div class="card-body">
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Name :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->registrant_contact->name;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Organization :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->registrant_contact->company;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Street :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->registrant_contact->street;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>City :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->registrant_contact->city;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>State :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->registrant_contact->state;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Postal Code :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->registrant_contact->zip_code;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Country :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->registrant_contact->country_code;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Phone :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->registrant_contact->phone;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Fax :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo @$response->registrant_contact->fax;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Email :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->registrant_contact->email_address;?></p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="col-6">
                <div class="card mb-3">
                    <div class="card-header">
                        <h4>Administrative Contact</h4>
                    </div>
                    <div class="card-body">
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Name :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->administrative_contact->name;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Organization :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->administrative_contact->company;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Street :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->administrative_contact->street;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>City :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->administrative_contact->city;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>State :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->administrative_contact->state;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Postal Code :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->administrative_contact->zip_code;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Country :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->administrative_contact->country_code;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Phone :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->administrative_contact->phone;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Fax :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo @$response->administrative_contact->fax;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Email :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->administrative_contact->email_address;?></p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="col-6">
                <div class="card mb-3">
                    <div class="card-header">
                        <h4>Technical Contact</h4>
                    </div>
                    <div class="card-body">
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Name :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->technical_contact->name;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Organization :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->technical_contact->company;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Street :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->technical_contact->street;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>City :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->technical_contact->city;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>State :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->technical_contact->state;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Postal Code :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->technical_contact->zip_code;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Country :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->technical_contact->country_code;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Phone :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->technical_contact->phone;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Fax :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo @$response->technical_contact->fax;?></p>
                            </div>
                        </div>
                        <div class="row">
                            <div class="col-4 font-light">
                                <p>Email :</p>
                            </div>
                            <div class="col-8">
                                <p><?php echo $response->technical_contact->email_address;?></p>
                            </div>
                        </div>
                    </div>
                </div>                
            </div>

            <div class="col-12">
                <div class="card mb-3">
                    <div class="card-header">
                        <h4>Raw Whois Data</h4>
                    </div>
                    <div class="card-body">
                        <p><?php echo nl2br($response->registry_data->whois_raw_registery);?></p>
                    </div>
                </div>
                
            </div>

        </div>
    <?php } else{
        echo '<h3>'.$domain.' : Domain Not Available</h3>';
    }
}

?>



</div>

 

Recommended For You

About the Author: Admin