Three powerful APIs in one project — bulk availability, domain age, and social media checks. Deploy to Vercel in 60 seconds.
All backed by official registries and real-time data sources.
Check up to 100 domain names across multiple TLDs in a single request. Powered by Verisign — the .com/.net registry operator.
GET /api/bulk-check?names=Zynora,Veltrix&tlds=com,io,ai
Get full domain registration history — age, registration date, expiry, registrar, nameservers, DNSSEC status and more via RDAP.
GET /api/domain-age?domain=admin.com
Check a brand name across 28 domain extensions AND 31 social media platforms simultaneously. Available, taken, or unknown status.
GET /api/check?q=mybrand&type=all
Track full DNS change history — nameserver changes, domain drops, re-registrations, parking events. Uses 5 sources in parallel with Cloudflare bypass.
GET /api/dns-history?domain=example.com
All-in-one endpoint — aggregates WHOIS (RDAP), live DNS records, TLD availability variants, and HTTP reachability in a single call. Choose which modules to run via the include param.
GET /api/info?domain=example.com&include=whois,dns,availability,reachability
Run live requests against the real API endpoints.
Check up to 100 names × 10 TLDs per request. Uses Verisign's official bulk-check API.
curl "https://your-app.vercel.app/api/bulk-check?names=Datafyno,Nexavo&tlds=com,io,ai"
const res = await fetch('/api/bulk-check', {
method : 'POST',
headers: { 'Content-Type': 'application/json' },
body : JSON.stringify({ names: ['Datafyno','Nexavo'], tlds: ['com','io','ai'] })
});
const data = await res.json();
data.results.available.forEach(d => console.log(`✅ ${d.domain} → ${d.register_url}`));
| Param | Type | Required | Description |
|---|---|---|---|
| names | string/array | required | Comma-separated names (no TLD needed). Max 100. |
| tlds | string/array | optional | TLDs to check. Default: com. Max 10. |
| include-registered | bool | optional | Include taken domains. Default: true |
Returns age, registration date, expiry, registrar, nameservers, DNSSEC status. No API key required.
curl "https://your-app.vercel.app/api/domain-age?domain=admin.com"
{
"age": { "years": 31, "months": 5, "days": 15, "total_days": 11475, "category": "Mature" },
"dates": { "registered_human": "November 17, 1994", "expiration_human": "November 16, 2031" },
"expiry": { "days_remaining": 2038, "status": "active" },
"registrar": { "name": "Amazon Registrar, Inc.", "iana_id": "468" },
"nameservers": ["NS-89.AWSDNS-11.COM", ...],
"dnssec": { "signed": false }
}
| Param | Type | Required | Description |
|---|---|---|---|
| domain | string | required | Domain to look up. Auto-strips https:// and www. |
Checks one brand name across 28 domain extensions + 31 social media platforms in parallel.
curl "https://your-app.vercel.app/api/check?q=mybrand&type=all"
| Param | Type | Required | Description |
|---|---|---|---|
| q | string | required | Brand name to check (min 2 chars) |
| type | string | optional | all | domains | social. Default: all |
| tlds | string | optional | Custom TLD list. Default: all 28 |
Full DNS change history — NS changes, drops, re-registrations, parking detection. Uses 5 parallel sources. Add a free SecurityTrails key for full NS history (50 req/month).
curl "https://your-app.vercel.app/api/dns-history?domain=constructionlawyerhouston.com" # With SecurityTrails key for full NS history: curl "https://your-app.vercel.app/api/dns-history?domain=example.com&st_key=YOUR_KEY"
{
"summary": {
"headline": "example.com — 5 changes and 2 drops recorded over 11 years",
"is_parked_now": false,
"has_parked_before": true,
"current_registrar": "Spaceship Registrar",
"current_ns": ["launch1.spaceship.net", "launch2.spaceship.net"],
"has_email": false,
"total_changes": 5,
"total_drops": 2
},
"live": {
"nameservers": ["launch1.spaceship.net"],
"a_records": [],
"mx_records": [],
"meta": { "is_parked": false, "has_email": false }
},
"timeline": {
"first_seen": "2014-06-07",
"total_changes": 5,
"total_drops": 2,
"age_years": 11,
"events": [
{ "date": "2014-06-07", "type": "created", "label": "Domain first seen — nameservers added", "ns_after": "ns37.domaincontrol.com" },
{ "date": "2023-07-19", "type": "dropped", "label": "Domain dropped — nameservers removed" },
{ "date": "2025-07-12", "type": "parked", "label": "Domain parked at Afternic (GoDaddy Aftermarket)", "is_parking": true },
{ "date": "2026-04-15", "type": "created", "label": "Domain re-registered — nameservers added" }
]
},
"ip_history": [ { "date": "2024-01-01", "ip": "1.2.3.4", "owner": "Cloudflare" } ],
"sources": {
"live_dns": true, "hackertarget": true, "viewdns": true,
"dnshistory_org": false, "st_key_provided": false
}
}
| Param | Type | Required | Description |
|---|---|---|---|
| domain | string | required | Domain to look up |
| st_key | string | optional | SecurityTrails API key for full NS history. Free at securitytrails.com (50 req/month) |
unzip domainkit.zip cd domainkit npx vercel --prod
All-in-one domain intelligence. Run 1 to 4 modules per request: whois, dns, availability, reachability. All run concurrently.
curl "https://your-app.vercel.app/api/info?domain=example.com" # or specific modules only: curl "https://your-app.vercel.app/api/info?domain=example.com&include=whois,dns"
// All modules (GET)
const res = await fetch('/api/info?domain=example.com');
const data = await res.json();
console.log(data.summary); // quick overview
console.log(data.whois.age); // registration age
console.log(data.dns.records.mx); // MX records
console.log(data.availability.available); // free TLD variants
console.log(data.reachability.reachable); // is site online?
// Specific modules (POST)
const res2 = await fetch('/api/info', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ domain: 'example.com', include: ['whois','dns'] })
});
const data2 = await res2.json();
{
"success": true,
"domain": "example.com",
"modules_run": ["whois","dns","availability","reachability"],
"elapsed_ms": 843,
"summary": {
"domain": "example.com",
"registered": true,
"age": "29 years, 8 months, 3 days",
"age_category": "Mature",
"registrar": "MarkMonitor Inc.",
"expires": "August 13, 2025",
"expiry_status": "active",
"dns_provider": "Cloudflare",
"mail_provider": "Google Workspace",
"has_ipv6": true,
"reachable": true,
"https": true,
"server": "ECS (nyb/1D10)",
"tld_variants_available":["example.io","example.xyz","example.app"]
},
"whois": { "registered": true, "age": {...}, "dates": {...}, "registrar": {...}, "nameservers": [...] },
"dns": { "records": { "a": [...], "mx": [...], "txt": [...], "ns": [...] }, "analysis": { "dns_provider": "...", "mail_provider": "..." } },
"availability": { "available": [ { "domain": "example.io", "tld": "io", "register_url": "..." } ], "registered": [...] },
"reachability": { "reachable": true, "status_code": 200, "uses_https": true, "server": "...", "response_ms": 213 }
}
| Param | Type | Required | Description |
|---|---|---|---|
| domain | string | required | Domain to query (e.g. example.com) |
| include | string / array | optional | Comma-separated modules: whois,dns,availability,reachability. Defaults to all. |