---
title: "Search"
method: POST
path: "/core/v1/domains:search"
tags: ["Domains"]
---

# Search

`POST /core/v1/domains:search`

Searches for domain name suggestions based on a keyword or term. Important: Do not
encode the `:` in the path. Use `/core/v1/domains:search`, not `/core/v1/domains%3Asearch`.

**Discovery endpoint:** Returns `SearchResult` fields — `purchaseType`, `purchasePrice`, `premium`, `purchasable`.

**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) can
introduce higher costs and non-instant transactions that may be delayed or declined
by third parties.
With `purchaseType: registration`, domains that do not match the filter are **omitted** from results (unlike Check Availability, which returns them with `purchasable: false`).

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

## Request body

- SearchRequest — SearchRequest is used to specify the search parameters.
  - `keyword` string, required — Keyword is the search term to search for. It can be just a word, or a whole domain name.
  - `timeout` integer — Timeout is a value in milliseconds on how long to perform the search for. Valid timeouts are between 500ms to 12,000ms. If not specified, timeout defaults to 12,000ms. Since some additional processing is performed on the results, a response may take longer then the timeout.
  - `tldFilter` string[] — TLDFilter will limit results to only contain the specified TLDs. There is a maximum of 50 TLDs that can be used in this filter
  - `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

- `400` — Returned when an invalid request is made. The message will contain information on the field that is failing validation.
- `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.
- `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)
