Bulk Whois Lookup Service API DocumentationBulk Whois Lookups for large lists of domains

Whois Lookup API Commands and Endpoint Details

Bulk Whois Lookups for large lists of domains

General Information

Cost per use 1 credits
Concurrent Connections 5
If you need bulk data please use the website, it will be much faster.
Input Item Type domain

API Endpoint

Use POST to send the data to servya.


Input Variables

Variable Name Input Details
apikey Your unique API Key. If you don't have one, please first get an API Key.
job_type whois_lookup
job_input This is the domain that you want to submit

Output Variables

Variable Description
domain The input domain for whois record
result This is the full whois text as returned by the whois server

Output Examples

{"domain":"domainhuntergatherer.com","result":" Domain Name: DOMAINHUNTERGATHERER.COM\r\n Registry Domain ID: 1887632842_DOMAIN_COM-VRSN\r\n Registrar WHOIS Server: whois.namesilo.com\r\n Registrar URL: http:\/\/www.namesilo.com\r\n Updated Date: 2023-11-29T08:21:53Z\r\n Creation Date: 2014-11-28T14:40:26Z\r\n Registry Expiry Date: 2024-11-28T14:40:26Z\r\n Registrar: NameSilo, LLC\r\n Registrar IANA ID: 1479\r\n Registrar Abuse Contact Email: abuse@namesilo.com\r\n Registrar Abuse Contact Phone: +1.4805240066\r\n Domain Status: clientTransferProhibited https:\/\/icann.org\/epp#clientTransferProhibited\r\n Name Server: NS1.DNSOWL.COM\r\n Name Server: NS2.DNSOWL.COM\r\n Name Server: NS3.DNSOWL.COM\r\n DNSSEC: unsigned\r\n URL of the ICANN Whois Inaccuracy Complaint Form: https:\/\/www.icann.org\/wicf\/\r\n>>> Last update of whois database: 2024-06-30T22:09:56Z <<<\r\n\r\nFor more information on Whois status codes, please visit https:\/\/icann.org\/epp\r\n\r\nNOTICE: The expiration date displayed in this record is the date the\r\nregistrar's sponsorship of the domain name registration in the registry is\r\ncurrently set to expire. This date does not necessarily reflect the expiration\r\ndate of the domain name registrant's agreement with the sponsoring\r\nregistrar. Users may consult the sponsoring registrar's Whois database to\r\nview the registrar's reported date of expiration for this registration.\r\n\r\nTERMS OF USE: You are not authorized to access or query our Whois\r\ndatabase through the use of electronic processes that are high-volume and\r\nautomated except as reasonably necessary to register domain names or\r\nmodify existing registrations; the Data in VeriSign Global Registry\r\nServices' (\"VeriSign\") Whois database is provided by VeriSign for\r\ninformation purposes only, and to assist persons in obtaining information\r\nabout or related to a domain name registration record. VeriSign does not\r\nguarantee its accuracy. By submitting a Whois query, you agree to abide\r\nby the following terms of use: You agree that you may use this Data only\r\nfor lawful purposes and that under no circumstances will you use this Data\r\nto: (1) allow, enable, or otherwise support the transmission of mass\r\nunsolicited, commercial advertising or solicitations via e-mail, telephone,\r\nor facsimile; or (2) enable high volume, automated, electronic processes\r\nthat apply to VeriSign (or its computer systems). The compilation,\r\nrepackaging, dissemination or other use of this Data is expressly\r\nprohibited without the prior written consent of VeriSign. You agree not to\r\nuse electronic processes that are automated and high-volume to access or\r\nquery the Whois database except as reasonably necessary to register\r\ndomain names or modify existing registrations. VeriSign reserves the right\r\nto restrict your access to the Whois database in its sole discretion to ensure\r\noperational stability. VeriSign may restrict or terminate your access to the\r\nWhois database for failure to abide by these terms of use. VeriSign\r\nreserves the right to modify these terms at any time.\r\n\r\nThe Registry database contains ONLY .COM, .NET, .EDU domains and\r\nRegistrars.\r\n"}

Servya API Instructions for Developers

To start testing your implementation and the provided code examples you will first need to acquire an API key.

When you have your API key you will want to visit the documentation for the individual tools to get the API endpoints, inputs, outputs and examples.

We have code examples in lots of popular languages but if you need some help in a different language you can get in touch for some advice.

The API uses simple HTTP post requests and JSON to keep the process of interacting with the API and handling the data returned as simple as possible.

See the list of tools on this page for a direct link to the documentation for the tools.

We have code examples for 6 major programming languages below to aid the integration with your platform.

How to use the API for End Users

Integrating Servya into a supported tool is really simple!

You will first need to get an API key for Servya and then copy it into your software.

From our side, that is all you need to do. Your software should now be able to use the data from our tools.

Servya API Code Examples

Below you'll find code examples in various programming languages. These examples demonstrate how to interact with our API, making it easier for you to integrate our services into your applications. Simply click on the headers to view the code in your preferred language and see how you can quickly get started.

//Input Variables
$api_key = "!! THIS IS YOUR API KEY !!"; 
$job_input = "example.com";

$apiUrl = "https://api.servya.com/process_job.php";

$data = array(
    'apikey' => $api_key,
    'job_type' => 'whois_lookup',
    'job_input' => $job_input

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
if ($response === FALSE) {
    die('Error: ' . curl_error($ch));

$data = json_decode($response, true);

// Output API response
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
    private static readonly HttpClient client = new HttpClient();

    static async Task Main()
		// Input Variables
		string api_key = "!! THIS IS YOUR API KEY !!";
		string domain = "example.com";

		var values = new Dictionary
			{ "apikey", api_key },
			{ "job_type", "whois_lookup" },
			{ "job_input", domain }

		var content = new FormUrlEncodedContent(values);
		var response = await client.PostAsync("https://api.servya.com/process_job.php", content);
		var responseString = await response.Content.ReadAsStringAsync();

		dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject(responseString);

		// Output response data to console
import requests

# Fill in your API Key from the website
# This is the domain to check
domain = 'example.com'

api_url = 'https://api.servya.com/process_job.php'
data = {
    'apikey': api_key,
    'job_type': 'whois_lookup',
    'job_input': domain

response = requests.post(api_url, data=data)
data = response.json()

# output the data
const https = require('https');
const querystring = require('querystring');

const postData = querystring.stringify({
  'apikey': 'your_api_key',
  'job_type': 'whois_lookup',
  'job_input': 'example.com'

const options = {
  hostname: 'api.servya.com',
  port: 443,
  path: '/process_job.php',
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': postData.length

const req = https.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;

  res.on('end', () => {
    const parsedData = JSON.parse(data);

req.on('error', (e) => {
  console.error(`Problem with request: ${e.message}`);

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://api.servya.com/process_job.php")
request = Net::HTTP::Post.new(uri)
  "apikey" => "your_api_key",
  "job_type" => "whois_lookup",
  "job_input" => "example.com"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|

data = JSON.parse(response.body)
puts data
package main

import (

func main() {
	apiUrl := "https://api.servya.com/process_job.php"
	data := url.Values{}
	data.Set("apikey", "!! THIS IS YOUR API KEY !!")
	data.Set("job_type", "whois_lookup")
	data.Set("job_input", "example.com")

	req, err := http.NewRequest("POST", apiUrl, strings.NewReader(data.Encode()))
	if err != nil {
		fmt.Println("Error creating request:", err)
	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
	req.Header.Set("Content-Length", fmt.Sprint(len(data.Encode())))

	client := &http.Client{}
	response, err := client.Do(req)
	if err != nil {
		fmt.Println("Error making request:", err)
	defer response.Body.Close()

	buf := new(bytes.Buffer)
	fmt.Println("Response:", buf.String())
$page_title logger