RDAPify is a production-grade RDAP client ecosystem for querying domain, IP, ASN, nameserver, and entity registration data. It replaces legacy WHOIS with a structured, standards-compliant (RFC 7483) approach — built for security, observability, and scale.
|
TypeScript / JavaScript · MIT The core library. Works in Node.js 20+, Bun, Deno, and Cloudflare Workers. npm install rdapify |
Rust · MIT Native-performance Rust library. Also published as cargo add rdapify |
Rust (napi-rs native addon) · Commercial Premium plugin for npm install @rdapify/pro |
import { RDAPClient } from 'rdapify';
const client = new RDAPClient();
// Domain lookup
const domain = await client.domain('example.com');
console.log(domain.registrar, domain.status);
// IP lookup
const ip = await client.ip('8.8.8.8');
console.log(ip.network.name, ip.network.cidr);
// ASN lookup
const asn = await client.asn(15169);
console.log(asn.name);
// Domain availability
const result = await client.checkAvailability('example.com');
console.log(result.available, result.expiresAt);CLI:
npx rdapify domain example.com
npx rdapify ip 1.1.1.1
npx rdapify asn 13335| Feature | Since | |
|---|---|---|
| 🛡️ | SSRF Protection — blocks private/loopback/reserved IPs | v0.1.0 |
| 🔒 | PII Redaction — GDPR/CCPA-compliant data scrubbing | v0.1.0 |
| ⚡ | Smart Cache — in-memory, Redis, and persistent backends | v0.1.0 |
| 🔄 | Middleware Hooks — beforeQuery / afterQuery pipeline |
v0.1.5 |
| 📊 | Metrics & Audit Logging — structured, redacted by default | v0.1.5 |
| 🌐 | Multi-Runtime — Node.js, Bun, Deno, Cloudflare Workers | v0.2.1 |
| ⚙️ | Circuit Breaker — protects against cascading failures | v0.2.0 |
| 🔍 | Domain Availability — checkAvailability() via RDAP 404 |
v0.1.9 |
| 🏎️ | Native Backend — optional Rust binding via rdapify-nd |
v0.1.0 |
| 🖥️ | CLI Tool — rdapify binary with full query support |
v0.1.8 |
| Runtime | Status | Notes |
|---|---|---|
| Node.js 20+ | ✅ Stable | Primary target |
| Bun | ✅ Stable | Auto-detected, uses Bun.fetch |
| Deno | ✅ Stable | Auto-detected, uses native fetch |
| Cloudflare Workers | ✅ Stable | Auto-detected, edge-compatible |
No configuration needed — RDAPClient selects the right fetcher automatically.
rdapify follows a hexagonal (Ports & Adapters) architecture:
Query → Validate → Normalize → Cache? → Bootstrap → Fetch → Normalize → Redact PII → Cache → Return
Inner layers (core/, shared/) never depend on outer layers (infrastructure/). The plugin interface allows @rdapify/pro to attach to RDAPClient without modifying the core.
- Core query engine — domain, IP, ASN, nameserver, entity
- SSRF protection & PII redaction
- In-memory + Redis cache
- Middleware hooks with priority ordering
- Metrics, audit logging, rate limiting
- CLI tool
- Multi-runtime support (Node.js, Bun, Deno, Cloudflare Workers)
- Circuit breaker
- Domain availability check (
checkAvailability) - WebSocket streaming for bulk operations (Q2 2026)
- GraphQL gateway (Q3 2026)
- Real-time change monitoring (v1.0, Q1 2027)
- Core RDAP client in pure Rust
- Node.js binding (
rdapify-ndvia napi-rs) - Python binding (
rdapify-pyvia PyO3) - Domain availability type
- Custom bootstrap server overrides
- Async Python binding (Q2 2026)
- WASM target (Q3 2026)
- License validation
- Bulk monitoring & change detection
- Analytics & reporting
- Webhook integrations (Slack, Discord, Teams)
- Export (CSV, JSON, PDF)
- Web dashboard (Q2 2026)
- Terraform provider (Q4 2026)
Target: v1.0.0 — February 2027
- SSRF protection blocks all RFC 1918, loopback, and reserved ranges
- Input validation on all query types (domain, IP, ASN, handle)
- No credentials or PII logged — audit log is redacted by default
- Responsible disclosure: security@rdapify.com
| Channel | Link |
|---|---|
| Documentation | rdapify.com/docs |
| GitHub Discussions | github.com/rdapify/RDAPify/discussions |
| Bug Reports | github.com/rdapify/RDAPify/issues |
| support@rdapify.com | |
| Security | security@rdapify.com |
MIT License · Built with care · rdapify.com
