# how.is Domain Change History

> how.is Domain Change History is a paid API for AI agents from how.is, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-31).

Returns the full zone-file change history for a domain: when it appeared, disappeared, reappeared, and changed nameservers, from daily gTLD and .com/.net zone file scans.

## Facts

- Endpoint: POST https://how.is/v1/domain/changes?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-31
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/how-is-domain-change-history-561d6ed0
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_pa1tFBWmAo4EYYDao-g_G

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability how-is-domain-change-history-561d6ed0 -d '<json body>'
```

Example prompt: Check the zone-file change history for suspicious-login-page.com — I want to know when it first appeared, whether it has changed nameservers recently, and whether it looks brand new, which might indicate phishing.

## When to prefer this

Use this endpoint when you need historical DNS zone-file evidence about a domain's lifecycle — especially to detect phishing (brand-new domain), hijacking (sudden nameserver change), or dropped-and-reregistered domains. Prefer this over WHOIS-age tools when you need event-level granularity (appeared/disappeared/ns_changed), multi-year timelines, or evidence that a nameserver move occurred on a specific date. Not suitable for subdomains or most ccTLDs.

## Known failure modes

- Domain is a subdomain or ccTLD — zone files only cover gTLDs and .com/.net, so the response will note no data is available
- Domain has never appeared in any scanned zone file — returns empty events and in_zone_now false
- Domain string is malformed or exceeds 253 characters — returns a validation error
- Payment failure via x402 — call is rejected before processing
- Zone file coverage gap — events before daily coverage started may be missing, flagged by first_seen_is_coverage_start

## How this service works

Check when a domain appeared in the registry zone file, left it, came back or changed nameservers, from daily gTLD and .com/.net zone files. A sudden nameserver move signals a hijack or sale; a brand-new name signals phishing.

## Output

Returns a JSON object with: current zone presence (in_zone_now), first and last seen dates, whether first_seen is the start of coverage, current nameservers, a chronological list of events (appeared, disappeared, reappeared, ns_changed) each with dates and before/after nameserver values, a flag for changes in the last 30 days, and coverage metadata showing how far back daily zone file scans go.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "domain": {
   "type": "string",
   "maxLength": 253,
   "description": "A registered name directly under a TLD, e.g. example.com (zone files list no subdomains; ccTLDs publish none)"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "_shape": "data: in_zone_now, first_seen, first_seen_is_coverage_start, last_seen, current_ns, events[{type: appeared|disappeared|reappeared|ns_changed, dates, from, to, message}], changed_last_30_days, coverage{daily_since, first_zone_file, runs}, ns_runs, note."
  },
  "result": "Domain change history for the requested subject",
  "receipt": {
   "rail": "x402",
   "tool": "changes",
   "charge_usd": 0.01,
   "settlement_tx": "0x…"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/how-is-domain-change-history-561d6ed0/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from how.is](https://www.zero.xyz/host/how.is/llms.txt)
