Domain WHOIS snapshot history
package main
import ( "fmt" "net/http" "io")
func main() {
url := "https://api.dazrik.net/whois/domain-history?target=example.com&page=1&limit=20"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.dazrik.net/whois/domain-history?target=example.com&page=1&limit=20")) .method("GET", HttpRequest.BodyPublishers.noBody()) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder() .url("https://api.dazrik.net/whois/domain-history?target=example.com&page=1&limit=20") .get() .build();
Response response = client.newCall(request).execute();import axios from 'axios';
const options = { method: 'GET', url: 'https://api.dazrik.net/whois/domain-history', params: {target: 'example.com', page: '1', limit: '20'}};
try { const { data } = await axios.request(options); console.log(data);} catch (error) { console.error(error);}const url = 'https://api.dazrik.net/whois/domain-history?target=example.com&page=1&limit=20';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}use reqwest;
#[tokio::main]pub async fn main() { let url = "https://api.dazrik.net/whois/domain-history";
let querystring = [ ("target", "example.com"), ("page", "1"), ("limit", "20"), ];
let client = reqwest::Client::new(); let response = client.get(url) .query(&querystring) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request GET \ --url 'https://api.dazrik.net/whois/domain-history?target=example.com&page=1&limit=20'Returns stored WHOIS snapshots for a domain, newest first. Every /whois domain lookup records a snapshot, and a new one is kept only when the canonical data changed since the previous snapshot.
Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Domain/hostname to fetch history for. Reduced to its registrable domain.
Example
example.com1-based page number. Defaults to 1.
Example
1Snapshots per page (1-100). Defaults to 20.
Example
20Responses
Section titled “Responses”A page of domain snapshots
object
The registrable domain the history was looked up for.
Total snapshots stored for this domain across all pages.
Number of snapshots returned on this page.
The current page number.
Total number of pages available.
Snapshots for this page, newest first.
A single stored WHOIS snapshot with the canonical domain data as it was at capture time, including the capture timestamp.
object
When this snapshot was recorded.
Example
{ "ok": true, "query": "example.com", "total": 3, "snapshotCount": 3, "page": 1, "pages": 1, "snapshots": [ { "domainName": "EXAMPLE.COM", "domainStatus": [ "clientTransferProhibited" ], "dnssec": "signedDelegation", "capturedAt": "2026-07-06T00:42:46.526Z" } ]}Headers
Section titled “Headers”IETF-draft combined rate-limit header for the current window: limit, remaining, and reset (seconds until the window resets). Sent on every response from a known endpoint.
Example
limit=60, remaining=59, reset=42Maximum requests allowed per client IP per window (60 requests per 60s).
Example
60Requests remaining in the current window before the limit is hit.
Example
59Seconds until the current window resets.
Example
42Missing or invalid parameter
Error response.
object
Example
{ "ok": false, "msg": "query param target is required"}Headers
Section titled “Headers”IETF-draft combined rate-limit header for the current window: limit, remaining, and reset (seconds until the window resets). Sent on every response from a known endpoint.
Example
limit=60, remaining=59, reset=42Maximum requests allowed per client IP per window (60 requests per 60s).
Example
60Requests remaining in the current window before the limit is hit.
Example
59Seconds until the current window resets.
Example
42Rate limit exceeded: either the per-client request limit (60 requests per minute) or, for endpoints that connect to the target, the per-destination outbound connection limit.
Error response.
object
Example
{ "ok": false, "msg": "you're being rate limited, try again later."}Headers
Section titled “Headers”IETF-draft combined rate-limit header for the current window: limit, remaining, and reset (seconds until the window resets). Sent on every response from a known endpoint.
Example
limit=60, remaining=59, reset=42Maximum requests allowed per client IP per window (60 requests per 60s).
Example
60Requests remaining in the current window before the limit is hit.
Example
59Seconds until the current window resets.
Example
42Seconds to wait before retrying. Sent only on a 429 response.
Example
42