# Bulk WHOIS Lookup: Domain Expiry & Availability (RDAP) (`tidyfold/domain-whois-lookup`) Actor

$0.0015 per domain. Bulk WHOIS/RDAP for any domain list: registrar, created and expiry dates, days to expiry, nameservers, and whether it's available.

- **URL**: https://apify.com/tidyfold/domain-whois-lookup.md
- **Developed by:** [Tidyfold Tools](https://apify.com/tidyfold) (community)
- **Categories:** Developer tools, SEO tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 domain checkeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Bulk WHOIS Lookup: Domain Expiry & Availability (RDAP)

**Bulk WHOIS Lookup** checks **hundreds of domains** in one run through each registry's **official RDAP** service: registrar, **creation and expiry dates**, days until expiry, nameservers and whether the domain is **available**. **$0.0015 per domain**, failed lookups free.

### How to use it

1. Paste your domains (full URLs and `www.` are fine).
2. Turn on *Only output available domains* if you're hunting for free names.
3. Click **Start** and export the results as Excel, CSV or JSON.

### What you get for each domain

| Field | Example |
|---|---|
| status / available | `registered` / `false` |
| registrar, registrarIanaId | MarkMonitor Inc., 292 |
| createdDate, updatedDate, expiryDate | ISO 8601 timestamps |
| daysUntilExpiry, domainAgeDays | 84, 9020 |
| eppStatus | client transfer prohibited, ... |
| nameservers | ns0.wikimedia.org, ... |
| dnssec | true / false |
| registrantOrganization | Only when the registry publishes it (privacy-redacted values are dropped) |
| abuseEmail | Registrar abuse contact |
| source, lookupUrl | `rdap` and the exact registry URL queried |

### Features

- 1,200+ TLDs through the IANA RDAP bootstrap list (.com, .net, .org, .uk, .au, .app, .dev and most new gTLDs)
- Classic port-43 WHOIS fallback for ccTLDs that have no RDAP service yet
- Accepts messy input: full URLs, `www.`, upper case, duplicates
- "Only available" mode for domain hunting and brainstorming lists
- Lookups that fail (timeouts, registry errors) are returned with an error and **not charged**

### Use cases

Expiry monitoring for a domain portfolio, checking which brand-name ideas are free, lead enrichment (domain age and registrar of prospects), brand-protection and lookalike-domain checks, SEO and expired-domain research.

### Notes

RDAP data is published by the registries for public lookup; some registries (for example DENIC for .de) limit how their data may be reused, so check the registry's terms for your use case. Registrant names, emails and addresses are usually redacted under GDPR/ICANN policy; this tool returns only what the registry publishes. "Available" means the registry has no record of the domain; premium or reserved names can still be unavailable to buy.

### Input example

```json
{
  "domains": ["apify.com", "wikipedia.org", "my-new-brand-idea.com"],
  "onlyAvailable": false
}
```

### How much does it cost to check 1,000 domains?

Pay per event: you pay only for results.

**Example:** 1,000 domains cost **$1.50**; 100 cost **$0.15**.

Apify also charges its standard run-start fee of $0.00005 per GB of run memory (a fraction of a cent per run). The exact prices are always on the **Pricing** tab, and you can cap any run with *Maximum cost per run*.

### FAQ

**Do I pay for failed lookups?**
No. Timeouts and registry errors are returned with an error and not charged.

**Why is the registrant name missing?**
Most registries redact registrant details under GDPR/ICANN policy; this tool returns only what the registry publishes.

**Does available mean I can buy it?**
It means the registry has no record of the domain. Premium or reserved names can still be unavailable.

### More Tidyfold tools

| Tool | Use it for |
|---|---|
| [Website Screenshot API: Bulk, Full-Page & Mobile](https://apify.com/tidyfold/website-screenshot) | website screenshot API |
| [HTML to PDF Converter API: URL & HTML to PDF](https://apify.com/tidyfold/web-to-pdf) | HTML to PDF |
| [PDF Table Extractor: PDF to Excel, CSV & JSON](https://apify.com/tidyfold/pdf-tables-to-csv) | PDF to Excel |
| [Invoice & Receipt Parser: PDF to JSON (No AI Key)](https://apify.com/tidyfold/invoice-pdf-to-json) | invoice parser |
| [PDF OCR: Scanned PDF to Text Extractor](https://apify.com/tidyfold/pdf-text-ocr) | PDF OCR |
| [NPI Registry Scraper: US Healthcare Provider Leads](https://apify.com/tidyfold/npi-provider-lookup) | NPI registry scraper |
| [Contractor License Scraper: Texas, Colorado & Washington](https://apify.com/tidyfold/trade-license-lookup) | contractor license lookup |
| [New Business Leads: Newly Registered LLCs (CO, NY, OR)](https://apify.com/tidyfold/new-business-filings) | new business leads |
| [Contact Details Scraper: Emails, Phones & Tech Stack](https://apify.com/tidyfold/website-contact-finder) | contact details scraper |
| [Sitemap Extractor: Get All URLs from Any Website](https://apify.com/tidyfold/sitemap-url-extractor) | sitemap extractor |

### Use it from code or no-code tools

Every run can be started from the Apify API, the Apify Python/JS clients, or connected to n8n, Make, Zapier and Google Sheets through Apify integrations. Results download as JSON, CSV, Excel or XML.

```python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("tidyfold/domain-whois-lookup").call(run_input={'domains': ['apify.com', 'wikipedia.org', 'my-new-brand-idea.com'], 'onlyAvailable': False})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### Support

Found a bug or need a field added? Open an issue on the **Issues** tab. Tidyfold maintains these tools daily and usually replies within 1 business day.

# Actor input Schema

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

Domain names to look up, one per line. Full URLs and www. prefixes are cleaned automatically. Duplicates are skipped.

## `onlyAvailable` (type: `boolean`):

Output only domains that look unregistered. Every checked domain is still charged.

## `concurrency` (type: `integer`):

How many domains to look up at once (1-10). Lower it if a registry rate-limits you.

## Actor input object example

```json
{
  "domains": [
    "apify.com",
    "wikipedia.org",
    "bbc.co.uk",
    "tidyfold-example-unregistered-4821.com"
  ],
  "onlyAvailable": false,
  "concurrency": 5
}
```

# Actor output Schema

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

Domains returned by the run (one item per row).

# 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": [
        "apify.com",
        "wikipedia.org",
        "bbc.co.uk",
        "tidyfold-example-unregistered-4821.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tidyfold/domain-whois-lookup").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": [
        "apify.com",
        "wikipedia.org",
        "bbc.co.uk",
        "tidyfold-example-unregistered-4821.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("tidyfold/domain-whois-lookup").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": [
    "apify.com",
    "wikipedia.org",
    "bbc.co.uk",
    "tidyfold-example-unregistered-4821.com"
  ]
}' |
apify call tidyfold/domain-whois-lookup --silent --output-dataset

```

## MCP server setup

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

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/NXo5Z7c4OGIjXp05S/builds/ysIwCh2PS9qopYcXr/openapi.json
