API 2.0 docs API 1.0 docs

Our Hosted Whois Web Service provides registration details, also known as Whois Records, of domain names or IP addresses.

WhoisXmlApi.com provides RESTful APIs. It is designed for server-to-server communication between your system and the WhoisXmlApi.com network using HTTPs protocol. Query responses are delivered in either XML or JSON format based on your requests which are made via GET/POST methods.

To get started you need a developer's account with WhoisXmlApi.com. Authentication is required each time in order to use the API. The first 500 Whois API calls are complimentary when you register for a free developer account.

Making requests

GEThttps://www.whoisxmlapi.com/whoisserver/WhoisService?apiKey=YOUR_API_KEY&domainName=google.com

It takes up to 2 minutes to activate your account after Sign Up.

Input parameters: required

apiKey
Get your personal API KEY on My products page.
domainName
The domain for which whois data is requested.

Input parameters: optional

outputFormat
Response output format.

Acceptable values: XML | JSON

Default: XML
preferFresh
1 results in getting the latest Whois record even if it's incomplete.

Acceptable values: 0 | 1

Default: 0
da
1 results in a quick check on domain availability, 2 is slower but more accurate. Results are returned under WhoisRecord → domainAvailability (AVAILABLE | UNAVAILABLE | UNDETERMINED).

Acceptable values: 0 | 1 | 2

Default: 0
ip
1 results in returning ips for the domain name.

Acceptable values: 0 | 1

Default: 0
ipWhois
1 results in returning the whois record for the hosting ip if the whois record for the domain is not supported. For unsupported tlds domain NameServers are returned, if the ipWhois flag is activated, a whois record for the hosting ip is added to the result.

Acceptable values: 0 | 1

Default: 0
checkProxyData
1 results in fetching proxy/whois guard data, if it exists,
in the WhoisRecord → privateWhoisProxy schema element.

Acceptable values: 0 | 1

Default: 0
thinWhois
1 results in returning whois data from registry only, without fetching data from registrar. Returned registry data corresponds to the WhoisRecord → registryData schema element.

Acceptable values: 0 | 1

Default: 0
callback
A javascript function used when outputFormat is JSON;
this is an implementation known as JSONP which invokes the callback on the returned response.
_parse
1 provides parsing for input whois raw texts described below.

Acceptable values: 0 | 1

Default: 0
registryRawText
A string representing the registry whois raw text to be parsed;
works only when the _parse parameter is equal to 1.
registrarRawText
A string representing the registrar whois raw text to be parsed;
works only when the _parse parameter is equal to 1.

Free access

After Sign Up you automatically get a free subscription plan limited to 500 queries.

Account balance information

GEThttps://www.whoisxmlapi.com/accountServices.php?servicetype=accountbalance&apiKey=YOUR_API_KEY

You will receive a response with your account balance.

servicetype
Required. Type of service. In this case, "accountBalance".
apiKey
Required. Get your personal API KEY on My products page.
output_format
Optional. Response output format.

Acceptable values: XML | JSON

Default: XML

Error handling

Error information containing the error code and text description is returned in the following format.

JSON
XML
                        {
  "ErrorMessage": {
    "errorCode": "WHOIS_01",
    "msg": "The parameter domainName is missing."
  }
}
                    
                        <ErrorMessage>
    <errorCode>WHOIS_01</errorCode>
    <msg>The parameter domainName is missing.</msg>
</ErrorMessage>
                    

Sample output

JSON
XML
                        {
  "WhoisRecord": {
    "createdDate": "1997-09-15T00:00:00-0700",
    "updatedDate": "2018-02-21T10:45:07-0800",
    "expiresDate": "2020-09-13T21:00:00-0700",
    "registrant": {
      "organization": "Google LLC",
      "state": "CA",
      "country": "UNITED STATES",
      "countryCode": "US",
      "rawText": "Registrant Organization: Google LLC [...]"
    },
    "administrativeContact": {
      "organization": "Google LLC",
      "state": "CA",
      "country": "UNITED STATES",
      "countryCode": "US",
      "rawText": "Admin Organization: Google LLC [...]"
    },
    "technicalContact": {
      "organization": "Google LLC",
      "state": "CA",
      "country": "UNITED STATES",
      "countryCode": "US",
      "rawText": "Tech Organization: Google LLC [...]"
    },
    "domainName": "google.com",
    "nameServers": {
      "rawText": "ns2.google.com ns3.google.com ns1.google.com ns4.google.com",
      "hostNames": [
        "ns2.google.com",
        "ns3.google.com",
        "ns1.google.com",
        "ns4.google.com"
      ],
      "ips": []
    },
    "status": "clientUpdateProhibited [...]",
    "rawText": "Domain Name: google.com [...]",
    "parseCode": 3579,
    "header": "",
    "strippedText": "Domain Name: google.com [...]",
    "footer": "",
    "audit": {
      "createdDate": "2018-10-23 15:33:41.000 UTC",
      "updatedDate": "2018-10-23 15:33:41.000 UTC"
    },
    "customField1Name": "RegistrarContactEmail",
    "customField1Value": "abusecomplaints@markmonitor.com",
    "registrarName": "MarkMonitor, Inc.",
    "registrarIANAID": "292",
    "whoisServer": "whois.markmonitor.com",
    "createdDateNormalized": "1997-09-15 07:00:00 UTC",
    "updatedDateNormalized": "2018-02-21 18:45:07 UTC",
    "expiresDateNormalized": "2020-09-14 04:00:00 UTC",
    "customField2Name": "RegistrarContactPhone",
    "customField3Name": "RegistrarURL",
    "customField2Value": "+1.2083895740",
    "customField3Value": "http://www.markmonitor.com",
    "registryData": {
      "createdDate": "1997-09-15T04:00:00Z",
      "updatedDate": "2018-02-21T18:36:40Z",
      "expiresDate": "2020-09-14T04:00:00Z",
      "domainName": "google.com",
      "nameServers": {
        "rawText": "NS1.GOOGLE.COM NS2.GOOGLE.COM NS3.GOOGLE.COM NS4.GOOGLE.COM",
        "hostNames": [
          "NS1.GOOGLE.COM",
          "NS2.GOOGLE.COM",
          "NS3.GOOGLE.COM",
          "NS4.GOOGLE.COM"
        ],
        "ips": []
      },
      "status": "clientDeleteProhibited [...]",
      "rawText": "Domain Name: GOOGLE.COM [...]",
      "parseCode": 251,
      "header": "",
      "strippedText": "Domain Name: GOOGLE.COM [...]",
      "footer": "",
      "audit": {
        "createdDate": "2018-10-23 15:33:40.000 UTC",
        "updatedDate": "2018-10-23 15:33:40.000 UTC"
      },
      "customField1Name": "RegistrarContactEmail",
      "customField1Value": "abusecomplaints@markmonitor.com",
      "registrarName": "MarkMonitor Inc.",
      "registrarIANAID": "292",
      "createdDateNormalized": "1997-09-15 04:00:00 UTC",
      "updatedDateNormalized": "2018-02-21 18:36:40 UTC",
      "expiresDateNormalized": "2020-09-14 04:00:00 UTC",
      "customField2Name": "RegistrarContactPhone",
      "customField3Name": "RegistrarURL",
      "customField2Value": "+1.2083895740",
      "customField3Value": "http://www.markmonitor.com",
      "whoisServer": "whois.markmonitor.com"
    },
    "domainAvailability": "UNAVAILABLE",
    "contactEmail": "abusecomplaints@markmonitor.com",
    "domainNameExt": ".com",
    "estimatedDomainAge": 7708,
    "ips": [
      "172.217.11.174"
    ]
  }
}
                    
                        <WhoisRecord>
    <createdDate>1997-09-15T00:00:00-0700</createdDate>
    <updatedDate>2018-02-21T10:45:07-0800</updatedDate>
    <expiresDate>2020-09-13T21:00:00-0700</expiresDate>
    <registrant>
        <organization>Google LLC</organization>
        <state>CA</state>
        <country>UNITED STATES</country>
        <countryCode>US</countryCode>
        <rawText>Registrant Organization: Google LLC [...]</rawText>
    </registrant>
    <administrativeContact>
        <organization>Google LLC</organization>
        <state>CA</state>
        <country>UNITED STATES</country>
        <countryCode>US</countryCode>
        <rawText>Admin Organization: Google LLC [...]</rawText>
    </administrativeContact>
    <technicalContact>
        <organization>Google LLC</organization>
        <state>CA</state>
        <country>UNITED STATES</country>
        <countryCode>US</countryCode>
        <rawText>Tech Organization: Google LLC [...]</rawText>
    </technicalContact>
    <domainName>google.com</domainName>
    <nameServers>
        <rawText>
            ns2.google.com ns3.google.com ns1.google.com ns4.google.com
        </rawText>
        <hostNames>
            <Address>ns2.google.com</Address>
            <Address>ns3.google.com</Address>
            <Address>ns1.google.com</Address>
            <Address>ns4.google.com</Address>
        </hostNames>
        <ips/>
    </nameServers>
    <status>
        clientUpdateProhibited clientTransferProhibited clientDeleteProhibited
        serverUpdateProhibited serverTransferProhibited serverDeleteProhibited
    </status>
    <rawText>Domain Name: google.com [...]</rawText>
    <parseCode>3579</parseCode>
    <header/>
    <strippedText>Domain Name: google.com [...]</strippedText>
    <footer/>
    <audit>
        <createdDate>2018-10-23 15:33:41.000 UTC</createdDate>
        <updatedDate>2018-10-23 15:33:41.000 UTC</updatedDate>
    </audit>
    <customField1Name>RegistrarContactEmail</customField1Name>
    <customField1Value>abusecomplaints@markmonitor.com</customField1Value>
    <registrarName>MarkMonitor, Inc.</registrarName>
    <registrarIANAID>292</registrarIANAID>
    <whoisServer>whois.markmonitor.com</whoisServer>
    <createdDateNormalized>1997-09-15 07:00:00 UTC</createdDateNormalized>
    <updatedDateNormalized>2018-02-21 18:45:07 UTC</updatedDateNormalized>
    <expiresDateNormalized>2020-09-14 04:00:00 UTC</expiresDateNormalized>
    <customField2Name>RegistrarContactPhone</customField2Name>
    <customField3Name>RegistrarURL</customField3Name>
    <customField2Value>+1.2083895740</customField2Value>
    <customField3Value>http://www.markmonitor.com</customField3Value>
    <registryData>
        <createdDate>1997-09-15T04:00:00Z</createdDate>
        <updatedDate>2018-02-21T18:36:40Z</updatedDate>
        <expiresDate>2020-09-14T04:00:00Z</expiresDate>
        <domainName>google.com</domainName>
        <nameServers>
            <rawText>
                NS1.GOOGLE.COM NS2.GOOGLE.COM NS3.GOOGLE.COM NS4.GOOGLE.COM
            </rawText>
            <hostNames>
                <Address>NS1.GOOGLE.COM</Address>
                <Address>NS2.GOOGLE.COM</Address>
                <Address>NS3.GOOGLE.COM</Address>
                <Address>NS4.GOOGLE.COM</Address>
            </hostNames>
            <ips/>
        </nameServers>
        <status>
            clientDeleteProhibited clientTransferProhibited
            clientUpdateProhibited serverDeleteProhibited
            serverTransferProhibited serverUpdateProhibited
        </status>
        <rawText>Domain Name: GOOGLE.COM [...]</rawText>
        <parseCode>251</parseCode>
        <header/>
        <strippedText>Domain Name: GOOGLE.COM [...]</strippedText>
        <footer/>
        <audit>
            <createdDate>2018-10-23 15:33:40.000 UTC</createdDate>
            <updatedDate>2018-10-23 15:33:40.000 UTC</updatedDate>
        </audit>
        <customField1Name>RegistrarContactEmail</customField1Name>
        <customField1Value>abusecomplaints@markmonitor.com</customField1Value>
        <registrarName>MarkMonitor Inc.</registrarName>
        <registrarIANAID>292</registrarIANAID>
        <createdDateNormalized>1997-09-15 04:00:00 UTC</createdDateNormalized>
        <updatedDateNormalized>2018-02-21 18:36:40 UTC</updatedDateNormalized>
        <expiresDateNormalized>2020-09-14 04:00:00 UTC</expiresDateNormalized>
        <customField2Name>RegistrarContactPhone</customField2Name>
        <customField3Name>RegistrarURL</customField3Name>
        <customField2Value>+1.2083895740</customField2Value>
        <customField3Value>http://www.markmonitor.com</customField3Value>
        <whoisServer>whois.markmonitor.com</whoisServer>
    </registryData>
    <domainAvailability>UNAVAILABLE</domainAvailability>
    <contactEmail>abusecomplaints@markmonitor.com</contactEmail>
    <domainNameExt>.com</domainNameExt>
    <estimatedDomainAge>7708</estimatedDomainAge>
    <ips>
        <string>216.58.219.14</string>
    </ips>
</WhoisRecord>
                    

Usage limits and requests throttling

The maximum number of requests per second is 50. In case that the limit is breached, your subsequent requests will be rejected until the next second.

JSON
XML
                        {
  "ErrorMessage": {
    "errorCode": "AUTHENTICATE_06",
    "msg": "You are limited to 50 queries per second. The request is rejected."
  }
}
                    
                        <ErrorMessage>
    <errorCode>AUTHENTICATE_06</errorCode>
    <msg>You are limited to 50 queries per second. The request is rejected.</msg>
</ErrorMessage>
                    

TLDs supported

We support thousands of TLDs, both gTLDs and ccTLDS. You can see the entire list here.

Account balance low or zero notification

When your account balance falls below certain level you will receive an email alert. Another email will be sent when your account balance reaches 0.

You can always change your notifications settings on the Settings - Notifications page.

You can always check your account balance on the My products page.

Output schema

                            {
  "WhoisRecord": {
    "createdDate": "Date",
    "updatedDate": "Date",
    "expiresDate": "Date",
    "registrant": {
      "name": "String",
      "organization": "String",
      "street1": "String",
      "city": "String",
      "state": "String",
      "postalCode": "String",
      "country": "String",
      "countryCode": "String",
      "email": "String",
      "telephone": "String",
      "fax": "String",
      "rawText": "String"
    },
    "administrativeContact": {
      "name": "String",
      "organization": "String",
      "street1": "String",
      "city": "String",
      "state": "String",
      "postalCode": "String",
      "country": "String",
      "countryCode": "String",
      "email": "String",
      "telephone": "String",
      "fax": "String",
      "rawText": "String"
    },
    "domainName": "String",
    "nameServers": {
      "rawText": "String",
      "hostNames": "String",
      "ips": "String"
    },
    "status": "String",
    "rawText": "String",
    "parseCode": "String",
    "header": "String",
    "strippedText": "String",
    "audit": {
      "createdDate": {
        "@class": "String",
        "$": "Date"
      },
      "updatedDate": {
        "@class": "String",
        "$": "Date"
      }
    },
    "customField1Name": "String",
    "customField1Value": "String",
    "registrarName": "String",
    "registrarIANAID": "Number",
    "customField2Name": "String",
    "customField3Name": "String",
    "customField2Value": "String",
    "customField3Value": "String",
    "registryData": {
      "createdDate": "String",
      "updatedDate": "String",
      "expiresDate": "String",
      "domainName": "String",
      "nameServers": {
        "rawText": "String",
        "hostNames": "Array",
        "ips": "Array"
      },
      "status": "String",
      "rawText": "String",
      "parseCode": "String",
      "header": "String",
      "strippedText": "String",
      "footer": "String",
      "audit": {
        "createdDate": {
          "@class": "String",
          "$": "Date"
        },
        "updatedDate": {
          "@class": "String",
          "$": "Date"
        }
      },
      "registrarName": "String",
      "registrarIANAID": "Number",
      "createdDateNormalized": "Date",
      "updatedDateNormalized": "Date",
      "expiresDateNormalized": "Date",
      "whoisServer": "String",
      "referralURL": "Date"
    },
    "contactEmail": "Date",
    "domainNameExt": "Date",
    "estimatedDomainAge": "Number"
  }
}
                        

Output XML schema

Printable guide

You can also download the PDF version of this guide.

API status

You can check the API's current performance and availability status on the API Status Page.

Try WHOIS API for free

Have questions?
support@whoisxmlapi.com
We will get back to you within a day.
WHOIS API, Inc.

California
USA

Contact us