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
| Endpoint | Purpose |
|---|---|
GET /api/v1/domains | Paginated 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/changes | Daily added/removed. Query: date (YYYY-MM-DD), limit (max 500). |
GET /api/v1/stats/daily | History totals. Query: from, to. Rows are snake_case (observed_on, domain_count, …); newest first (default up to 120, max 365). |
GET /api/v1/runs/latest | Latest scraper run metadata. |
GET /api/v1/openapi.json | OpenAPI 3 document (no API key). |
Errors
| Status | Meaning |
|---|---|
400 | Invalid query ({ "error": "…" }). |
401 | Missing or invalid API key. |
404 | Domain not found (detail only). |
429 | Rate limited; body includes retryAfterSeconds and Retry-After header. |
503 | API 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"