# Domain Availability Checker

Check whether a domain name looks free to register. Give a bare name ("acme") and up to 10 extensions, or a full domain ("acme.io"). Each candidate is asked of its registry over RDAP (WHOIS where an extension has no RDAP) and gets a verdict: registered, likely-available, likely-available-whois, or unknown when the registry could not be checked (never treated as available). Registered names include registrar, expiry and lifecycle stage; likely-available names include caveats (premium, reserved or restricted names can still be unavailable) and non-affiliate registrar search links. Searched names are not logged or shared.

**Not for:** Buying or reserving a name, prices, or the full record of a registered domain (use whois_lookup).

- Tool id: `domain-availability`
- Category: domain
- Execution: network
- MCP tool `domain_availability` at https://lookupowl.com/mcp
- REST `GET https://lookupowl.com/api/v1/tools/domain-availability` (or POST a JSON body)
- OpenAPI: https://lookupowl.com/api/openapi.json

## Input

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `name` | string | yes |  | A bare name such as "acme" (checked under tlds), or a full domain such as "acme.io" (checked as is, plus its name under any extra tlds). URLs and e-mail addresses are reduced to their domain. min length 1, max length 512 |
| `tlds` | string[] | no | `[]` | Extensions to check, without the dot, e.g. ["com","dev","co.uk"] ("com,dev" also works); at most 10. Empty means com, net, org, io and ai for a bare name. max 10 items |

## Output

Results are wrapped in an envelope: `tool`, `version`, `requestId`, `data`, `summary`, `meta` (cache status, timing), `permalink`. `data` has these fields:

| Field | Type | Description |
|---|---|---|
| `name` | string | What was asked for, as typed. |
| `results` | object[] |  |
| `truncated` | boolean | More names were requested than the limit of 10; the rest were not checked. |
| `incomplete` | boolean | The deadline passed before every registry answered; unanswered rows are unknown. |
| `notes` | string[] |  |

## Examples

### acme under .com, .net and .org

```json
{"name":"acme","tlds":["com","net","org"]}
```

```bash
curl 'https://lookupowl.com/api/v1/tools/domain-availability?name=acme&tlds=com&tlds=net&tlds=org'
```

Web page: https://lookupowl.com/domain-availability-checker?q=acme&tlds=com&tlds=net&tlds=org

### One full domain

```json
{"name":"example.com","tlds":[]}
```

```bash
curl 'https://lookupowl.com/api/v1/tools/domain-availability?name=example.com'
```

Web page: https://lookupowl.com/domain-availability-checker?q=example.com

### A bare name under the default extensions

```json
{"name":"lookupowl","tlds":[]}
```

```bash
curl 'https://lookupowl.com/api/v1/tools/domain-availability?name=lookupowl'
```

Web page: https://lookupowl.com/domain-availability-checker?q=lookupowl

### A Unicode name under .de and .com

```json
{"name":"bücher","tlds":["de","com"]}
```

```bash
curl 'https://lookupowl.com/api/v1/tools/domain-availability?name=b%C3%BCcher&tlds=de&tlds=com'
```

Web page: https://lookupowl.com/domain-availability-checker?q=b%C3%BCcher&tlds=de&tlds=com

## Web pages

- https://lookupowl.com/domain-availability-checker

## Limits and caching

- Cost: from 1 unit up, depending on the input (a registry lookup counts every upstream request); 1 unit for a cached result. Budgets are per network and published in the `RateLimit` response headers.
- Cache: the lifetime follows the data (for DNS, the record TTL, within a few minutes). Add `fresh=true` (MCP argument or query parameter) to look again; it costs 3 units per unit and is limited to 10 per hour.
- Timeout: 25 s.

## Related tools

- [WHOIS Lookup](https://lookupowl.com/tools/whois-lookup.md): Registrar, creation and expiry dates, status codes, nameservers and DNSSEC for any domain, from RDAP with WHOIS fallback.
- [Domain Report: Registration, DNS, Web, Hosting and Email](https://lookupowl.com/tools/domain-report.md): One scored report on a domain: registration, DNS, certificate and security headers, hosting, SPF, DMARC, DKIM and blocklists.
- [EPP Status Codes](https://lookupowl.com/tools/epp-status.md): Explain domain status codes such as clientTransferProhibited or redemptionPeriod: meaning, who set them and what to do.
- [Punycode / IDN Converter](https://lookupowl.com/tools/punycode-converter.md): Convert internationalised domain names between Unicode and Punycode, with validation and lookalike warnings.
- [DNS Lookup](https://lookupowl.com/tools/dns-lookup.md): Look up A, AAAA, MX, NS, TXT, CNAME, SOA, CAA, DS and DNSKEY records from a public resolver or the authoritative nameserver.
- [SSL Certificate Checker](https://lookupowl.com/tools/ssl-checker.md): Check a site's SSL/TLS certificate: days until it expires, whether it is trusted, matches the host and has a complete chain.

## Guide: Domain availability checker

Check whether a name is free by asking the registry directly, with an honest answer when we can't be sure.

### What this checker does

A domain availability check asks one question: does the registry for this extension hold a registration for this name right now? LookupOwl puts that question to the registry's RDAP service (the modern, structured version of WHOIS), or to its WHOIS server when there is no RDAP, for up to ten extensions at once. Each name gets one of five verdicts instead of a guess.

| Verdict | What it means |
|---|---|
| **Likely available** | The registry says it has no record of the name. You can probably register it, but read the caveats below first. |
| **Likely available (WHOIS)** | The extension has no RDAP, and its WHOIS server replied “no match”. This is slightly less certain, because WHOIS wording varies. |
| **Registered** | The registry has a record, so the name is taken. When the registry shares them, the row shows the registrar, the expiry date and, for a name on its way out, its stage, such as redemption or pending delete. The [WHOIS lookup](https://lookupowl.com/whois) has the full record. |
| **Unknown** | We couldn't find out. The registry timed out, limited us or gave an answer we can't rely on. We never show this as available. |
| **Invalid** | The input can't be registered, for example a public suffix such as `co.uk`, which is an ending and not a name, or a name with characters that aren't allowed. No registry is asked. |

### How to use it

1. **Type a name**: A bare name such as `acme` is checked under `.com`, `.net`, `.org`, `.io` and `.ai`. To choose other endings, open More options and list up to ten, for example `dev`, `co.uk` or `de`. A full domain such as `acme.dev` is checked as typed, plus the same name under any extra endings you add.
2. **Read the verdict for each ending**: Every extension has its own registry, so every ending gets its own answer. Notes under the verdict warn that a name can still be reserved or premium-priced, and flag less certain WHOIS answers and international names.
3. **Register at a registrar you trust**: The register buttons open a registrar's search page for the name. The page tells you if a link earns us a commission.

> **From an AI assistant** Connect the LookupOwl MCP server and ask: “Is acme.dev free?” The assistant calls the `domain_availability` tool and gets the same verdicts as this page.

### Why “likely available” is not a promise

A registry with no record is telling you nobody holds the name. It isn't saying you may register it, or what it will cost. Several things can still get in the way.

- **Premium names.** Registries can price short, common or valuable names far above the standard fee. The registrar shows the price. A registry lookup doesn't.
- **Reserved or blocked names.** Registries hold back strings such as single characters, country codes and technical terms. A reserved name looks just like an unregistered one.
- **Eligibility rules.** Extensions such as `.gov`, `.edu` and `.bank` require proof that you qualify, and so do some country codes.
- **Launch phases.** A new extension may run sunrise and early-access periods in which only some buyers can register.
- **Names about to drop.** A name in its last days before deletion still shows as registered, then becomes free. Watch its [expiry date](https://lookupowl.com/domain-expiration-checker) if you want it.

### When the result looks wrong

- **It says available, but my registrar says taken.** Registrars count premium, held and aftermarket names as taken, and keep reserve lists of their own. Their answer decides whether you can buy it.
- **It says registered, but the website doesn't exist.** Registered only means someone paid for the name. Many are parked or held for resale.
- **Unknown.** The registry timed out, was rate-limited or couldn't be reached. Registries limit automated queries, and we pace ours too. Try again in a minute.
- **A name you just registered still shows as free.** We keep “no record” answers for about five minutes, and registered ones for up to an hour. Press Check again to ask the registry afresh.
- **International names.** Enter the name as you type it. LookupOwl converts it to its `xn--` form, and the [Punycode converter](https://lookupowl.com/punycode-converter) shows you that form.
- **The wrong ending.** `.co` and `.com` are different registries with different prices. Check the exact one you will use.

### How the check works

LookupOwl finds the RDAP server for the extension in the IANA bootstrap list and asks it for the domain. An HTTP 404 from the registry itself is the standard way to say “not found”, and that is the signal behind Likely available. We only trust it from the registry IANA lists for that extension, or from one we have tested ourselves. Anything else is shown as Unknown.

We deliberately don't use DNS for this. A registered domain with no nameservers, or one on hold, gives the same empty DNS answer as a free name.

Where there is no RDAP, we ask the registry's WHOIS server on port 43 and match its “no match” wording, but only for servers whose wording we have checked. Any error, timeout or rate limit becomes Unknown, never available.

### Standards and policies

- **RFC 7480 and RFC 9083**: how RDAP uses HTTP, including the 404 for a missing object, and its JSON responses.
- **RFC 9224**: the IANA list that gives each extension's RDAP server.
- **RFC 3912**: the WHOIS protocol used as the fallback.
- **RFC 3915 and RFC 5731**: the grace periods and statuses that keep an expiring name registered.
- **ICANN registry agreements, Specification 5**: the reserved-names schedule for generic extensions.

### Frequently asked questions

**How accurate is a domain availability check?**

It is as accurate as the registry's own answer, which is the source of truth for whether a name is registered. A Registered verdict is dependable. Likely available speaks only about registration, because price, premium status and eligibility live outside that database, so confirm them at the registrar before you commit.

**Does LookupOwl register or sell domains?**

No. LookupOwl only reads public registry data. It doesn't sell domains, hold names for you or take payment. The register buttons open a registrar's search page for the name, and any purchase happens on the registrar's own site, at its price.

**Will my search make someone buy the name first?**

Not because of us. LookupOwl never registers names, never passes your searches to registrars and keeps names out of its server logs. The registry receives the question from our servers, not from your device. Google Analytics, which counts lookups on the website, does record the name you searched, without your name or account. A registrar you click through to sees whatever you type there.

**Can I check many names or extensions at once?**

One name under up to ten extensions per search. For a list of different names, an assistant connected to the MCP server can call `domain_availability` once per name and sum up the results. The REST API works the same way.

**Why is an expired domain not available yet?**

After expiry a name passes through a grace period, a redemption period and pending delete before it is released. At generic extensions such as `.com` that adds up to around 80 days, and the name stays registered the whole time. The [expiration checker](https://lookupowl.com/domain-expiration-checker) shows where a name stands.

**What if the name I want is taken?**

Look up who holds it with the [WHOIS lookup](https://lookupowl.com/whois) and check its expiry date, because owners sometimes let names lapse. A registrar's backorder service registers the name the moment it is released. You can also write to the owner through the registrar's contact form, or look for the name on aftermarket sites where names are sold.

**Does it work for every extension?**

It works for every extension that publishes RDAP and for most that offer WHOIS. A handful of registries refuse automated lookups or give no usable answer. For those you see Unknown with the reason, never a guess, and you can try again if the cause was a timeout.
