Skip to content
Private preview: new accounts are by invitation only. Ask for one

Show a domain's DNS history

GET/v1/domain/{domain}/history

A domain's current A/AAAA state, with staleness, and its answer intervals, oldest first. Covers popular registered domains; a new or long-tail domain is usually empty. Each page counts one request.

Authorization

APIKey
AuthorizationBearer <token>

Your API key, which starts with sk_. Create one in the console.

In: header

Path Parameters

domain*string

A hostname such as example.com. It is lowercased, a trailing dot is dropped and Unicode labels are punycoded.

Query Parameters

limit?integer

Items per page, 1 to 1000. Free keys get at most 100 a page; a larger limit is lowered and next_cursor continues.

Range1 <= value <= 1000
Default100
cursor?|

The previous page's next_cursor, unchanged. Omit it for the first page.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl "https://api.ipalmanac.com/v1/domain/example.com/history" \  -H "Authorization: Bearer $IPALMANAC_API_KEY"
{  "domain": "alpha.example",  "observed": true,  "current": [    {      "record_type": "A",      "outcome": "positive",      "outcome_class": "positive",      "values": [        "54.10.20.30"      ],      "cnames": [],      "last_observed": "2026-10-06T01:40:00+00:00",      "last_confirmed": "2026-10-06T01:40:00+00:00",      "last_positive": "2026-10-06T01:40:00+00:00",      "age_seconds": 3600,      "stale": false,      "stale_reason": null    },    {      "record_type": "AAAA",      "outcome": "timeout",      "outcome_class": "transient",      "values": [        "2600:1f18::10"      ],      "cnames": [],      "last_observed": "2026-10-06T01:40:00+00:00",      "last_confirmed": "2026-10-05T01:40:00+00:00",      "last_positive": "2026-10-05T01:40:00+00:00",      "age_seconds": 90000,      "stale": true,      "stale_reason": "transient_failure"    }  ],  "intervals": [    {      "record_type": "A",      "value": "54.10.20.30",      "first_observed": "2026-10-01T03:10:00+00:00",      "last_confirmed": "2026-10-06T01:40:00+00:00",      "ended_at": null,      "current": true    },    {      "record_type": "AAAA",      "value": "2600:1f18::10",      "first_observed": "2026-10-01T03:10:00+00:00",      "last_confirmed": "2026-10-05T01:40:00+00:00",      "ended_at": null,      "current": true    }  ],  "next_cursor": null,  "coverage": {    "observation_window": {      "first": "2026-10-01T00:00:00+00:00",      "last": "2026-10-06T01:55:00+00:00"    },    "vantage_count": 1,    "record_types": [      "A",      "AAAA"    ],    "seed": {      "source": "Majestic Million",      "names": 1000000    },    "ptr": {      "checked_ips": 87000,      "observed_ips": 588000    },    "semantics": [      "Coverage is the seed list, not the whole Internet. Empty means unobserved here, not absent.",      "is_datacenter and is_cdn are true only when the IP is inside a published provider range of that category; null means no range matched, not that the IP is not hosted.",      "provider and prefix come only from cloud, hosting and CDN ranges. A range of any other category in provider_ranges describes how the IP is used, not who hosts it."    ]  },  "attribution": [    {      "source": "Majestic Million",      "by": "Majestic",      "license": "CC BY 3.0"    },    {      "source": "IPtoASN",      "by": "Frank Denis",      "license": "PDDL 1.0"    }  ],  "release": {    "id": "20261006T020000Z",    "built_at": "2026-10-06T02:00:00+00:00"  }}