Brand & Business Name Generator · Verified Domains, Handles
Pricing
from $1.80 / 1,000 names
Brand & Business Name Generator · Verified Domains, Handles
Brand, business and startup name generator with a built-in username and domain availability checker: every candidate verified live on domains (with prices), 37 social and developer handles, App Store and Wikipedia. Keep only names free where you need them. First 3 names free each month.
Pricing
from $1.80 / 1,000 names
Rating
0.0
(0)
Developer
AgentsGearbox
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
26 minutes ago
Last modified
Share
Brand & Business Name Generator · verified domains, handles & prices
A brand, business, startup or product name generator with a built-in username and domain availability checker. Describe what you are naming and get back names that are actually free: the AI invents candidates, and every single one is checked live against domain registries (with prices), social and developer handles, the Apple App Store, Wikipedia and the dictionary. One row per name with a complete availability map, or only the names that are free where you need them. The first 3 names each month are free for every account.
Why a tool and not a chat? Because the model alone cannot check anything. In our tests, 27 names an AI proposed for a restaurant-booking product had zero free .com domains; they were all real words. Brand Name Generator generates, checks, learns which names were taken, and generates again until it has what you asked for. You pay only for the names it returns.
Built by agentsgearbox. Questions: support@agentsgearbox.com.
What you get
One dataset item per name:
{"name": "ospitella","source": "generated","round": 1,"freeCount": 14,"checkedCount": 15,"freeOn": ["com", "it", "io", "telegram", "x", "github", "youtube", "substack", "npm", "linkedin", "bluesky", "appstore", "dictionary", "wikipedia"],"takenOn": ["tiktok"],"unknownOn": [],"passesFilter": true,"score": 91,"pronounceability": 100,"length": 9,"syllables": 4,"freeDomains": [{ "domain": "ospitella.com", "priceUsd": 11.08 },{ "domain": "ospitella.io", "priceUsd": 28.12 },{ "domain": "ospitella.it", "priceUsd": null }],"domains": {"com": { "status": "free", "method": "rdap", "priceUsd": 11.08, "renewalUsd": 11.08, "url": "https://ospitella.com" },"io": { "status": "free", "method": "whois", "priceUsd": 28.12, "url": "https://ospitella.io" },"it": { "status": "free", "method": "whois", "url": "https://ospitella.it" }},"handles": {"x": { "status": "free", "url": "https://x.com/ospitella" },"tiktok": { "status": "taken", "url": "https://www.tiktok.com/@ospitella" },"github": { "status": "free", "url": "https://github.com/ospitella" }},"collisions": {"appstore": { "status": "free" },"wikipedia": { "status": "free" },"dictionary": { "status": "free" }}}
Every channel has one of three statuses: free, taken or unknown (the platform did not answer reliably; an unknown status never counts as free). On the collision channels, taken means a conflict exists: an app with exactly that name, a Wikipedia article, a dictionary word.
The run ends with one free summary item: how many candidates were generated and checked, how many were returned, why the run stopped, and a hint when nothing passed your filter.
Two ways to use it: generate names, or check your own
Generate. Give a brief ("a budgeting app for freelancers in Spain, friendly and simple"), pick the TLDs and platforms you care about, and set requireFreeOn to the channels a name must be free on. The actor runs rounds of 40 candidates until it has maxResults names that pass, feeding the taken names back into the next round so the model drifts away from what is registered.
Check. Give your own names and leave brief empty: this is a bulk username and domain availability checker. Each name comes back with the same availability map across every TLD and platform you selected. Nothing is generated.
For AI agents and automations
Without a filter the actor returns every checked candidate, including names that are taken everywhere, because a name that is free on .com but taken on Instagram is still useful information. If you need names the user can actually register, set requireFreeOn (for example ["com", "x", "github"]) or minFreeChannels. The default example input ships with requireFreeOn: ["com"]. Channel ids are the TLD without the dot for domains (com, io, it) and lowercase platform ids for handles (x, youtube, github, …); appstore, wikipedia and dictionary are the collision checks.
Example tasks
Ready-made configurations you can open, copy and run as they are:
- Find brand names for a SaaS that are free on .com, X and GitHub: coined names for a software product, returned only when the .com, the X handle and the GitHub name are all free, with prices and nine more checks.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
brief | string | – | What you are naming: product, audience, tone. Required unless names is given. |
names | string[] | – | Check-only mode: your own candidates. Every name is returned (or every name passing the filter). |
requireFreeOn | string[] | [] | Return only names free on all these channels. Unknown statuses never pass. |
minFreeChannels | integer | 0 | Return only names free on at least this many channels. |
maxResults | integer | 10 | Names to return in generate mode. |
tlds | string[] | ["com"] | Domain extensions to check, without the dot. Only real top-level domains (IANA root zone) are checked; co.uk-style second-level extensions and unknown strings are ignored and listed in the summary. |
platforms | string[] | 9 common ones | Handles to check (full list below). |
collisions | boolean | true | App Store exact-name match, Wikipedia article, dictionary word. |
style | enum | mixed | mixed, coined, blends, real-words, short. Coined names are far more often free. |
languages | string[] | ["English"] | Languages the names must be easy to say in. |
minLength / maxLength | integer | 4 / 10 | Letters per name. |
mustContain / avoid | string[] | – | Fragments every name must contain one of / must never contain. |
maxCandidates | integer | 200 | Cap on generated candidates per run (max 500); the run also stops after three rounds without a match. Only returned names are charged. |
includePrices | boolean | true | First-year registration price in USD from a public registrar price list. |
concurrency | integer | 12 | Parallel checks. |
Channels
Domains. Any of the 1,200+ extensions with a public registry service (RDAP, the registries' official protocol) are checked authoritatively: .com, .net, .org, .app, .dev, .ai, .xyz and most country codes. .io and .it are checked over WHOIS. Extensions without a public service (.co for example) fall back to DNS and are marked method: "dns": reliable for "taken", good but not perfect for "free", because registries may hold a name as reserved or premium. A DNS pre-check skips the registry call for names that are obviously taken, which keeps runs fast.
Handles, checked without login or proxies.
| Id | Platform | Id | Platform |
|---|---|---|---|
x | X (Twitter) handle | github | GitHub user or organization |
youtube | YouTube @handle | githubpages | name.github.io |
tiktok | TikTok @handle | dockerhub | Docker Hub user |
twitch | Twitch channel | npm | npm package name |
snapchat | Snapchat username | pypi | PyPI package name |
telegram | Telegram @username | crates | crates.io crate |
bluesky | Bluesky handle (name.bsky.social) | rubygems | RubyGems gem |
mastodon | mastodon.social account | packagist | Packagist vendor |
linkedin | LinkedIn company page slug | netlify | name.netlify.app |
vimeo, dribbble, soundcloud, flickr, giphy | creator profiles | huggingface | Hugging Face user or org |
strava, goodreads, steam, hackernews, kick | communities | devto | DEV Community user |
gumroad, buymeacoffee, aboutme | creator pages | slack | name.slack.com workspace |
substack, blogger | name.substack.com, name.blogspot.com | shopify | name.myshopify.com |
Collisions. appstore (an iOS app with exactly this name exists), wikipedia (an English Wikipedia article has this title; the detail tells you what it is), dictionary (the word has an English Wiktionary entry).
Not available yet: Instagram, Reddit, Medium, Product Hunt, Patreon, Etsy and Threads block datacenter traffic or need a login. They are planned as an opt-in with proxies. Tell us which one you need at support@agentsgearbox.com.
Pricing
Try it free. The first 3 names each calendar month are free for every Apify account, with nothing to enter: the actor keeps count in a small key-value store in your account (free-slice-brand-name-generator) and charges only from the 4th on. The free results are real results you keep; the counter resets on the first of each month.
Pay per event, no subscription. The only paid event is a returned name: $0.003 per row. Generation rounds, DNS, registry, handle and collision checks, filtered-out candidates and the summary are free. Apify plans above Free get an automatic discount on every event (10% to 40%).
| Run | Candidates checked | Returned | Cost |
|---|---|---|---|
10 names free on .com, 3 TLDs and 9 platforms | ~60 | 10 | $0.03 |
25 names free on .com, x and github | ~300 | 25 | $0.08 |
| Check 100 of your own names across 5 TLDs and 15 platforms | 100 | 100 | $0.30 |
| 10 names, no filter (full map for every candidate) | 10 | 10 | $0.03 |
A run that returns nothing costs nothing. Typical run time is 15 to 90 seconds. Apify's free plan includes $5 of monthly usage, which is more than 1,500 returned names.
Code
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('agentsgearbox/brand-name-generator').call({brief: 'A budgeting app for freelancers in Spain. Friendly, simple, trustworthy.',requireFreeOn: ['com', 'x', 'github'],maxResults: 10,tlds: ['com', 'es', 'app'],platforms: ['x', 'github', 'youtube', 'tiktok', 'telegram', 'npm'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const n of items.filter((i) => i.type !== 'summary')) console.log(n.name, n.freeDomains.map((d) => d.domain), 'taken on', n.takenOn);
Python
from apify_client import ApifyClientclient = ApifyClient(token=os.environ["APIFY_TOKEN"])run = client.actor("agentsgearbox/brand-name-generator").call(run_input={"names": ["lumora", "tabellu", "ospitella"], # check-only mode"tlds": ["com", "io"],"platforms": ["x", "github", "youtube", "telegram"],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item.get("type") != "summary":print(item["name"], item["freeCount"], "/", item["checkedCount"], "free:", item["freeOn"])
cURL
curl -s -X POST "https://api.apify.com/v2/acts/agentsgearbox~brand-name-generator/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"brief":"A newsletter about Italian cooking for busy parents","requireFreeOn":["com","substack"],"maxResults":5,"tlds":["com","it"],"platforms":["substack","x","youtube"]}'
Call it from an AI agent
Give your agent hands. Instead of fetching pages, getting blocked and reasoning over HTML, it calls this actor as a tool and gets verified results back as JSON, priced per result. Checking whether 120 candidate names are free means 120 page fetches and a few hundred thousand tokens, and most platforms block an agent anyway. This actor does it in about 40 seconds for $0.03 per ten verified names.
- MCP, this actor only: add
https://mcp.apify.com?tools=agentsgearbox/brand-name-generatorto Claude Desktop, Claude Code, Cursor or any MCP client (with your Apify token), then ask for "ten names for my budgeting app that are free on .com, X and GitHub".
- MCP, all agentsgearbox actors:
https://mcp.apify.com?tools=agentsgearbox/telegram-channel-scraper,agentsgearbox/google-play-reviews-scraper,agentsgearbox/substack-scraper,agentsgearbox/google-news-scraper,agentsgearbox/brand-name-generator,agentsgearbox/ai-readiness-audit,agentsgearbox/company-lookup,agentsgearbox/app-intelligence,agentsgearbox/app-store-reviews-scraper
- No Apify account? This actor is eligible for Apify's agentic payments: an agent can buy a spend-capped token through agi.apify.com (x402, MPP or Skyfire) and call the API directly.
- Prices are per result and known in advance, so the agent can set a spending limit; error records come back as data instead of failed runs.
When calling it from an agent, pass requireFreeOn whenever the user needs registrable names; read freeOn, takenOn and freeDomains from each row and hint from the summary.
Reading the results
score(0–100) blends pronounceability (40%), length (25%) and the share of free channels (35%). It is a sorting aid, not a judgment.pronounceabilitypenalises consonant clusters, odd vowel ratios and awkward endings.syllablesis an estimate.methodon a domain tells you how the verdict was reached:rdapandwhoisare authoritative,dnsis an inference.unknownOnlists channels that did not answer reliably. The summary'schannelsWithMostlyUnknownResultsflags a platform that throttled the whole run; lowerconcurrencyor drop it fromplatforms.- A free domain can still be a registry premium name with a higher price. Names shorter than five letters and dictionary words are the usual suspects; the price shown is the standard registration price.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
requireFreeOn contains channels that are not being checked | A filter id is not in tlds/platforms, or collisions is off | Add the channel to the checked lists or use a valid id from the error message |
Summary says EMPTY or stoppedBy: "noMatches" | Nothing passed the filter in three consecutive rounds, so the run stopped early | Fewer channels in requireFreeOn, minFreeChannels instead, style: "coined", longer maxLength |
Many unknown on one platform | Platform throttled our requests | Lower concurrency; the next run usually recovers |
name not allowed on this platform | The name breaks that platform's rules (length, characters) | Expected; it is reported as unknown, never as free |
| Generated names look Italian/Spanish | languages steers the sound | Set languages: ["English"] only |
Limits and honesty
- Verified channels can change their anti-bot rules; when one does, its status becomes
unknownrather than wrong, and we update the check. - Trademarks are not checked. The Wikipedia and App Store collisions catch the obvious conflicts; run a trademark search (EUIPO, USPTO) before you commit to a name.
- Handles are checked against public profile endpoints, so very new accounts may take a few minutes to appear.
- Check-only mode handles up to 500 names per run.
More from agentsgearbox
- Telegram Channel Scraper: public Telegram channels as JSON, no API key.
- Google Play Reviews Scraper: Google Play reviews with replies and versions, any market.
- Substack Scraper: Substack posts with full text and comments, custom domains too.
- Google News Scraper: Google News with real publisher URLs and full text.
- AI Readiness Audit: how well AI search engines and agents can read a site: crawler access, llms.txt, structured data, content without JavaScript, scored with fixes.
- Company Lookup: one row per domain with legal identity and VAT validation, contacts, socials, tech stack, open jobs, apps, news and Wikidata facts.
- App Intelligence: App Store and Google Play in one run: search, top charts, full app details and each app's twin on the other store.
- App Store Reviews Scraper · iOS + Google Play, Any Country: Reviews of any iOS or Android app from both stores in one run: stars, text, version, votes, developer replies, since-last-run checkpoint, rating trend per app..
All of them are pay-per-event, run without a browser, and are compared with their alternatives on agentsgearbox.com.
Support
Email support@agentsgearbox.com or use the issues tab. Compare this actor with alternatives on agentsgearbox.com.