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

# سجل DNS

باستخدام DomScan API، راجع قيم DNS على مستوى اليوم التي رصدتها عمليات بحث DomScan الناجحة السابقة.

راجع قيم DNS على مستوى اليوم التي رصدتها عمليات بحث DomScan الناجحة السابقة. تغطية الإصدار التجريبي ليست أرشيف DNS سلبيًا يشمل الإنترنت كله.

GET /v1/dns/history الرصيد: 3

#### معاملات الاستعلام

| المعامل | النوع | مطلوب |
| --- | --- | --- |
| domain | string | مطلوب |
| type | string | اختياري |
| from | string | اختياري |
| to | string | اختياري |
| limit | integer الافتراضي `100` | اختياري |
| cursor | string | اختياري |

#### حقول الرد

| الحقل | النوع |
| --- | --- |
| `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 |

#### طلب مثال

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

#### مثال الرد

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

#### رموز حالة HTTP

- `200` OK
- `400` طلب غير صالح
- `401` غير مصرح
- `402` الدفع مطلوب
- `429` طلبات كثيرة جداً
