Founding offer: 40% off the first payment on selected apps with code FOUNDING40, until 30 November 2026.40% off selected apps’ first payment: FOUNDING40 until 30 Nov. See founding prices

How to check many domain names for availability at once

Paste your domain names, or a few keywords and extensions, into the Bulk Domain Availability Checker Actor on Apify and start a run. You get one row per name with a status of available, registered, unknown or invalid, and you can download the list as CSV or Excel.

When this is the right tool

Disclosure: Atesen Software makes this Actor. It is on the Apify Store as Bulk Domain Availability Checker.

To test three or four names, use the search box of a domain registrar. The Actor helps when you have a long list, or when you want to try a few keywords against several extensions, with optional prefixes and suffixes. It checks the names and does not register or buy them.

It accepts two kinds of input. domains takes full names such as example.com. keywords takes words without dots, and the Actor combines them with the extensions you pick in tlds.

How it decides

Each name is checked in two ways. The Actor asks DNS whether the name has name servers. It also asks the registry's RDAP service, which is the public registration data service for the extension, whether it holds a record. The Actor reads the registry list that IANA publishes. It needs no proxy and no API key.

  • available: DNS shows no name servers and RDAP has no record. One signal alone is not enough.
  • registered: DNS finds name servers, or RDAP has a record.
  • unknown: the two sources disagree, or the registry refuses, throttles, times out or fails. The Actor does not guess. These rows are free.
  • invalid: the input is not a usable domain name. These rows are free too.

Supported extensions for the keyword mode are com, net, org, info, ai, tech, online, site and store. Names under other extensions only get a DNS check, so they can come back as registered or unknown and never as available.

1. Enter names or keywords

Open the Actor in Apify Console, choose the JSON input editor and paste your list. This is the input of a real run (run ID JdQNfghr7XxTxISk1, build 1.0.3, 12 November 2026). It checks three known names and one random keyword in three extensions.

{
  "domains": ["apify.com", "wikipedia.org", "example.net"],
  "keywords": ["qv8jt5xr2ymk6dnh"],
  "tlds": ["com", "net", "org"],
  "includeRegistrationDetails": false,
  "maxDomains": 100,
  "maxConcurrency": 3,
  "rdapMinIntervalMs": 1000
}

We chose the random keyword because it is almost certainly unregistered. For your own brainstorm, the Actor page gives this example: keywords: ["brightfern"], tlds: ["com", "ai"], prefixes: ["try"]. It checks brightfern.com, brightfern.ai, trybrightfern.com and trybrightfern.ai. We did not run that example for this guide.

  • prefixes and suffixes add words before or after each keyword. The plain keyword is always checked too.
  • includeRegistrationDetails is off by default. When on, names that are taken also get a registry lookup for registrar and dates.
  • maxDomains runs from 1 to 500 and defaults to 100. Names beyond the cap are dropped and counted in the summary.
  • maxConcurrency runs from 1 to 5. rdapMinIntervalMs is the pause between requests to the same registry, from 1,000 to 10,000 milliseconds. You cannot go faster than 1,000.

The real run took about 3 seconds and checked 6 names. It sent 3 requests to registries, none were throttled or refused.

2. Read the rows

The run wrote 6 rows: 3 registered and 3 available. This is the first available row. The three known names came back registered from DNS alone, with rdapResult set to not-queried, so the registry was only asked about the keyword names.

{
  "domain": "qv8jt5xr2ymk6dnh.com",
  "input": "qv8jt5xr2ymk6dnh",
  "tld": "com",
  "status": "available",
  "evidenceSource": "rdap+dns",
  "dnsResult": "nxdomain",
  "rdapResult": "not-found",
  "registeredAt": null,
  "expiresAt": null,
  "registrar": null,
  "registryStatus": null,
  "reason": null,
  "checkedAt": "2026-11-12T19:07:54.130Z"
}
  • evidenceSource shows which check backed the answer: dns, rdap or rdap+dns.
  • dnsResult is has-ns, nxdomain, nodata or error. rdapResult is found, not-found, rate-limited, error, skipped or not-queried.
  • registeredAt, expiresAt, registrar and registryStatus are filled when the registry returns a record. Switch on includeRegistrationDetails to get them for taken names.
  • reason explains every unknown or invalid row.

Open the dataset, choose Export and download CSV or Excel. Filter the status column for available. The key-value store holds a SUMMARY record with the count per status, how many results were charged and how many names the cap dropped. In this run the summary said 6 requested, 3 available, 3 registered, 0 unknown and 0 invalid.

Run the unknown rows again later. A throttled registry often answers on the next try.

Limits

  • Available is a point-in-time result, not a registration guarantee. Someone can register the name a minute later. Confirm the name with your registrar before you build on it.
  • No price, no premium or reserved-name information. A name can be offered at a premium price, or held back by a registry. The Actor does not report that. Your registrar does.
  • Nine extensions only for a full check. Country-code extensions such as .de, .uk, .nl and .io are not supported for availability. Only second-level names work, and a run takes at most 500 names.
  • Registries set rate limits. The Actor waits at least one second between requests to the same registry. When a registry refuses or throttles, the names it could not answer come back as unknown, and that registry is not asked again in the same run.
  • Keep runs small. Registry terms restrict high-volume automated queries. The Actor page advises against checking the same list again and again on a schedule. It suits one-off decisions.
  • It does not register domains. It also does not check trademarks, social media handles or whether a name is a good idea.

Pricing is pay per event. A name with a definitive result, available or registered, is one charge. Unknown and invalid rows are free. See the Actor page for current pricing, and set a maximum cost per run to cap spending. The details in this guide come from the Actor page, checked on 12 November 2026, and from the real run above.

Questions

How do I check many domain names at once?

Put the full names in the domains field, or put keywords in keywords and pick extensions in tlds, then start the run. Each name gets one row with its status. Download the dataset as CSV or Excel.

How does the Actor know a domain is available?

It asks DNS and the registry's RDAP service. A name is available only when DNS shows no name servers and RDAP has no record. If the answers disagree, or a registry throttles the request, the row says unknown.

Can I register the domains from the list?

Check with your registrar first. A result of available is a snapshot, and premium or reserved names can have a different price or not be for sale. The Actor does not register or buy domains.

Why do I get unknown instead of available?

The two sources disagreed, or a registry refused, throttled or failed to answer. The Actor prefers unknown to a wrong available. Unknown rows are free, and you can run them again later.

Does it work for .de, .uk or .io?

Not for availability. Only com, net, org, info, ai, tech, online, site and store get a full check. Other extensions get a DNS check, which can say registered or unknown but never available.

Try the Actor

Disclosure: Atesen Software makes this Actor. Start with a short list and check the current pricing on the Actor page.

Open Bulk Domain Availability Checker on Apify