> 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/es/docs/dns-history

# Historial de DNS

API de DomScan: Consulta valores DNS, con precisión de día, observados en consultas anteriores de DomScan que se completaron correctamente.

Consulta valores DNS, con precisión de día, observados en consultas anteriores de DomScan que se completaron correctamente. Esta cobertura beta no es un archivo de DNS pasivo de todo Internet.

GET /v1/dns/history Créditos: 3

#### Parámetros de consulta

| Parámetro | Tipo | obligatorio |
| --- | --- | --- |
| domain | string | obligatorio |
| type | string | opcional |
| from | string | opcional |
| to | string | opcional |
| limit | integer Predeterminado `100` | opcional |
| cursor | string | opcional |

#### Campos de respuesta

| 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 |

#### Solicitud de ejemplo

```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))
```

#### Respuesta de ejemplo

```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"
  }
}
```

#### Códigos de estado HTTP

- `200` OK
- `400` Solicitud incorrecta
- `401` No autorizado
- `402` Pago requerido
- `429` Demasiadas solicitudes
