# Domain Age Checker — Bulk RDAP Lookup (`accurate_pouch/domain-age-checker`) Actor

Check domain age, registration date, expiration, registrar, and nameservers for any list of domains. No API key needed — uses the public RDAP standard. Perfect for SEO research, fraud detection, lead enrichment, and domain investing.

- **URL**: https://apify.com/accurate\_pouch/domain-age-checker.md
- **Developed by:** [Manchitt Sanan](https://apify.com/accurate_pouch) (community)
- **Categories:** Developer tools, SEO tools
- **Stats:** 0 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Age Checker — Bulk RDAP Lookup

Check the age, registration date, expiration date, registrar, and nameservers for any list of domains — in bulk, in seconds, with no API key required.

Uses the public RDAP (Registration Data Access Protocol) standard, which replaced WHOIS and is maintained by IANA. Results are structured JSON, ready to export to CSV or feed into your own pipeline.

---

### Use cases

- **SEO research** — Filter out freshly registered domains when building link profiles. Old, authoritative domains carry more weight.
- **Domain investing** — Quickly screen hundreds of domains to find aged assets worth acquiring.
- **Fraud & brand protection** — Detect newly registered lookalike domains targeting your brand before they are weaponized.
- **Competitor intelligence** — Find out when your competitors' domains were registered, and how close their renewals are.
- **Lead enrichment** — Append domain age to your CRM data for scoring and qualification.
- **Expired domain hunting** — Cross-reference expiration dates against your prospect list.

---

### Input

```json
{
    "domains": [
        "example.com",
        "google.com",
        "github.com"
    ],
    "maxConcurrency": 5
}
````

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `domains` | array of strings | Yes | — | Domain names to look up. Do not include `http://` or trailing slashes. |
| `maxConcurrency` | integer | No | `5` | Parallel RDAP requests (1–50). Higher = faster, but may hit RDAP rate limits for large batches. |

***

### Output

Each domain produces one item in the dataset:

```json
{
    "domain": "example.com",
    "registered": "1995-08-14",
    "expires": "2025-08-13",
    "ageInDays": 10606,
    "ageInYears": 29.0,
    "registrar": "ICANN",
    "nameservers": [
        "a.iana-servers.net",
        "b.iana-servers.net"
    ],
    "status": "active",
    "error": null
}
```

| Field | Description |
|-------|-------------|
| `domain` | Normalised domain name |
| `registered` | Registration date (YYYY-MM-DD), or `null` if unavailable |
| `expires` | Expiration date (YYYY-MM-DD), or `null` if unavailable |
| `ageInDays` | Days since registration as of run date |
| `ageInYears` | Age rounded to 1 decimal place |
| `registrar` | Registrar name from RDAP, or `null` |
| `nameservers` | Array of nameserver hostnames |
| `status` | `active`, `not-registered`, or `error` |
| `error` | Error message if status is `error`, otherwise `null` |

#### Status values

- **`active`** — Domain is registered; full data returned.
- **`not-registered`** — Domain returned a 404 from RDAP (unregistered or new TLD not in RDAP).
- **`error`** — RDAP query failed (timeout, network error, unexpected response).

***

### Pricing

**$0.003 per domain successfully resolved** (pay-per-event pricing).

- Unregistered domains (404) and errors are **not charged**.
- 1,000 domains = $3.00
- 10,000 domains = $30.00

***

### Performance

- Default concurrency: 5 parallel requests
- Typical latency: 300–800 ms per domain (depends on TLD's RDAP server)
- Recommended max: 20 concurrent for large batches to avoid rate limits

***

### Limitations

- RDAP coverage depends on the TLD. Most gTLDs (`.com`, `.net`, `.org`, `.io`) and many ccTLDs are supported. Some legacy or exotic TLDs may fall back to error status.
- RDAP servers occasionally omit fields like registrar or expiration. In those cases the field is `null`.
- This actor does not use WHOIS as a fallback — RDAP only.

***

### No API key required

This actor uses the public RDAP standard (`https://rdap.org/`). No authentication, no API keys, no rate-limit tiers to manage.

***

### Example: bulk domain age filter for link building

```json
{
    "domains": [
        "moz.com",
        "semrush.com",
        "ahrefs.com",
        "majestic.com",
        "spyfu.com"
    ],
    "maxConcurrency": 10
}
```

Output will tell you which of these tools has the oldest domain, useful for trust and authority comparisons.

***

### Related Tools by manchittlab

- **[Broken Link Checker](https://apify.com/accurate_pouch/broken-link-checker)** — Recursively crawl your website and find every broken link, 404, redirect, and timeout.
- **[Email Validator Pro](https://apify.com/accurate_pouch/email-validator)** — Bulk email validation with SMTP check, 5,300+ disposable domains, deliverability scoring.
- **[Lighthouse Auditor](https://apify.com/accurate_pouch/lighthouse-auditor)** — Batch Lighthouse audits for performance, SEO, accessibility, and Core Web Vitals.
- **[Image Processor](https://apify.com/accurate_pouch/image-processor)** — Batch resize, convert to WebP/AVIF, compress, watermark. Powered by sharp.
- **[Tech Stack Detector](https://apify.com/accurate_pouch/tech-stack-detector)** — Detect frameworks, CMS, analytics, CDN, and 100+ technologies for any URL.
- **[Google Sheets Reader & Writer](https://apify.com/accurate_pouch/google-sheets-rw)** — Read any Google Sheet to JSON or append rows. Service Account auth.

***

### Run on Apify

[![Run on Apify](https://apify.com/static/run-on-apify.svg)](https://apify.com/accurate_pouch/domain-age-checker)

No setup needed. Click above to run in the cloud. $0.003 per operation.

# Actor input Schema

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

List of domain names to check (e.g. example.com, google.com). Do not include http:// or trailing slashes.

## `maxConcurrency` (type: `integer`):

Number of domains to query in parallel. Higher values are faster but may trigger rate-limits on RDAP servers.

## Actor input object example

```json
{
  "domains": [
    "example.com",
    "google.com",
    "github.com"
  ],
  "maxConcurrency": 5
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("accurate_pouch/domain-age-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 = {}

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

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

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

```

## CLI example

```bash
echo '{}' |
apify call accurate_pouch/domain-age-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=accurate_pouch/domain-age-checker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Domain Age Checker — Bulk RDAP Lookup",
        "description": "Check domain age, registration date, expiration, registrar, and nameservers for any list of domains. No API key needed — uses the public RDAP standard. Perfect for SEO research, fraud detection, lead enrichment, and domain investing.",
        "version": "0.1",
        "x-build-id": "a2ze2u4t4EsCPxAuP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/accurate_pouch~domain-age-checker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-accurate_pouch-domain-age-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/accurate_pouch~domain-age-checker/runs": {
            "post": {
                "operationId": "runs-sync-accurate_pouch-domain-age-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/accurate_pouch~domain-age-checker/run-sync": {
            "post": {
                "operationId": "run-sync-accurate_pouch-domain-age-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "domains"
                ],
                "properties": {
                    "domains": {
                        "title": "Domains",
                        "type": "array",
                        "description": "List of domain names to check (e.g. example.com, google.com). Do not include http:// or trailing slashes.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Number of domains to query in parallel. Higher values are faster but may trigger rate-limits on RDAP servers.",
                        "default": 5
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
