> For the complete documentation index see https://domscan.net/llms.txt. Markdown versions of every docs page are available by appending .md to the page URL.

Source: https://domscan.net/it/docs/dns-history

# Cronologia DNS

API DomScan: Consulta i valori DNS, con granularità giornaliera, osservati da precedenti query DomScan riuscite.

Consulta i valori DNS, con granularità giornaliera, osservati da precedenti query DomScan riuscite. Questa copertura beta non è un archivio DNS passivo dell’intera Internet.

GET /v1/dns/history Crediti: 3

#### Parametri di query

| Parametro | Tipo | obbligatorio |
| --- | --- | --- |
| domain | string | obbligatorio |
| type | string | facoltativo |
| from | string | facoltativo |
| to | string | facoltativo |
| limit | integer Predefinito `100` | facoltativo |
| cursor | string | facoltativo |

#### Campi della risposta

| Campo | Tipo |
| --- | --- |
| `has_more` | boolean |
| `next_cursor` | string \| null |
| `domain` | string |
| `history[]` | object[] |
| `history[]` | object |
| `history[].date` | string |
| `history[].record_type` | string |
| `history[].changes[]` | object[] |
| `history[].changes[]` | object |
| `history[].changes[].action` | string |
| `history[].changes[].value` | string |
| `history[].changes[].ttl` | integer \| null |
| `current_records` | object |
| `first_seen` | string \| null |
| `last_seen` | string \| null |
| `total_changes` | integer |
| `record_types_tracked[]` | string[] |
| `beta_notice` | string |
| `meta` | object |
| `meta.note` | string |
| `meta.data_source` | string |
| `meta.history_limit` | integer |
| `meta.history_rows_evaluated` | integer |
| `meta.history_rows_truncated` | boolean |
| `meta.removal_confirmation_days` | integer |
| `meta.current_records_scope` | string |

#### Richiesta di esempio

```bash
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/dns/history?domain=example.com&type=A&from=2026-01-01&to=2026-04-15&limit=10"
```

```javascript
const response = await fetch("https://domscan.net/v1/dns/history?domain=example.com&type=A&from=2026-01-01&to=2026-04-15&limit=10", {
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);
```

```python
import os
import requests

response = requests.get(
    "https://domscan.net/v1/dns/history?domain=example.com&type=A&from=2026-01-01&to=2026-04-15&limit=10",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())
```

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/dns/history?domain=example.com&type=A&from=2026-01-01&to=2026-04-15&limit=10", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status, string(data))
}
```

```ruby
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/dns/history?domain=example.com&type=A&from=2026-01-01&to=2026-04-15&limit=10")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))
```

#### Risposta di esempio

```json
{
  "domain": "example.com",
  "history": [
    {
      "date": "2026-04-13",
      "record_type": "A",
      "changes": [
        {
          "action": "added",
          "value": "104.20.23.154"
        },
        {
          "action": "added",
          "value": "172.66.147.243"
        },
        {
          "action": "removed",
          "value": "104.18.26.120"
        }
      ]
    }
  ],
  "current_records": {
    "A": [
      "104.20.23.154",
      "172.66.147.243"
    ]
  },
  "first_seen": "2026-01-01",
  "last_seen": "2026-04-13",
  "total_changes": 3,
  "record_types_tracked": [
    "A"
  ],
  "beta_notice": "Beta observation log. Coverage comes only from successful DomScan DNS lookups. Dates are day-level, changes between lookups can be missed, and no external passive DNS sources are included.",
  "meta": {
    "note": "Lookup-driven DomScan observations only. Dates are day-level, gaps can miss changes, and no external passive DNS sources are included.",
    "data_source": "internal",
    "history_limit": 100,
    "history_rows_evaluated": 3,
    "history_rows_truncated": false,
    "removal_confirmation_days": 2,
    "current_records_scope": "all_stored_current_records"
  }
}
```

#### Codici di stato HTTP

- `200` OK
- `400` Richiesta non valida
- `401` Non autorizzato
- `402` Pagamento richiesto
- `429` Troppe richieste
