# Domain Hunter: The Best Available Domains for Any Niche (`zaiq/domain-hunter`) Actor

Generate hundreds of domain ideas, check registry availability live, compare public asking prices and rank short, brandable names by transparent scores. Includes dated registrar prices, history, trademark search evidence and signed-out social checks when sources answer.

- **URL**: https://apify.com/zaiq/domain-hunter.md
- **Developed by:** [Zaiq](https://apify.com/zaiq) (community)
- **Categories:** SEO tools, AI
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1,192.00 / 1,000 completed hunts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Domain Hunter: The Best Available Domains for Any Niche

Describe a niche and get a ranked shortlist of domain names, including unregistered names and public listings within your purchase budget. The Actor generates a wide pool, scores it, checks the strongest candidates and returns the evidence behind each recommendation.

Short, memorable names and resale patterns have the largest scoring weights. Names are judged by length, approximate syllables, word structure, spelling ambiguity, extension and niche fit. The AI brainstorm adds investor-style naming suggestions; its judgments are clearly separate from live registry and marketplace facts. A final AI investor review evaluates the actual actionable shortlist and can reject weak keyword matches; it never supplies availability or pricing facts.

This is a research shortlist. “Available now” means the authoritative registry returned no registration during this run. Reserved names, eligibility rules and premium fees can still affect checkout. A value band is a low-confidence screening rule, not an appraisal or a promise of resale income.

### What you get

| Field | What it holds |
|---|---|
| `domain`, `tld`, `rank`, `score` | One row per recommendation, best score first. |
| `status` | Available now; registered, for sale; expiring or at auction; or registered with no sale listing found when that option is enabled. |
| `availability` | Registry URL, time checked, response status, registration state, dates and nameservers when supplied. DNS-only fallbacks are labelled unknown and cannot prove availability. |
| `registrationPrice`, `renewalPrice` | Public standard tariffs with currency, registrar, source URL, date, annual period and minimum term. Premium domain-specific prices and taxes need checkout confirmation. |
| `askingPrice`, `marketplace`, `listingUrl`, `listingEvidence` | A public asking price and its acquisition link, distinct from a completed sale. Unknown-price and non-USD listings do not pass a USD purchase budget. |
| `auction` | Venue, current bid, end time and evidence link when an auction is found. A bid is not the final total. |
| `scores` | Brandability, resale potential, relevance, style, acquisition-price tier and risk, each with reasons and the weighting formula. Higher risk means more concern or uncertainty. |
| `estimatedValue` | A broad band including zero, its rule basis, and genuinely similar public sales or asking prices when found. Asking prices never masquerade as sales. |
| `history` | First and last apex-root archive captures, capture count or lower bound, sampled page titles, content flags and explicit evidence gaps. |
| `tranco` | Latest returned public rank and its date, or an unknown/not-present state. |
| `socialHandles` | Exact-handle public checks on Instagram, TikTok and X: taken, looks free or unknown. A missing account does not guarantee signup availability. |
| `trademark` | USPTO public wordmark matches with serial links, classes, status codes, match counts and core-name versus broad-word matching. TMview is marked incomplete when interactive verification is required. No legal clearance. |
| `why`, `notes` | A short reason for inclusion and the limitations that matter for this name. |
| `SUMMARY`, `CANDIDATES` | Key-value records with generation/check counts, all checked candidates, exclusions, source outcomes, request/traffic timing, AI usage and charged events. |

### What people use it for

- **Business naming:** Compare concise names and exact keywords for a new product or service.
- **Domain acquisition:** Compare a fresh registration against a priced name already listed for sale.
- **Local launches:** Use a country extension alongside .com; ZA adds .co.za.
- **Portfolio screening:** Review the score parts, history evidence and acquisition cost before doing deeper diligence.

### How to use it

1. Enter a niche in plain words. Add a two-letter country code if useful.
2. Choose the naming styles, maximum length and purchase budget. Leave extensions empty to use the ordered defaults.
3. Keep the first run at 120 checks and 10 results. Enable the AI brainstorm for a broader creative pool.
4. Set Maximum cost per run to at least $1.49 for one hunt. AI usage is billed separately by the gateway.
5. Open Ranked domains, then inspect the evidence and SUMMARY before deciding what to buy. The Actor does not register, bid on or purchase domains.

### Input

| Field | Example | Notes |
|---|---|---|
| Niche | `dog grooming` | Any short plain-language category. |
| Country | `ZA` | Optional two-letter code. |
| TLDs | empty | Defaults: com, mapped country extension, ai, io, co, app, net. Up to 12 custom suffixes. |
| Styles | Short brandable; Premium / investor | Also exact-match keyword, local, one-word and two-word. |
| Maximum length | `12` | 4–24 letters before the suffix. |
| Include for-sale / auctions | on | Public signed-out sources only. |
| Domain purchase budget | `2500` | USD acquisition-price or current-bid ceiling, separate from Actor/model charges. |
| Maximum results | `10` | Up to 30; fewer if quality or evidence is insufficient. |
| Maximum checks | `120` | 20–240 candidates; 200 is the API default. |
| Language | `English` | AI naming language; Latin-letter output and English-biased offline heuristics. |
| AI brainstorm | on | Newest dated Haiku-family model in the gateway catalogue. |
| AI token allowance | `0.50` | Combined catalog-priced ceiling for brainstorm and final quality review; gateway plan multipliers may apply. |
| Social checks | on | Inconclusive platforms are marked unknown and further opaque checks skipped. |
| Include registered reference names | off | Shows strong names with no sale listing found; no acquisition offer is implied. |

### Output

Each result is one row in the run's dataset (download it as JSON, CSV, Excel, XML or HTML, or read it through the API). An example row (values shortened):

```json
{
  "rank": 2,
  "domain": "name.example",
  "tld": "co.za",
  "status": "available now",
  "score": 69.87,
  "availability": {
    "method": "authoritative RDAP",
    "registryState": "unregistered",
    "httpStatus": 404,
    "rdapUrl": "https://registry.example/domain/name.example",
    "checkedAt": "2026-10-18T16:13:24Z",
    "registrableGuaranteed": false
  },
  "registrationPrice": {
    "amount": 42.3,
    "currency": "CNY",
    "periodYears": 1,
    "minimumYears": 2,
    "checkedAt": "2026-10-18T16:12:26Z",
    "registrar": "Example registrar",
    "sourceUrl": "https://registrar.example/prices"
  },
  "renewalPrice": {
    "amount": 42.3,
    "currency": "CNY",
    "periodYears": 1,
    "checkedAt": "2026-10-18T16:12:26Z",
    "registrar": "Example registrar",
    "sourceUrl": "https://registrar.example/prices"
  },
  "scores": {
    "brandability": {
      "score": 88,
      "reasons": [
        "7 letters; about 2 syllables."
      ]
    },
    "resalePotential": {
      "score": 40,
      "reasons": [
        ".co.za extension; 7-letter label."
      ]
    },
    "relevance": {
      "score": 79,
      "reasons": [
        "Niche terms matched; terms removed from this anonymized example."
      ]
    },
    "risk": {
      "score": 35,
      "reasons": [
        "Trademark clearance is incomplete; radio test is a heuristic."
      ]
    }
  },
  "estimatedValue": {
    "band": "USD 0–100",
    "confidence": "low",
    "method": "rules-based screening band; not a market appraisal"
  },
  "trademark": {
    "status": "incomplete",
    "clearance": false
  },
  "why": "7 letters with two familiar words; brandability 88/100 and resale-pattern score 40/100. Live registry lookup found no registration; checkout and trademark review are still needed."
}
```

This example is derived from the live-network dog-grooming test on 18 October 2026, which checked 120 candidates and delivered 10 rows using a hand-authored fake-model fixture. The name, registrar identity and site addresses are replaced; other shown numerical fields are retained. The example suffix is anonymized while `tld` retains the original extension. No real AI generation was tested in that run. SUMMARY records counts, limits and source failures; CANDIDATES contains the full checked shortlist.

### Pricing

- **$1.49 per completed hunt**, including up to 240 candidate checks and up to 30 recommendations. One event covers all result rows.
- A hunt is charged only after an actionable ranked result with live registry evidence has been assembled. Failed hunts and invalid inputs produce free diagnostic rows.
- The buyer pays model usage separately through Apify’s gateway. The Actor does not accept or bundle a developer-owned model key. Free local tests used fake-model fixtures, so no measured live AI price is claimed.
- A domain’s registration, renewal, marketplace price or auction bid is a separate purchase. This Actor does not buy anything.

What typical jobs cost at the list price:

| Job | Cost |
|---|---|
| One completed hunt, 120 checks and 10 recommendations | $1.49 plus gateway model usage |
| One completed hunt, up to 240 checks and 30 recommendations | $1.49 plus gateway model usage |
| No actionable results or an invalid input | $0 Actor events; model usage already performed may still be billed |
| Spending cap below $1.49 | $0; no research or model request begins |

Maximum cost per run controls Actor events. The Actor checks room for a hunt before work and charges only on delivery. Gateway model usage is separate and has its own token allowance. Reaching the exact event cap still delivers every row already included in that hunt.

### Tips

- Inspect source dates and follow the acquisition link: inventory can change after a run.
- Look at the renewal term as well as the first-year tariff. Some extensions require multiple years.
- Treat unknown trademark or history fields as unfinished research. An empty public page is not a clean result.
- Start broad, then narrow the extension and style once you see which kinds of names work for your niche.
- The rank is 34% brandability, 29% resale patterns, 20% relevance, 7% style, 5% acquisition-price tier and 5% inverse risk. AI judgments influence brandability and relevance when supplied; the row discloses them.

### Use it through the API

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("zaiq/domain-hunter").call(run_input={"niche": "dog grooming", "country": "ZA", "maxChecks": 120, "maxResults": 10})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row)
```

**JavaScript**

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('zaiq/domain-hunter').call({"niche": "dog grooming", "country": "ZA", "maxChecks": 120, "maxResults": 10});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**HTTP (one call, results back)**

```bash
curl -X POST 'https://api.apify.com/v2/acts/zaiq~domain-hunter/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>' \
  -H 'Content-Type: application/json' \
  -d '{"niche": "dog grooming", "country": "ZA", "maxChecks": 120, "maxResults": 10}'
```

### Integrations and schedules

- **Schedules:** run it every hour, day or week from the Apify Console (Schedules) and keep a history of results.
- **Make, Zapier, n8n, Google Sheets, Slack, Airtable:** connect it through Apify's integrations, or send each finished run to a **webhook**.
- **Datasets:** results stay in the run's dataset; export them or read them by API whenever you need them.

### Use it with AI agents (MCP)

Add Apify's MCP server (`https://mcp.apify.com`) to Claude, ChatGPT, Cursor, VS Code or any MCP client. The agent can find this Actor and run it for you: ask it for "find short, brandable domains for a dog grooming business, including priced names under my budget". AI agents can also pay for runs directly through Apify's agentic payments.

### Limits

- The highest score is the best within this generated and checked pool, not proof of the best name across the whole internet. Naming and resale judgments remain subjective. The final quality review may return fewer names than requested.
- Public registries and sites can refuse requests. Rate limits stop further requests to that source for the run; they are not evaded. Cloud routes try direct access, datacenter and then fresh residential sessions for ordinary refusals.
- .co.za is read from the registry's own WHOIS (the ZA registry's RDAP endpoint does not serve .co.za names) and .io from its registry's RDAP. Extensions with no reachable registry service, such as .co here, fall back to DNS, which cannot establish availability, so those names are never presented as available.
- Marketplace coverage is partial. The tests obtained Sedo public search prices and Park.io auctions; several other candidates returned refusals or empty JavaScript shells. Search prices may not be independently verifiable on a static detail page.
- USPTO’s public signed-out search can return wordmark records without a login or token. It searches across classes and statuses and returns the first five matches, not legal clearance. TMview’s public client includes interactive verification; this Actor leaves that source incomplete.
- Archive coverage is limited to successful HTML captures of the apex root. Counts over 500 become lower bounds, only a few titles are sampled, and missing captures do not prove a clean history.
- Social checks inspect signed-out pages. Login walls, generic 404s and script-only pages return unknown.
- Default scoring favors Latin-letter English naming. It does not reliably judge other languages, IDNs, local pronunciation, trademark similarity or human recall.
- Public sales charts are selective and often contain unusually large sales. Only names with matching extensions, similar lengths and shared words are attached as potential comparisons; they still do not determine a market value.

### FAQ

**Does it guarantee a domain can be registered?**

No. The live registry check establishes whether a registration record was found. Registrar checkout is still needed for reserved names, eligibility and premium pricing.

**Does it buy domains or place bids?**

No. It returns evidence and acquisition links only.

**Are estimated values actual appraisals?**

No. They are broad, low-confidence rules-based screening bands that include zero. Comparable asks and reported sales are labelled separately.

**Can a good paid name outrank a free registration?**

Yes. Public listings within the purchase budget compete on the same brandability, resale, relevance and risk criteria.

**Why is a field unknown?**

The source did not provide enough evidence, refused the request, or reached a request/traffic/time limit. The row and SUMMARY explain the gap.

**What if the AI gateway fails?**

The hunt falls back to deterministic English generation and a conservative word-structure quality filter, with the loss of AI coverage stated in SUMMARY.

**Why can I receive fewer results?**

Weak, unverified, over-budget or conflicting candidates are excluded. The Actor does not fill the list just to reach the requested count.

### Related Actors from Zaiq

- [keyword-research](https://apify.com/zaiq/keyword-research): check search demand for a chosen category
- [website-crawler-by-country](https://apify.com/zaiq/website-crawler-by-country): research public website content for a separate task

### Support

Questions, a site that changed, or a field you need? Open an issue on this Actor's **Issues** tab: we answer there, usually within a day.

***

Also found as: domain hunter, domain name generator, brandable domain finder, domain availability checker, domain investment research, domain marketplace research.

# Actor input Schema

## `niche` (type: `string`):

Describe the business or market in plain words.

## `country` (type: `string`):

Two-letter country code. ZA adds co.za to the default suffixes; local naming variants may reference the country or its regions.

## `tlds` (type: `array`):

Leave empty for com, the country extension when mapped, ai, io, co, app and net. A DNS-only check never proves availability.

## `styles` (type: `array`):

Select the naming styles to favour. The overall rank prioritizes brandability and resale patterns.

## `maxLength` (type: `integer`):

Letters before the extension. Shorter names usually score better; suffix length is excluded.

## `includeForSale` (type: `boolean`):

Read public marketplace listings. Only a published USD price within your budget qualifies for recommendation.

## `includeAuctions` (type: `boolean`):

Read public auctions. Current bids are not final acquisition prices; end times retain the source timezone label.

## `maxDomainBudgetUsd` (type: `number`):

Maximum published acquisition price or current auction bid. This is separate from Actor and model charges. Unknown-price and non-USD listings are excluded, without guessed exchange rates.

## `maxResults` (type: `integer`):

Up to this many strong names. Returns fewer if evidence or quality is insufficient.

## `language` (type: `string`):

Language for AI naming. v1 generates Latin-letter domains; dictionary and phonetic heuristics are English-biased.

## `maxChecks` (type: `integer`):

Offline candidates are cut to this shortlist. Up to 240 checks are included in one hunt; registry rate limits can reduce completed checks.

## `useAI` (type: `boolean`):

Use the newest dated Haiku-family model for investor-style brainstorming and a final quality review of actual actionable names. Failures use a labelled conservative heuristic fallback.

## `maxAiCostUsd` (type: `number`):

Skip a model step if the combined brainstorm and quality-review token ceilings exceed this allowance. Gateway plan multipliers may apply separately; no automatic paid retries.

## `checkSocialHandles` (type: `boolean`):

Signed-out Instagram, TikTok and X pages only. Explicit absence is labelled looks free, never guaranteed. Opaque or blocked platforms become unknown.

## `includeRegistered` (type: `boolean`):

Include strong registered names for reference if no sale listing was found. They are not actionable acquisition offers. Default off.

## Actor input object example

```json
{
  "niche": "dog grooming",
  "country": "ZA",
  "styles": [
    "short brandable",
    "premium/investor"
  ],
  "maxLength": 12,
  "includeForSale": true,
  "includeAuctions": true,
  "maxDomainBudgetUsd": 2500,
  "maxResults": 10,
  "language": "English",
  "maxChecks": 120,
  "useAI": true,
  "maxAiCostUsd": 0.5,
  "checkSocialHandles": true,
  "includeRegistered": false
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset: the results.

## `summary` (type: `string`):

What each input returned, and notes.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "niche": "dog grooming",
    "country": "ZA",
    "styles": [
        "short brandable",
        "premium/investor"
    ],
    "maxResults": 10,
    "maxChecks": 120
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaiq/domain-hunter").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "niche": "dog grooming",
    "country": "ZA",
    "styles": [
        "short brandable",
        "premium/investor",
    ],
    "maxResults": 10,
    "maxChecks": 120,
}

# Run the Actor and wait for it to finish
run = client.actor("zaiq/domain-hunter").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "niche": "dog grooming",
  "country": "ZA",
  "styles": [
    "short brandable",
    "premium/investor"
  ],
  "maxResults": 10,
  "maxChecks": 120
}' |
apify call zaiq/domain-hunter --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaiq/domain-hunter"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/80tQOLQh2plZCCysn/builds/Iw2uMWbZn511HpC80/openapi.json
