# domainsearch

> Free domain-availability API and search UI. Ask "is this domain
> registered?" and get an attributable verdict — registered, free, or
> unknown — from layered public sources (ICANN zone files, Common Crawl,
> DNS delegation, registry RDAP). No account, no key, CORS-open.

Base URL: https://domainsearch24.eu/api/v1

## Core reading

- [API reference](https://domainsearch24.eu/docs.md): THE
  document to read — endpoints, verdict semantics, sources, rate limits.
- [OpenAPI spec](https://domainsearch24.eu/api/openapi.yaml)
- [Terms of service](https://domainsearch24.eu/legal/terms-of-service.md),
  [Privacy policy](https://domainsearch24.eu/legal/privacy-policy.md),
  [Imprint](https://domainsearch24.eu/legal/imprint.md) — every
  page is also served as raw markdown at its `.md` suffix.

## Quick reference

- `GET /api/v1/check?domains=a.com,b.io` → `{"results":[{"domain","status","source","reason?"}]}`
  — up to 30 domains, status is `registered` | `free` | `unknown`, source is
  `czds` | `commoncrawl` | `dns` | `rdap`. Add `fast=1` for millisecond
  local-only answers (never asserts `free`).
- `GET /api/v1/check/{domain}` → single bare result object.
- `GET /api/v1/check/stream?domains=...` → NDJSON, one result per line as
  each domain resolves (completion order; match on `domain`).
- `GET /api/v1/bulk/stream?label=acme[&confirm=1]` → NDJSON: the label
  checked across EVERY delegated TLD (~1,450). Lines add `class`
  (`taken`|`free`|`premium`|`aftermarket`|`unknown`) and `phase`
  (`local`|`confirm`; confirm supersedes). Default = fast local layers
  only; a clean miss classes `free` while strict `status` stays
  `unknown` ("assumed free"). `confirm=1` adds the budgeted RDAP phase.
  Header `{total}`, trailer `{done,truncated}`. Rate limited per search.
- `GET /api/v1/tlds` → per-TLD capabilities: `rdap` (can assert free),
  `zone` (≤24h-complete registered data).
- `GET /api/v1/status` → layer readiness.
- `free` is only assertable for TLDs with RDAP; `.eu` and some ccTLDs
  yield honest `unknown` when not registered.
- Anonymous limit: 120 domains/min per IP (429 + Retry-After). API keys
  (Authorization: Bearer) lift it — liam@domainsearch24.eu.
