---
title: "Paginated scan history for one domain, newest first"
method: GET
path: "/domains/{id}/scan"
---

# Paginated scan history for one domain, newest first

`GET /domains/{id}/scan`

## Request

- Base URL: `https://www.domainlab.app/api/v1`
- URL: `https://www.domainlab.app/api/v1/domains/{id}/scan`
- Auth: HTTP bearer

## Path parameters

- `id` integer, required

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

Paginated scans

- object
  - `scans` Scan[]
    - `id` integer
    - `checked_at` string, date-time
    - `registrar` string, nullable
    - `expiration_date` string, date-time, nullable
    - `creation_date` string, date-time, nullable
    - `updated_date` string, date-time, nullable
    - `domain_status` string, nullable: Registry EPP status codes, normalized (sorted, lowercase), or "available"
    - `site_status` 'available' | 'parked' | 'for-sale' | 'dead' | 'active' | 'null', nullable: Web-layer status computed each scan; null when classification was unavailable
    - `ssl_issuer` string, nullable
    - `ssl_valid_from` string, date-time, nullable
    - `ssl_valid_to` string, date-time, nullable
    - `ssl_cipher` string, nullable
    - `ssl_protocol` string, nullable
    - `subject` string, nullable
    - `serial_number` string, nullable
    - `fingerprint` string, nullable
    - `security_score` integer, nullable
    - `nameservers` string, nullable
    - `error` string, nullable: Non-null when this scan failed
    - `dns_records` DnsRecord[]
      - `id` integer
      - `record_type` string: A, AAAA, CNAME, MX, TXT, or NS
      - `name` string
      - `value` string
      - `ttl` integer, nullable
      - `priority` integer, nullable: MX priority
  - `total` integer
  - `limit` integer
  - `offset` integer

## Other responses

- `401`: Missing or invalid API key
- `403`: Account lacks API access (no active subscription or trial)
- `404`: Not found or not owned by this account
- `429`: Rate limit or monthly quota exceeded. Respect the Retry-After header. code is RATE_LIMITED (short-lived) or MONTHLY_QUOTA_EXCEEDED (resets next period).

---

[API](https://skmtc.dev/domainlab/apis/domain-lab-api.md) · [All operations](https://skmtc.dev/domainlab/apis/domain-lab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domainlab/apis/domain-lab-api/revisions/5dade951c661?raw)
