DN.EE

Private API

API documentation

Machine JSON for .ee domain search, detail (including zone age), daily changes, and history. Public pages stay open; these endpoints require an API key.

Base URL: https://dn.ee · OpenAPI 3 JSON

Authentication

Send your key as x-api-key or Authorization: Bearer <key>. Keys are hashed server-side; you receive the plaintext value only once.

curl -H "x-api-key: $KEY" https://dn.ee/api/v1/runs/latest

Authenticated limit: 120 requests/minute per key. Missing or invalid keys are rate-limited by IP and return 401.

Domain age

GET /api/v1/domains/{name} returns firstSeen, lastSeen, and ageDays — whole UTC calendar days since the domain was first observed in the zone archive. That is zone observation age, not a guarantee of registration date.

Prefer registration age from the latest non-null whois[].registered_at when WHOIS snapshots exist. WHOIS coverage is best-effort (rolling scan); many domains still return whois: []. In that case fall back to ageDays / firstSeen as zone observation age — do not invent a registration date.

curl -H "x-api-key: $KEY" https://dn.ee/api/v1/domains/example.ee
# data.ageDays          ← zone age in days (use when whois is empty)
# data.firstSeen        ← first zone observation date (YYYY-MM-DD)
# data.whois[0].registered_at  ← registration timestamp when scanned

Request access

API access is granted manually. Contact the site operator to request a key (include your project name, expected request volume, and intended use).

Endpoints

EndpointPurpose
GET /api/v1/domainsPaginated search. Query: query, cursor, limit (max 100), status (current|historical), kind, length, registrar. Response: { data, nextCursor }.
GET /api/v1/domains/[name]Detail with ageDays, camelCase legacyEvents, snake_case whois snapshots.
GET /api/v1/changesDaily added/removed. Query: date (YYYY-MM-DD), limit (max 500).
GET /api/v1/stats/dailyHistory totals. Query: from, to. Rows are snake_case (observed_on, domain_count, …); newest first (default up to 120, max 365).
GET /api/v1/runs/latestLatest scraper run metadata.
GET /api/v1/openapi.jsonOpenAPI 3 document (no API key).

Errors

StatusMeaning
400Invalid query ({ "error": "…" }).
401Missing or invalid API key.
404Domain not found (detail only).
429Rate limited; body includes retryAfterSeconds and Retry-After header.
503API keys not configured on the server.

More examples

# Search
curl -H "x-api-key: $KEY" "https://dn.ee/api/v1/domains?query=host&limit=20"

# Daily changes
curl -H "x-api-key: $KEY" "https://dn.ee/api/v1/changes?date=2026-11-01"

# History range
curl -H "x-api-key: $KEY" "https://dn.ee/api/v1/stats/daily?from=2026-01-01&to=2026-11-01"