WHOIS API
Redis-cached
TLD enriched
Batch: 50

Who owns the domain?And when does it expire?

Registrar, creation date, expiration date, authoritative name servers, and raw WHOIS — for one domain or a batch of 50. TLD-aware enrichment for country-code, generic, and government domains.

50 · per batchRedis · cachedTLD · enrichmentRaw · payload included

Why WHOIS API

Domain intel, structured.

Registration Dates
ISO 8601 creation and expiration dates so you can wire up renewal alerts without parsing raw WHOIS.
Name Servers
Authoritative NS list returned as a clean array — ready to drop into a monitor or audit log.
TLD Enrichment
Each result tags the TLD as generic, country-code, government, or infrastructure — with country/region for ccTLDs.
Redis Caching
Repeat lookups within the cache window are near-instant. Response includes a fromCache flag for transparency.
Raw Payload Included
Need the original WHOIS string? It's in the `raw` field — parse it your own way if our shape isn't enough.
Batch up to 50
Pass an array of domains; get an array back. Invalid items don't fail the whole call.

/api/v1/whois

Endpoints, at a glance.

One POST route handles single + batch. GET routes for health and metrics, same as the rest of the catalog.

POST/whois/lookup
Domain lookup
Send `domain` as a string (single) or an array (batch ≤50). Returns registrar, dates, NS, TLD metadata, and raw WHOIS.
PRIMARY
GET/whois/health
Service health
Status, version, and Redis cache availability.
GET/whois/metrics
Prometheus metrics
Lookup counters by source/TLD, durations, cache hit/miss rates.
ParameterTypeRequiredDescription
domainstring | arrayyesDomain name (e.g. "example.com") or array of up to 50 domains.

Requests & responses.

Send one domain, get an object. Send an array, get an array — with the same shape per item.

Single domain
Full record + raw WHOIS payload.
POST https://datpaq.com/api/v1/whois/lookup
Content-Type: application/json

{
  "domain": "example.com"
}
Batch (≤50)
Cache hits + TLD enrichment + per-item errors all in one shot.
POST https://datpaq.com/api/v1/whois/lookup
Content-Type: application/json

{
  "domain": [
    "example.com",
    "google.com",
    "github.io"
  ]
}
Health
https://datpaq.com/api/v1/whois/health
Metrics
https://datpaq.com/api/v1/whois/metrics

Error reference

Predictable errors, always structured.

Per-item failures inside a batch surface as error fields on the offending entries — the rest of the batch still returns.

400Missing Domain
Required domain field not provided. Pass `domain` as a string or array of strings.
400Invalid Domain Format
Value is not a valid domain. Must look like "example.com" — protocol/path are stripped if present.
400Batch Size Exceeded
More than 50 domains in a single batch. Split into smaller batches.
401Unauthorized
API key missing or invalid. Pass as Authorization: Bearer header or x-api-key.
404No WHOIS Match
Domain not found in any WHOIS registry. Returned per-item in batch responses.
500Upstream Error
WHOIS server unreachable or returned malformed data. CorrelationId helps with debugging.
Example per-item error in batch
{
  "domain": "invalid-domain",
  "error": "Invalid domain format"
}

FAQ

API questions developers ask first.

How do I authenticate with this API?

Create an API key in your Datpaq dashboard and send it with each request as a bearer token in the Authorization header.

Is there a free tier?

Yes. Datpaq APIs include a free tier for building, testing, and small production workloads before you move to a paid plan.

What format do requests and responses use?

Datpaq APIs use REST over HTTPS and return JSON by default. Endpoint docs show the supported methods, query parameters, request bodies, and response fields.

Where can I see limits and errors?

Each API documents rate limits, validation rules, and error responses in the landing page and API docs so integrations can retry and fail cleanly.

Domain intel, ready for your pipeline.

Registrar, expiration dates, name servers, and TLD context in one structured response. Cache hits are near-instant.