---
title: "Check availability and pricing for domains"
method: GET
path: "/api/domains/search"
tags: ["Domain Search"]
---

# Check availability and pricing for domains

`GET /api/domains/search`

## Request

- Base URL: `https://domani.run`
- URL: `https://domani.run/api/domains/search`
- Auth: none required

Checks availability and pricing for one or more domains via RDAP + retail pricing. A name RDAP calls unregistered is then checked with the registrar: a registry premium or reserved name comes back `available: false`, with `registry_status` and a `reason`. Use `q` for a single domain (returns flat object) or `domains` for multiple (returns array). Supports SSE streaming via `Accept: text/event-stream` header - closing the connection cancels all in-flight RDAP lookups server-side. Max 200 domains per request. **Public endpoint** - no authentication required. Authenticated requests get higher rate limits (60/min vs 20/min).

## Query parameters

- `q` string
- `domains` string
- `max_price` number
- `sort` 'price' | 'tld'
- `source` 'all' | 'primary' | 'secondary'
- `order` 'asc' | 'desc'

## Response `200`

Domain availability and pricing. Single domain (via `q`) returns a flat object. Multiple domains (via `domains`) returns `{ results, total, available }`. With `Accept: text/event-stream`, returns SSE events (`event: result` per domain, `event: done` with summary). A later `result` for the same domain replaces an earlier one, for example when the registry turns out to hold the name back.

- SearchResult
  - `available` boolean, required: Whether the domain is available for registration
  - `domain` string, required: Full domain name including TLD
  - `price` number, required: Registration price in the specified currency
  - `currency` string, required: ISO 4217 currency code (always USD)
  - `error` boolean: True if RDAP lookup failed (availability unknown)
  - `for_sale` object: Present when the domain is listed for sale (either on Domani marketplace or detected on an external aftermarket)
    - `price` number, required: Listed sale price in USD
    - `currency` string, required: Price currency (always USD)
    - `source` string, required: Where the listing originates: 'domani' for Domani marketplace, or aftermarket name (e.g. 'Sedo', 'Afternic')
    - `buyable` boolean, required: Whether the domain can be purchased directly via the Domani API. true for Domani listings, false for external aftermarket and for a name outside public DNS (`tld_kind` `alt_root`)
    - `url` string: Direct link to external aftermarket listing (only present for external sources)
    - `description` string: Listing description (Domani marketplace listings only)
  - `tld_kind` 'tld' | 'second_level' | 'alt_root': Root-zone kind of the domain's suffix: `tld`, `second_level`, or `alt_root`. An `alt_root` domain is outside the IANA root zone and does not resolve in public DNS: it is not checked, and `reason` says why.
  - `registry_status` 'premium' | 'reserved': Set when the registry holds back a name that RDAP calls unregistered: `premium` (the registry sets its own price, see `registry_price`) or `reserved` (it cannot be registered). Such a result is `available: false`, since `POST /api/domains/buy` cannot register it, and `reason` says why.
  - `registry_price` number: Present on `premium` results when the registrar quoted it: the registry's first-year price in USD. `price` stays the TLD's standard price, which does not apply to this name.
  - `renewal_price` number: What each year after the first costs, in USD, at the registrar that would register the name: what renewing it is billed. Absent when unknown. On a `premium` result it is, like `price`, the TLD's standard price.
  - `reason` string: Why the domain is not offered: a name outside public DNS (`tld_kind` `alt_root`), or a name the registry holds back (`registry_status`).

## Other responses

- `400`: Missing or invalid domain format
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded - wait and retry

---

[API](https://skmtc.dev/domani/apis/domani-run-api.md) · [All operations](https://skmtc.dev/domani/apis/domani-run-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domani/apis/domani-run-api/revisions/7679f8159533?raw)
