# Domain Registration Lookup (RDAP) — official ICANN protocol, no (`pappy-dev/domain-rdap-lookup`) Actor

Look up any domain's registration record via RDAP (Registration Data Access Protocol), ICANN's official successor to WHOIS. Get registrar, dates, status codes, nameservers, DNSSEC from IANA's authoritative bootstrap directory. No login, no proxies, no personal data.

- **URL**: https://apify.com/pappy-dev/domain-rdap-lookup.md
- **Developed by:** [Backyard Tools](https://apify.com/pappy-dev) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 domain rdap record scrapeds

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Domain Registration Lookup (RDAP) — official ICANN protocol, no login

Look up any domain's registration record through **RDAP** (Registration Data Access
Protocol) — the official, structured-JSON successor to WHOIS that ICANN has been rolling
out across every registry since 2019 (RFC 7480-7484). This actor resolves the correct
RDAP server for any TLD via IANA's own public bootstrap directory
(`data.iana.org/rdap/dns.json`) and queries it directly — no scraping of WHOIS text output,
no third-party proxy.

### Tested (2026-09-02)

| Domain | Result |
|---|---|
| `apify.com` | registrar Amazon Registrar, registered 2009-06-02, expires 2035-06-02 |
| `example.org` | registrar reserved by IANA, `redacted` fields flagged by the registry itself |
| (unregistered domain) | 0 items — RDAP returns 404, handled cleanly |

### RDAP lookup API — input

```json
{
  "targets": ["apify.com", "example.org"],
  "maxItems": 500
}
```

Each target is one domain name. A domain with no RDAP record (unregistered, or a TLD not
yet in IANA's RDAP directory) simply returns 0 items — no charge.

### RDAP lookup API — output fields

One dataset item per domain:

| Field | |
|---|---|
| `domain` | the domain name (ASCII form) |
| `unicode_name` | IDN/unicode form if applicable |
| `status` | EPP status codes (e.g. `client transfer prohibited`), comma-joined |
| `registrar_name` | the registrar of record |
| `registrar_iana_id` | the registrar's IANA-assigned ID number |
| `registration_date` / `expiration_date` / `last_changed_date` | domain lifecycle dates |
| `nameservers` | comma-joined list of authoritative nameservers |
| `dnssec_signed` | whether DNSSEC delegation is signed |
| `redacted_fields` | which fields the registry itself flagged as redacted (GDPR-era privacy) |
| `rdap_server` | which registry's RDAP server answered |

**No personal data**: since 2018 (ICANN Temp Spec / GDPR), virtually every registry strips
registrant name, email, phone, and address from RDAP responses by default. This actor goes
further and never reads or outputs any email/phone/address field even if a registry happens
to include one — only registrar and domain lifecycle data.

### Use Cases

- **Domain portfolio monitoring**: bulk-check expiration and registrar status across your
  entire domain inventory in one run
- **Brand protection**: detect when a competitor's or infringing domain's registration
  details change
- **M\&A / vendor due diligence**: verify who actually controls a domain before a deal or
  contract
- **Lead-gen timing**: registrar or nameserver changes are a common signal that a site is
  migrating or changing hands

### Why this over a WHOIS lookup site

Classic WHOIS is unstructured text with a different format per registry. RDAP is the same
data in structured JSON straight from the authoritative source — no parsing plain-text
whois output, no rate-limited third-party WHOIS proxies. This actor batches lookups across
any number of domains and TLDs in one run.

### Pricing

Pay per event: **$2.00 per 1,000 domain records** collected. Nothing else.

# Actor input Schema

## `targets` (type: `array`):

調べたいドメイン名（例: example.com）。複数指定可。IANA未収載の TLD や未登録ドメインは 0 件で自然停止

## `maxItems` (type: `integer`):

1 run で取得する最大件数

## Actor input object example

```json
{
  "targets": [
    "apify.com"
  ],
  "maxItems": 500
}
```

# Actor output Schema

## `items` (type: `string`):

取得した各件（type=item）と、選択した分析の結果（type=analysis）

## `overview` (type: `string`):

件数・平均評点・期間・ネガティブ比率（下側信頼限界つき）

# 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 = {
    "targets": [
        "apify.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("pappy-dev/domain-rdap-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 = { "targets": ["apify.com"] }

# Run the Actor and wait for it to finish
run = client.actor("pappy-dev/domain-rdap-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 '{
  "targets": [
    "apify.com"
  ]
}' |
apify call pappy-dev/domain-rdap-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pappy-dev/domain-rdap-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/IxI6WUZmS4XRFEkbM/builds/qzVc4ixMDXqed3YRu/openapi.json
