Domain WHOIS Information Lookup API Integration Guide

Look up registration dates, registrar details, and nameservers for domain research and renewal reviews.

Try the live demoView API details →

Domain WHOIS Information Lookup API Integration Guide

Look up available registration dates, registrar details, nameservers, and domain status for research, renewal reviews, and domain inventory workflows. Some records are incomplete or privacy-redacted. A missing field does not prove that a domain is available to register, and a contact record does not verify current ownership.

Start here: Try the live demo or view the current API details.

API details

Item Value
API name Domain WHOIS Information Lookup
Category Website Tools APIs
Method GET
Endpoint https://api.gugudata.io/v1/websitetools/whois
Content type query parameters
Demo endpoint https://api.gugudata.io/v1/websitetools/whois/demo
Detail page https://gugudata.io/details/whois
OpenAPI JSON https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json

When to use this API

  • Look up domain registration data.
  • Support domain research and ownership review workflows.
  • Enrich domain intelligence tools.

Request parameters

This endpoint accepts parameters through the query string. Keep appkey out of client-side public code and send it only from trusted server-side environments.

Parameter Type Required Default Description
appkey string Yes - Application key supplied in the query string.
domain string Yes - Domain name such as example.com, not a URL or IP address. Maximum 253 characters; each label is at most 63 characters. Leading and trailing whitespace is removed and letters are lowercased.

Example request

curl -G "https://api.gugudata.io/v1/websitetools/whois" \
  --data-urlencode "appkey=YOUR_APPKEY" \
  --data-urlencode "domain=example.com"

Response fields

Successful responses contain a registration object in data. Date fields are arrays because a record can contain multiple dates. Values depend on the available registration record; handle missing, null, and empty values without inventing data.

Field Type Required Description
dataStatus.requestParameter string Yes Normalized request parameters echoed by the service. Sensitive credentials are omitted when available.
dataStatus.statusCode integer Yes Application-level status code returned by the API response.
dataStatus.status string Yes Application-level status enum returned by the API response.
dataStatus.statusDescription string Yes Application-level status message returned by the API response.
dataStatus.responseDateTime string Yes Response timestamp returned by the API response.
dataStatus.dataTotalCount integer Yes Total number of records that match the request.
data.domain_name array<string> Yes Domain name(s) found in WHOIS record
data.registrar string Yes Domain registrar information
data.creation_date array<string> Yes Domain creation date(s)
data.expiration_date array<string> Yes Domain expiration date(s)
data.updated_date array<string> Yes Domain last update date(s)
data.name_servers array<string> Yes Domain nameservers
data.status array<string> Yes Domain status information
data.org string No Organization name
data.country string No Country code
data.emails array<string> No Contact email addresses
data.dnssec string No DNSSEC status
data.name array<string> No Available contact names
data.address array<string> No Available contact addresses
data.city array<string> No Available contact cities
data.state string No Available state or region
data.registrant_postal_code string No Available postal code
data.referral_url string No Registration referral URL

Response example

The following illustrates the field types, not a current registration snapshot. Partial records can succeed; a completely empty lookup is not a successful record.

{
  "dataStatus": {
    "statusCode": 200,
    "statusDescription": "successfully",
    "responseDateTime": "2026-04-10T00:00:00Z",
    "dataTotalCount": 1,
    "status": "SUCCESS",
    "requestParameter": "domain=example.com"
  },
  "data": {
    "domain_name": ["EXAMPLE.COM"],
    "registrar": "Example Registrar",
    "creation_date": ["1995-08-14T04:00:00+00:00"],
    "expiration_date": [],
    "updated_date": [],
    "name_servers": [],
    "status": [],
    "org": "",
    "country": "",
    "emails": [],
    "dnssec": "",
    "name": [],
    "address": [],
    "city": [],
    "state": "",
    "registrant_postal_code": "",
    "referral_url": ""
  }
}

HTTP status codes

Use the HTTP status code for transport-level handling. If the response body contains dataStatus.statusCode, treat it as an application-level status field in the JSON payload.

HTTP status Meaning Recommended handling
200 Request processed successfully. Parse the documented response body for the endpoint result.
400 Invalid request parameters or request format. Check required fields, data types, and request body format.
401 Missing or unknown application key. Send a valid appkey with the request.
403 The application key is recognized but access is not allowed. Check subscription, trial state, and endpoint access.
429 Request rate or trial usage limit exceeded. Reduce concurrency or retry after the limit window resets.
500 Internal service error. Retry later or contact support if the error persists.
503 Registration information is temporarily unavailable. Do not treat this as an available domain or an empty successful record. Try again later.

Implementation notes

  • Validate required parameters before sending the request so 400 responses are easier to diagnose.
  • Keep server-side retries conservative for 429, 500, and 503 responses.
  • Cache stable metadata responses when your use case allows it, especially for lookup and directory endpoints.
  • Log the HTTP status code and dataStatus.statusDescription together for easier debugging.
  • Use the demo endpoint for a quick connectivity check, then switch to the authenticated endpoint for production data.

FAQ

Where is the official API detail page?

The official detail page is https://gugudata.io/details/whois. It is the best place to review the latest public endpoint information before publishing or integrating.

Should I handle dataStatus.statusCode as the HTTP status code?

No. Use the HTTP status code for request-level behavior such as authentication, permission, rate limiting, and server errors. Use dataStatus.statusCode only as the response body status field when it is present.

Can I use the demo endpoint in production?

No. The demo endpoint is for quick testing and examples. Use the authenticated endpoint with your appkey for production workflows.

For more developer APIs, visit GuGuData.