---
title: "List all monitored domains with their latest scan snapshot"
method: GET
path: "/domains"
---

# List all monitored domains with their latest scan snapshot

`GET /domains`

## Request

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

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

Paginated domain list

- object
  - `domains` DomainSummary[]
    - `id` integer
    - `domain_name` string
    - `notification_enabled` boolean
    - `monitoring_enabled` boolean
    - `frequency_interval` 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'quarterly' | 'biannually' | 'annually'
    - `last_checked_at` string, date-time, nullable
    - `created_at` string, date-time
    - `registrar` string, nullable
    - `ssl_issuer` string, nullable
    - `ssl_valid_to` string, date-time, nullable
    - `security_score` integer, nullable
    - `nameservers` string, nullable: Comma-separated nameserver hostnames
    - `days_until_domain_expires` integer, nullable: Negative means already expired
    - `days_until_ssl_expires` integer, nullable: Negative means already expired
    - `has_error` boolean: True when the most recent scan failed
  - `total` integer
  - `limit` integer
  - `offset` integer

## Other responses

- `401`: Missing or invalid API key
- `403`: Account lacks API access (no active subscription or trial)
- `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)
