# Domain Availability Checker - Bulk Check Any Extension (`pipiagent/domain-availability-checker`) Actor

Check if domains are available or taken, in bulk: thousands of names across .com, .io, .ai, .co, .de and 1,200+ extensions in one run. Registered names come with registrar, creation and expiry dates and status, so you can spot names about to drop. $2 per 1,000 domains. No API key.

- **URL**: https://apify.com/pipiagent/domain-availability-checker.md
- **Developed by:** [Frank0306](https://apify.com/pipiagent) (community)
- **Categories:** Developer tools, SEO tools, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 results

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 Availability Checker

Check whether domain names are available or already taken, thousands at a time. Paste your name ideas or a portfolio, press Start, and get one row per domain: `available`, `registered` or `unknown`, plus the registrar, creation and expiry dates and status for every registered name.

Use it to brainstorm brand names across many extensions, to find names that are about to drop, or to check a portfolio's expiry dates.

- **Bulk.** 1,000 domains in about 3 minutes, across .com, .net, .org, .io, .ai, .co, .app, .dev, .de, .uk and 1,200+ other extensions.
- **Official registry data.** Answers come from the registries' own RDAP servers (the modern replacement for WHOIS), found through the official IANA list, with WHOIS for several country domains that have no RDAP.
- **More than yes or no.** Registered names show registrar, creation and expiry dates, days until expiry, status codes and a `lifecycleStage` that flags names in their redemption or pending-delete period.
- **Paste anything.** Domains, URLs and email addresses work. Subdomains, duplicates and international names are handled for you.
- **No API key, no login, no proxy.**
- **Low price.** $2 per 1,000 domains. Invalid inputs are free.

### How to use it

1. Click **Try for free**.
2. Paste your domains into **Domains**, one per line.
3. Click **Start**, then download the results as JSON, CSV or Excel.

Optional: turn on the DNS, SSL and Majestic rank checks for a full report on registered domains. The price stays the same; the run gets slower.

### Input example

```json
{
    "domains": ["mybrand.com", "mybrand.io", "mybrand.ai", "mybrand.co", "mybrand.de", "mybrand.app"]
}
```

### Output examples

An available domain:

```json
{
    "input": "qzvj0de9gyd7o.com",
    "domain": "qzvj0de9gyd7o.com",
    "tld": "com",
    "valid": true,
    "registered": false,
    "availability": "available",
    "registrationSource": "rdap",
    "rdapUrl": "https://rdap.verisign.com/com/v1/domain/qzvj0de9gyd7o.com"
}
```

A registered domain:

```json
{
    "input": "stripe.com",
    "domain": "stripe.com",
    "registered": true,
    "availability": "registered",
    "registrationSource": "rdap",
    "lifecycleStage": "active",
    "registrar": "SafeNames Ltd.",
    "createdAt": "1995-09-12T04:00:00Z",
    "expiresAt": "2027-09-11T04:00:00Z",
    "domainAgeDays": 11369,
    "daysUntilExpiry": 317,
    "statusCodes": ["clientDeleteProhibited", "clientTransferProhibited", "clientUpdateProhibited"],
    "nameservers": ["ns-1087.awsdns-07.org", "ns-423.awsdns-52.com"]
}
```

A domain that is about to drop:

```json
{
    "domain": "5fvfofc9f.online",
    "registered": true,
    "lifecycleStage": "pendingDelete",
    "expiresAt": "2026-09-12T23:59:59Z",
    "daysUntilExpiry": -46,
    "statusCodes": ["pendingDelete", "serverHold", "redemptionPeriod"]
}
```

### How much does it cost?

You pay per checked domain: **$2.00 per 1,000 domains**. There is no start fee and no monthly rental. Invalid inputs and duplicates are not charged.

| Run | Domains | Cost |
|---|---|---|
| Name ideas across 10 extensions | 100 | $0.20 |
| A brainstorm list | 1,000 | $2.00 |
| A large portfolio | 10,000 | $20.00 |

Set a maximum charge per run in the run options and the Actor stops when it is reached.

### Limits you should know

- **"Available" is a strong hint, not a guarantee.** It means the registry has no record of the name. Premium, reserved or blocked names can still be impossible to register or cost more, and someone can register the name after the check. Always confirm at a registrar before you buy.
- **Not every country domain has a free public data source.** For extensions such as .es, .pt, .nz, .hk, .gr, .vn, .za and .cl, a domain is marked `registered` when it has name servers in DNS, and otherwise `unknown`, with the reason in `checkNote`. In a test of 192 domains across 45 extensions, 4 stayed unknown.
- **Some registries publish very little.** .de shows no dates and no registrar; .nl, .at and .be show no expiry date.
- **Owner data is usually hidden** since the GDPR. Names, emails and phone numbers are never collected.
- **WHOIS countries are slower.** WHOIS servers are asked about one domain per second, so 1,000 .ru domains take about 20 minutes.

### Related Actors

- [Domain Checker](https://apify.com/pipiagent/domain-checker): the same data with DNS, SPF and DMARC, SSL certificate and Majestic Million rank turned on by default.
- [Website Email Extractor](https://apify.com/pipiagent/website-email-extractor): find the email addresses on a list of websites.

### FAQ

**Is it legal?** The Actor uses public registry services (RDAP and WHOIS) and public DNS. It does not log in anywhere. WHOIS servers allow normal queries but forbid using their data for spam or reselling it as a database, so use the results for your own research.

**Does it register domains?** No. It only checks them.

**Something is broken or missing?** Open a ticket in the Issues tab. Issues are usually answered within a day.

# Actor input Schema

## `domains` (type: `array`):

Domains to check, one per line. You can also paste website URLs or email addresses: the domain is taken from them. Subdomains like www.example.com are checked as example.com. Duplicates are removed.

## `useWhoisFallback` (type: `boolean`):

For .jp, .cn, .eu, .it, .se, .nu, .dk, .at, .be, .ru, .su, .mx and .tr, ask the registry's WHOIS server, because these registries have no public RDAP server.

## `checkDns` (type: `boolean`):

Add A, AAAA, MX, NS and TXT records, the SPF and DMARC records, and whether the domain has a website and email.

## `checkSsl` (type: `boolean`):

Read the HTTPS certificate of the website: issuer, valid from and to, days left and whether it is trusted.

## `addMajesticRank` (type: `boolean`):

Add the domain's rank in the Majestic Million list of the 1 million domains with the most referring subnets, plus its number of referring subnets and IP addresses (empty when the domain is not in the list).

## Actor input object example

```json
{
  "domains": [
    "mybrand.com",
    "mybrand.io",
    "mybrand.ai",
    "mybrand.co",
    "apify.com"
  ],
  "useWhoisFallback": true,
  "checkDns": false,
  "checkSsl": false,
  "addMajesticRank": false
}
```

# Actor output Schema

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

One result per domain.

# 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 = {
    "domains": [
        "mybrand.com",
        "mybrand.io",
        "mybrand.ai",
        "mybrand.co",
        "apify.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pipiagent/domain-availability-checker").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 = { "domains": [
        "mybrand.com",
        "mybrand.io",
        "mybrand.ai",
        "mybrand.co",
        "apify.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("pipiagent/domain-availability-checker").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 '{
  "domains": [
    "mybrand.com",
    "mybrand.io",
    "mybrand.ai",
    "mybrand.co",
    "apify.com"
  ]
}' |
apify call pipiagent/domain-availability-checker --silent --output-dataset

```

## MCP server setup

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

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/Co8FRXSCbVPuUbjmf/builds/92gKJWk3Brvn0AXu0/openapi.json
