---
title: "Check Availability"
method: POST
path: "/core/v1/domains:checkAvailability"
tags: ["Domains"]
---

# Check Availability

`POST /core/v1/domains:checkAvailability`

Checks whether up to 50 domain names are purchasable and returns **discovery** pricing for each result.

**Discovery endpoint:** Returns `SearchResult` fields — `purchaseType`, `purchasePrice`, `premium`, `purchasable`. [Search](/api/v1/reference/domains/search) returns the same fields for keyword/suggestion flows. Use this endpoint to determine what to send on [Create Domain](/api/v1/reference/domains/create-domain).

When results show `premium: true` or a non-`registration` `purchaseType`, follow the [Domain pricing guide](/guides/domain-pricing) before calling Create Domain. For non-registration types, re-check Check Availability immediately before create — acquisition prices can change.

**Recommendation:** Set `purchaseType` to `registration`. Most resellers 
restrict results to domains with a `purchaseType` of `registration`
to ensure predictable pricing and immediate fulfillment. Other purchase types
(such as aftermarket variants) can introduce higher costs and non-instant
transactions that may be delayed or declined by third parties.

## Request body

- AvailabilityRequest — Checks if one or more domain names are available for registration (up to 50 domains). Important: Do not encode the `:` in the path. Use `/core/v1/domains:checkAvailability`, not `/core/v1/domains%3AcheckAvailability`.
  - `domainNames` string[], required — DomainNames is the list of domains to check if they are available.
  - `purchaseType` 'registration' | 'aftermarket_i' | 'expiring' | 'backorder' | 'aftermarket_s' | 'aftermarket_b' — Purchase Type indicates what kind of purchase a discovery result represents. Returned by [Search](/api/v1/reference/domains/search) and [Check Availability](/api/v1/reference/domains/check-availability) — not [Zone Check](/api/v1/reference/domains/zone-check). Copy the value to [Create Domain](/api/v1/reference/domains/create-domain) as `purchaseType`. **Recommendation:** Pass `registration` on Search and Check Availability unless you choose to support acquisition inventory. Other values are supported but add integration complexity. **Pricing by type:** - `registration` — Standard or registry premium. Check the `premium` flag: when `false`, omit `purchasePrice` on create (Get Pricing with matching `years` is optional for preview only); when `true`, `purchasePrice` is required from Get Pricing with matching `years`. `years` controls price and registration length. - `aftermarket_s`, `aftermarket_b`, `aftermarket_i` — Flat acquisition fee from Search or Check Availability; `purchasePrice` required. `years` does not multiply price or guarantee registration length — omit or pass TLD default. - `expiring`, `backorder` — Flat acquisition fee from Search or Check Availability; `purchasePrice` required. Get Pricing does not return these prices. `years` does not multiply price or guarantee registration length — omit or pass TLD default. Renew after acquisition to extend registration. See the [Domain pricing guide](/guides/domain-pricing).

## Response `200`

A successful response.

- SearchResponse — SearchResponse returns a list of search results.
  - `results` SearchResult[] — Results of the search are returned here, the order should not be relied upon.
    - `domainName` string, required — DomainName is the punycode encoding of the result domain name.
    - `premium` boolean — Premium indicates whether this discovery result has premium or non-standard pricing. Only returned for purchasable domains. When `true` with `purchaseType: registration` → registry premium (use [Get Pricing](/api/v1/reference/domains/get-pricing-for-domain) for multi-year totals). When `true` with aftermarket, expiring, or backorder `purchaseType` values → flat acquisition fee (use discovery `purchasePrice`; `years` on create does not multiply price or guarantee registration length). When `true`, `purchasePrice` must be passed on Create Domain.
    - `purchasable` boolean, required — Purchasable indicates whether the search result is available for purchase.
    - `purchasePrice` number, double — PurchasePrice is the minimum-term list or flat acquisition price from discovery, in USD. Only returned for purchasable domains. For `purchaseType: registration` when `purchasePrice` is required on create, use [Get Pricing](/api/v1/reference/domains/get-pricing-for-domain) with matching `years` instead. For aftermarket, expiring, and backorder types, pass this flat acquisition fee on Create Domain — not affected by `years`. Get Pricing does not return these acquisition prices. Recommended to re-check with Check Availability immediately before create for all types — prices can change.
    - `purchaseType` 'registration' | 'aftermarket_i' | 'expiring' | 'backorder' | 'aftermarket_s' | 'aftermarket_b' — Purchase Type indicates what kind of purchase a discovery result represents. Returned by [Search](/api/v1/reference/domains/search) and [Check Availability](/api/v1/reference/domains/check-availability) — not [Zone Check](/api/v1/reference/domains/zone-check). Copy the value to [Create Domain](/api/v1/reference/domains/create-domain) as `purchaseType`. **Recommendation:** Pass `registration` on Search and Check Availability unless you choose to support acquisition inventory. Other values are supported but add integration complexity. **Pricing by type:** - `registration` — Standard or registry premium. Check the `premium` flag: when `false`, omit `purchasePrice` on create (Get Pricing with matching `years` is optional for preview only); when `true`, `purchasePrice` is required from Get Pricing with matching `years`. `years` controls price and registration length. - `aftermarket_s`, `aftermarket_b`, `aftermarket_i` — Flat acquisition fee from Search or Check Availability; `purchasePrice` required. `years` does not multiply price or guarantee registration length — omit or pass TLD default. - `expiring`, `backorder` — Flat acquisition fee from Search or Check Availability; `purchasePrice` required. Get Pricing does not return these prices. `years` does not multiply price or guarantee registration length — omit or pass TLD default. Renew after acquisition to extend registration. See the [Domain pricing guide](/guides/domain-pricing).
    - `renewalPrice` number, double — RenewalPrice is the minimum-term renewal total for this domain (typically 1 year; varies by TLD). Only returned for purchasable domains. Informational for standard [Renew Domain](/api/v1/reference/domains/renew-domain) flows — do **not** use to calculate Create Domain `purchasePrice` or multi-year create totals. For premium renewals, use `renewalPrice` from [Get Pricing](/api/v1/reference/domains/get-pricing-for-domain) with matching `years`, not this discovery value.
    - `sld` string, required — SLD is first portion of the domain_name.
    - `tld` string, required — TLD is the rest of the domain_name after the SLD.
    - `reason` string — Reason provides additional context when unavailable (e.g. registry is in maintenance).

## Other responses

- `401` — Unauthorized.
- `403` — Forbidden - you do not have permission to perform this action.
- `405` — Method not allowed.
- `415` — All POST, PUT, PATCH requests for this API must include the `Content-Type: application/json` header in the requests.
- `422` — The request was well-formed but contains no valid domains to check. This occurs when all provided domain names contain TLDs that are not supported or available for registration. The request must contain at least one domain with a valid TLD.
- `429` — Rate limit has been exceeded.
- `500` — Internal server error.
- `502` — Bad Gateway
- `504` — Gateway Timeout

---

[API](https://skmtc.dev/name/apis/name-com-core-api.md) · [All operations](https://skmtc.dev/name/apis/name-com-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/name/name-com-core-api/revisions/a37d4cbd3991/schema)
