# List registered domains (https://developer.godaddy.com/en/docs/references/rest/domains/v3/list-domains)

---
title: List registered domains
description: >-
  Returns a paginated collection of domain names owned by the authenticated
  account.
full: true
---

Full description

Returns a paginated collection of domain names owned by the authenticated account. Supports filtering by statuses or lifecycleGroups (mutually exclusive; supplying both returns 400). An unrecognized status or lifecycle group value also returns 400.

## GET /domain-names

List registered domains

Returns a paginated collection of domain names owned by the authenticated account. Supports filtering by statuses or lifecycleGroups (mutually exclusive; supplying both returns 400). An unrecognized status or lifecycle group value also returns 400.

### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `pageToken` | string | no | Opaque cursor from the links[rel=next or rel=prev] href of the previous page. When present, the response begins immediately after the item that produced the token. Omit to start from the beginning of the collection. |
| `pageTokenDirection` | string | no | Optional token direction when `pageToken` is set; ignored otherwise. |
| `pageSize` | integer | no | Maximum number of domains in the response. Defaults to 100 when omitted. Offset-based "page" parameter is not supported, only cursor-based "pageToken". |
| `statuses` | array | no | Filter results to domains with one or more lifecycle statuses. Supply multiple values as a single comma-separated list, e.g. `?statuses=ACTIVE,EXPIRED`. Multiple values are combined with logical OR — returns domains matching ANY of the specified statuses. See DomainStatus for accepted values (ACTIVE, EXPIRED, PENDING_REGISTRATION, etc.). Cannot be combined with the lifecycleGroups parameter. Use this for precise filtering on specific known status values; for coarse lifecycle phases, consider lifecycleGroups. |
| `lifecycleGroups` | array | no | Filter results to domains belonging to one or more status groups. Supply multiple values as a single comma-separated list, e.g. `?lifecycleGroups=REGISTERED,PENDING`. Multiple values are combined with logical OR. Cannot be combined with the statuses parameter. Use this for coarse lifecycle phases that remain stable as new statuses are added; for precise filtering, use statuses. |
| `updatedAfter` | string <date-time> | no | Return only domains last updated after this timestamp (exclusive). Must be a valid RFC 3339 date-time. |
| `expiresBefore` | string <date-time> | no | Return only domains whose registration expires before this timestamp (exclusive). Must be a valid RFC 3339 date-time. |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | unknown | no | Optional client-generated request correlation identifier, propagated across services and returned in the response X-Request-Id header. |

### Responses

**200** — Paginated list of domains owned by the account.

Content-Type: `application/json`

```json
{
  "items": [
    {
      "domain": "example.com",
      "status": "ACTIVE",
      "expiresAt": "2027-06-12T10:02:10Z",
      "createdAt": "2026-06-12T10:02:10Z",
      "autoRenew": true,
      "privacy": false,
      "transferLock": true,
      "nameServers": [
        "ns01.domaincontrol.com",
        "ns02.domaincontrol.com"
      ],
      "links": [
        {
          "rel": "self",
          "href": "/v3/domains/domain-names/example.com"
        }
      ]
    },
    {
      "domain": "mysite.net",
      "status": "ACTIVE",
      "expiresAt": "2027-08-01T00:00:00Z",
      "createdAt": "2025-08-01T00:00:00Z",
      "autoRenew": false,
      "privacy": true,
      "transferLock": true,
      "nameServers": [
        "ns01.domaincontrol.com",
        "ns02.domaincontrol.com"
      ],
      "links": [
        {
          "rel": "self",
          "href": "/v3/domains/domain-names/mysite.net"
        }
      ]
    }
  ],
  "links": [
    {
      "rel": "self",
      "href": "/v3/domains/domain-names?statuses=ACTIVE&pageSize=25"
    },
    {
      "rel": "next",
      "href": "/v3/domains/domain-names?statuses=ACTIVE&pageSize=25&pageToken=eyJkb21haW4iOiJteXNpdGUubmV0In0"
    }
  ]
}
```

Schema:

- schema reference: `#/components/schemas/DomainCollection`

**400** — Malformed request syntax, missing required field, or invalid field type.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**401** — Authentication credentials are missing or invalid.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**403** — Authenticated identity is not authorized to perform this operation.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**422** — Semantically invalid request — valid structure but violates a business rule, such as an ineligible contact, unsupported TLD, non-renewable domain status, or quote_mismatch (e.g. iscCode or acknowledgedFees that do not match the locked quote).

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**429** — Too many requests — rate limit exceeded.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**Security:** requires `bearerAuth`.
