BKNS Whois API
REST API tra cứu thông tin WHOIS và kiểm tra khả dụng tên miền.
Hỗ trợ 1.260+ TLD · Dữ liệu .vn từ VNNIC chính thức · Độ trễ < 200ms
Tất cả request qua HTTPS. Phản hồi JSON, encoding UTF-8.
Xác thực
Đính kèm API key vào header X-API-Key trong mọi request. Thiếu key hoặc key sai → HTTP 401.
GET /api/v1/whois?domain=bkns.vn X-API-Key: bkns_par_xxxxxxxxxxxxxxxxxx Content-Type: application/json
Rate Limits
Giới hạn request theo tier. Vượt ngưỡng → 429 Too Many Requests kèm header Retry-After.
X-RateLimit-Limit: 300 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1711234567 Retry-After: 15
GET WHOIS Lookup
Tra cứu thông tin WHOIS đầy đủ: chủ sở hữu, nhà đăng ký, ngày tạo/hết hạn, nameserver, trạng thái EPP.
Query Parameters
| Tham số | Kiểu | Mô tả |
|---|---|---|
| domain required | string | Tên miền cần tra cứu. Ví dụ: bkns.vn, google.com |
Response
{
"domain": "bkns.vn",
"tld": "vn",
"status": "registered",
"cached": true,
"cacheTtlRemaining": null,
"data": {
"registrant": {
"name": "Công ty Cổ phần Giải pháp Mạng Bạch Kim"
},
"registrar": {
"name": "Công ty cổ phần giải pháp mạng Bạch Kim"
},
"nameservers": ["ns1.bkdns.vn", "ns2.bkdns.vn", "ns3.bkdns.vn"],
"dates": {
"created": "2010-06-24T17:00:00.000Z",
"updated": null,
"expiry": "2030-06-24T17:00:00.000Z",
"renewalDeadline": null
},
"domainStatus": ["clientTransferProhibited"],
"dnssec": false
}
}
data.registrant được trả về. Domain quốc tế thường không có thông tin registrant.
{
"domain": "bkns.net",
"tld": "net",
"status": "registered",
"cached": false,
"cacheTtlRemaining": null,
"data": {
"registrar": {
"name": "Web Commerce Communications Limited dba WebNic.cc"
},
"nameservers": ["carl.ns.cloudflare.com", "meg.ns.cloudflare.com"],
"dates": {
"created": "2010-06-25T15:37:49Z",
"updated": "2026-02-02T06:32:14Z",
"expiry": "2027-06-25T15:37:49Z",
"renewalDeadline": null
},
"domainStatus": ["ok"],
"dnssec": false
},
"backendsTried": [
{ "vendorKey": "whois-direct", "success": true, "latencyMs": 675 }
]
}
{
"domain": "example-notexist.vn",
"tld": "vn",
"status": "available",
"cached": false,
"cacheTtlRemaining": null,
"backendsTried": [
{ "vendorKey": "vnnic-relay", "success": true, "latencyMs": 145 }
]
}
status = "available", field data không tồn tại. Luôn kiểm tra status trước khi access data.*.
GET Domain Check
Kiểm tra nhanh tên miền còn khả dụng hay không. Nhanh hơn WHOIS vì chỉ trả về trạng thái.
Query Parameters
| Tham số | Kiểu | Mô tả |
|---|---|---|
| domain required | string | Tên miền cần kiểm tra |
{
"domain": "example-notexist.vn",
"tld": "vn",
"available": true,
"premium": false,
"cached": false
}
POST Bulk WHOIS
Tra cứu nhiều tên miền trong một request. Tối đa 20 domain/request. Yêu cầu tier Partner.
Request Body
{
"domains": ["bkns.vn", "google.com", "example.org"]
}
Response
{
"results": [
{ "domain": "bkns.vn", "status": "registered", "data": { ... } },
{ "domain": "example.org", "status": "available" }
],
"total": 3,
"queryTime": 512
}
Response Schema
Cấu trúc đầy đủ của object WHOIS trả về.
Top-level fields
"vn", "net", "com"…status = "registered"cached = falsedata object (chỉ khi registered)
"clientTransferProhibited", "ok"…Mã lỗi
TLD hỗ trợ
1.260+ loại TLD bao gồm tất cả ccTLD, gTLD phổ biến và new gTLD.
vnnic-relay, latency ~145ms.
Code mẫu
WHOIS Lookup
const domain = 'bkns.vn'; const apiKey = 'YOUR_API_KEY'; const res = await fetch( `https://whois.bkns.vn/api/v1/whois?domain=${domain}`, { headers: { 'X-API-Key': apiKey } } ); if (!res.ok) throw new Error(`HTTP ${res.status}`); const data = await res.json(); // Luôn check status trước khi access data.* if (data.status === 'registered') { console.log('Nhà đăng ký:', data.data.registrar.name); console.log('Hết hạn:', data.data.dates.expiry); console.log('Nameservers:', data.data.nameservers.join(', ')); } else { console.log('Domain chưa được đăng ký.'); }
import requests domain = "bkns.vn" api_key = "YOUR_API_KEY" response = requests.get( "https://whois.bkns.vn/api/v1/whois", params={"domain": domain}, headers={"X-API-Key": api_key}, timeout=10, ) response.raise_for_status() data = response.json() # Luôn check status trước khi access data if data["status"] == "registered": print(f"Nhà đăng ký: {data['data']['registrar']['name']}") print(f"Hết hạn: {data['data']['dates']['expiry']}") else: print("Domain chưa được đăng ký.")
<?php $domain = 'bkns.vn'; $apiKey = 'YOUR_API_KEY'; $ch = curl_init('https://whois.bkns.vn/api/v1/whois?domain=' . urlencode($domain)); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['X-API-Key: ' . $apiKey], ]); $data = json_decode(curl_exec($ch), true); curl_close($ch); // Luôn check status trước khi access data if ($data['status'] === 'registered') { echo "Nhà đăng ký: " . $data['data']['registrar']['name'] . "\n"; echo "Hết hạn: " . $data['data']['dates']['expiry'] . "\n"; } else { echo "Domain chưa được đăng ký.\n"; }
curl -s \ "https://whois.bkns.vn/api/v1/whois?domain=bkns.vn" \ -H "X-API-Key: YOUR_API_KEY" \ | python3 -m json.tool
Xử lý 429 — Retry với backoff
async function whoisWithRetry(domain, apiKey, maxRetries = 3) { for (let i = 0; i < maxRetries; i++) { const res = await fetch( `https://whois.bkns.vn/api/v1/whois?domain=${domain}`, { headers: { 'X-API-Key': apiKey } } ); if (res.status === 429) { const wait = Number(res.headers.get('Retry-After') ?? 5) * 1000; await new Promise(r => setTimeout(r, wait)); continue; } if (!res.ok) throw new Error(`HTTP ${res.status}`); return res.json(); } }
Liên hệ
Cần hỗ trợ kỹ thuật hoặc muốn đăng ký API key Partner?