Domain name suggestions
Turn one brand keyword into a focused list of domain name ideas across the extensions you care about.
Run — free
The generator creates familiar forms such as the exact keyword, get plus keyword, try plus keyword, keyword plus HQ, and clear hyphenated alternatives. Results are deterministic, organized by pattern and TLD, and ready to shortlist or pass into a separate registrar workflow. It does not contact registries, DNS providers, WHOIS services, or registrars, so it never claims that a generated domain is available to register.
Start with the core idea, then widen it consistently
A useful domain search usually begins with a short brand, product, project, or topic rather than a complete domain. Enter that core idea as the keyword and choose the top-level domains that suit the audience, such as .com for a broad commercial identity or .io for a technology product. The generator normalizes capitalization, spacing, punctuation, and common accented characters into a domain-friendly base. It then applies the same practical naming patterns to every requested extension. You receive the exact form first, followed by familiar action prefixes such as get, try, use, and go, then suffixes such as hq, app, and online. Hyphenated alternatives are included separately. This method produces a compact, comparable list instead of an unstructured brainstorm. Because ordering never changes for the same input, teams can review results repeatedly, store a shortlist, or compare naming sessions without wondering whether randomness hid an earlier idea. The normalized keyword is also returned, making any transformation visible rather than silently changing the requested brand.
Treat every result as a naming candidate, not an availability result
The words available and suggested are easy to confuse during domain research, but they describe different tasks. This capability only suggests syntactically useful name patterns. It makes no DNS request, registrar search, WHOIS lookup, registry query, trademark search, or social handle check. The checked_availability field is always false so downstream software can preserve that distinction. A domain in the output may already be registered, reserved, premium-priced, blocked by a registry, or unavailable under a particular registrar policy. After creating a shortlist, verify each candidate through a trusted registrar or registry source immediately before making a decision. You should also examine pronunciation, spelling, unintended meanings, existing brands, and relevant trademark rules. Availability can change at any time, so even a separate successful lookup is not a permanent promise. Keeping generation separate from verification is useful: the creative step remains fast and deterministic, while the time-sensitive purchasing step can use the provider, market, and legal review appropriate to your situation.
Use structured patterns to compare extensions and automate shortlists
Each suggestion includes the complete domain, the name before the extension, the normalized TLD, and a pattern identifier. That structure helps both people and software. A founder can scan exact names before considering modified forms, while an internal tool can group all get-prefix candidates or compare the same name across .com, .net, and .io. Input order is respected for unique TLDs, and duplicate extensions are removed after normalization, so .COM and com do not create repeated results. The stable output also makes the capability suitable for forms, spreadsheets, scripts, and product-name workshops where reproducibility matters. Use the list as a first-pass vocabulary rather than a recommendation score: shorter is not always better, prefixes can shift tone, hyphens can increase clarity while making spoken sharing harder, and an app or HQ suffix may imply a product stage that does not fit every organization. The API price is $0.002 per request, while the browser version can run the same deterministic logic locally.
What you can do with it
Explore a new product name
Expand a working brand keyword into recognizable domain patterns before discussing registration or visual identity.
Compare several TLD strategies
See the same exact, prefixed, suffixed, and hyphenated names across the extensions relevant to different markets.
Build a repeatable naming workflow
Generate structured candidates in a stable order, then send a human-approved shortlist to separate availability and legal checks.
FAQ
Does this tool check whether a domain is available?
No. It generates naming patterns only and always reports checked_availability as false. Verify shortlisted domains separately.
Which patterns are generated?
The exact keyword, get, try, use, and go prefixes, hq, app, and online suffixes, plus two common hyphenated variants.
Can I enter TLDs with a leading dot?
Yes. Both .com and com are accepted and normalized to com. Repeated TLDs are removed while preserving their first position.
How is a phrase converted into a domain name?
It is lowercased, accents are folded where possible, non-alphanumeric runs become hyphens, and leading, trailing, or repeated hyphens are removed.
How much does an API request cost?
Each API request costs $0.002. The same deterministic generator can also run free in your browser.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/web/domain-name-suggest \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword":"Bright Forge","tlds":[".com","io"]}'const res = await fetch("https://api.kit.forhosting.com/web/domain-name-suggest", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"keyword": "Bright Forge",
"tlds": [
".com",
"io"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/domain-name-suggest",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"keyword": "Bright Forge",
"tlds": [
".com",
"io"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/domain-name-suggest", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"keyword":"Bright Forge","tlds":[".com","io"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"keyword":"Bright Forge","tlds":[".com","io"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/domain-name-suggest", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"keyword": "Bright Forge",
"tlds": [
".com",
"io"
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.domain_name_suggest",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_tlds | 20 |
max_suggestions | 200 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |