selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

who-dat logo

Self-host who-dat

v2.0.0

WHOIS and RDAP domain lookup API with normalized JSON output

ReleaseOpen SourceMIT
Updatedlast week
LanguageGo
Setup difficultyEasy
Stars
323
Port
8080 (HTTP API and web interface)
Docker
lissy93/who-dat
Install with Docker
who-dat web interface showing WHOIS lookup results

What is who-dat?

who-dat is a free and open-source domain lookup service that queries RDAP first and falls back to WHOIS, returning normalized JSON for any domain. It discovers the correct RDAP server per TLD via IANA bootstrap, parses nested jCard contact data, and provides a single consistent API response. The service includes a lightweight web interface built with Alpine.js, API documentation, health check endpoint, in-memory caching, optional rate limiting, and optional API key authentication. It can be self-hosted via Docker (lissy93/who-dat), pre-built binaries for multiple architectures, 1-click Vercel deployment, or built from source with Go. The public demo runs at who-dat.as93.net.

Should you self-host who-dat?

who-dat scores 53/100 on selfhost.directory (how scoring works) and ranks #19 of 41 in DNS. It has 323 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is easy: most people get it running in one sitting. An official Docker image is available. It is MIT-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is Pi-hole (87/100, 61 522 stars). It scores higher overall, so compare the two before you pick. See who-dat vs Pi-hole side by side.

Features

  • API Key Authentication
  • Bulk Domain Lookup
  • DNSSEC Information
  • Health check endpoint
  • IANA Bootstrap Discovery
  • In-memory caching
  • jCard Contact Parsing
  • No CORS Restrictions
  • Normalized JSON Output
  • Rate Limiting
  • Raw Response Option
  • RDAP Lookup
  • Web Interface
  • Whois Lookup

who-dat README

How to install who-dat

Install who-dat with Docker

Docker
Environment variables
AUTH_KEY, ENABLE_CACHE, CACHE_TTL_SECONDS, RATE_PER_MINUTE, RATE_BURST, API_KEYS, LOOKUP_TIMEOUT_SECONDS, MAX_DOMAINS

docker run -p 8080:8080 --dns 8.8.8.8 --dns 8.8.4.4 lissy93/who-dat

Requires Docker; uses Google DNS for reliable upstream queries

How to configure who-dat

  • API_KEYSComma-separated list of API keys exempt from rate limiting

    Comma-separated list of API keys exempt from rate limiting

    values: comma-separated strings

  • AUTH_KEYEnable API authentication; all requests must include this key in Authorization header

    Enable API authentication; all requests must include this key in Authorization header

    values: any string

  • CACHE_TTL_SECONDS3600Time-to-live for cached lookup results in seconds

    Time-to-live for cached lookup results in seconds

    values: any positive integer

  • CDN_CACHE_SWR_SECONDS86400CDN Cache-Control stale-while-revalidate for Vercel deployments

    CDN Cache-Control stale-while-revalidate for Vercel deployments

    values: any positive integer

  • CDN_CACHE_TTL_SECONDS3600CDN Cache-Control max-age for Vercel deployments

    CDN Cache-Control max-age for Vercel deployments

    values: any positive integer

  • ENABLE_CACHEtrueEnable or disable in-memory caching of lookups

    Enable or disable in-memory caching of lookups

    values: true, false

  • LOOKUP_TIMEOUT_SECONDS5Timeout for upstream RDAP/WHOIS lookups in seconds

    Timeout for upstream RDAP/WHOIS lookups in seconds

    values: any positive integer

  • MAX_DOMAINS10Maximum domains allowed in a single /multi request

    Maximum domains allowed in a single /multi request

    values: any positive integer

  • RATE_BURST10Burst allowance for rate limiting

    Burst allowance for rate limiting

    values: any positive integer

  • RATE_PER_MINUTE0Rate limit requests per minute per IP (0 to disable)

    Rate limit requests per minute per IP (0 to disable)

    values: any non-negative integer

More in DNS

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…