# Name Availability

> Research whether a brand/product/company name is free to use by checking domain availability across TLDs and trademark registrations (EUIPO, TMview, WIPO, DPMA). Use when naming a startup, SaaS, product, or brand and you need to know if domains are registrable and the name is clear of conflicting trademarks. Triggers include "is this name available", "check the domain", "is X trademarked", "find an available name", "EUIPO/trademark search".

- Skill: `run-labs-com/name-availability` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add run-labs-com/name-availability`
- Raw SKILL.md: https://api.skillmd.com/api/skills/run-labs-com/name-availability/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: run-labs-com (https://skillmd.com/u/run-labs-com)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/run-labs-com/name-availability

---


# Name Availability Research

Two-part check for any candidate name: **(1) domains** (scriptable, reliable) and
**(2) trademarks** (must be done through the browser skill — registries block scripts).

## When to use

A user is choosing a name for a startup / SaaS / product / brand and wants to know if it
is actually usable: can they get a domain, and is it free of conflicting trademarks
(especially EU / EUIPO and DACH national offices).

## 1. Domain availability (scripted)

```bash
scripts/check-domains.sh <name> [tld ...]         # paths relative to this skill dir
scripts/check-domains.sh acme                     # default TLD set: ai com
scripts/check-domains.sh acme com ai io de        # specific TLDs
scripts/check-domains.sh acme.ai foo.com          # full domains accepted too
scripts/check-domains.sh -t com,ai,io a b c       # several names x several TLDs
scripts/check-domains.sh --json acme com ai       # machine-readable output
```

Options: `-t/--tlds LIST` · `-j/--jobs N` (parallelism, default 6) · `--json` · `--no-cache`.

How it decides `TAKEN` / `AVAILABLE` / `UNKNOWN` / `INVALID-TLD` — signals are checked in
order of reliability and it stops at the first decisive one, so most lookups take well
under a second:

0. **IANA TLD list** (cached 30 days): an undelegated TLD is reported `INVALID-TLD`,
   never "available" — `acme.zzz` is a typo, not a free domain.
1. **RDAP** (`rdap.org`): 200 = registered.
2. **DNS NS** records present = registered & delegated.
3. **whois** free/taken markers (decisive for `.de`, `.at`, etc., which have no open RDAP);
   rate-limit replies are reported as `UNKNOWN`, never as free.
4. RDAP 404 with no contradicting whois = available.

A domain registered but not configured (no DNS) is still correctly flagged `TAKEN` via
RDAP/whois — more accurate than a plain DNS check. `whois`/`dig` are optional; the script
notes on stderr when a signal was unavailable. Always tell the user this is a strong
indicator, **not a guarantee** — premium, reserved and blocked names can still fail at a
registrar checkout.

## 2. Trademark search

**Try the [`trademark-search`](../trademark-search/SKILL.md) skill first** — it queries the
TMview JSON API directly (curl + jq, no browser) and returns marks, Nice classes, status,
owner and a verdict:

```bash
../trademark-search/scripts/tmview-search.sh "<name>" -o DACH
```

Fall back to the browser route below when that API is unavailable, when you need the
original record pages, or when checking registers TMview does not cover well.

### Browser fallback

EUIPO / TMview / WIPO web UIs sit behind bot-protection and **cannot be scraped with curl**
(connections are dropped). Do this step with an available browser skill —
`agent-browser`, `browser-tools`, or `web-browser`.

Get the verification links:

```bash
scripts/tm-links.sh "<name>"
```

Then, using the browser skill:

1. Open **TMview** (`https://www.tmdn.org/tmview/`) — searches EUIPO + national offices.
   Search the exact name; set **Offices = EM (EUIPO)** for the EU mark. Also run it with
   **no office filter** to catch national (DE/AT/CH) and international registrations.
2. For each hit, capture: **mark text, owner/applicant, Nice class(es), status**
   (Registered / Filed / Expired / Withdrawn), and **office**.
3. Cross-check Germany on **DPMAregister** if the brand is DACH-focused.
4. Also run **WIPO Global Brand Database** for worldwide / international marks.

### Interpreting trademark results

- **No identical or similar marks in relevant Nice classes** → name looks clear.
- **Identical mark, different & unrelated Nice class** → often usable, but flag the risk.
- **Identical/similar mark in the SAME or related class** (for software/SaaS that's
  typically **Nice class 9, 42, and often 35**) → conflict; recommend a different name.
- Always note this is **not legal advice** — recommend a trademark attorney before filing.

## Recommended output to the user

Produce a compact table per candidate name:

| Name | Domains (key TLDs) | EUIPO/TM status | Verdict |
|------|--------------------|-----------------|---------|
| Acme | .com taken, .ai free, .de free | 1 mark, class 25 (apparel) — unrelated | ✅ usable (get .ai) |

Then give a clear recommendation and the caveats (indicator not guarantee; not legal advice).

