JSON API
Sayfada gördüğünüz kaydın tamamı, tek bir GET isteğiyle, makinenin okuyacağı biçimde. Anahtar, kayıt ya da SDK gerekmez.
https://whois.ip-db.com/api/v1/domain/{domain}
Hızlı başlangıç
bir istek, bir kayıtcurl -s https://whois.ip-db.com/api/v1/domain/github.com
# yalnızca kayıt bilgisi, jq ile
curl -s https://whois.ip-db.com/api/v1/domain/github.com | jq '.registration | {registrar, created, expires}'import requests
r = requests.get("https://whois.ip-db.com/api/v1/domain/github.com", timeout=30)
data = r.json()
if data["ok"]:
reg = data["registration"]
print(reg["registrar"], reg["expires"])
else:
print("error:", data["error"], r.status_code)// Node.js 18+ (yerleşik fetch)
const r = await fetch("https://whois.ip-db.com/api/v1/domain/github.com");
const data = await r.json();
if (data.ok) console.log(data.registration.registrar, data.registration.expires);
else console.error(data.error, r.status);Bir sorgu registry, DNS, TLS ve HTTPS turlarını canlı yaptığı için genellikle 1–5 saniye sürer; istemci zaman aşımını 30 saniye civarında tutun. Tarayıcıdan başka bir alan adına doğrudan istek (CORS) desteklenmez — API sunucudan sunucuya kullanım içindir.
İstek
GET /api/v1/domain/{domain}| Parametre | Yer | Açıklama |
|---|---|---|
| domain zorunlu | path | Sorgulanacak alan adı. Esnek okunur: https://www.example.com/a?b, info@example.com, example.com. ve Unicode adlar (bücher.de) kabul edilir. Alt alan adları registry’de kayıtlı ada indirgenir. |
| raw isteğe bağlı | query | ?raw=1 — registry’nin ve (varsa) kayıt firmasının ham RDAP yanıtlarını raw_rdap ve raw_registrar_rdap alanlarında ekler. |
Yanıt alanları
200 · application/json| Alan | Tür | İçerik |
|---|---|---|
| ok | bool | İstek başarılıysa true. false ise yalnızca error, detail ve query gelir. |
| domain · unicode_domain · tld | string | Sorgulanan ad; ASCII (punycode) ve Unicode biçimi, uzantı. |
| registration | object | Kayıt firması ve IANA kimliği, abuse iletişimi, kayıt / güncelleme / bitiş tarihleri, DNSSEC ve DS kayıtları, kayıt sahibi kuruluş ve ülke, sorgulanan RDAP sunucuları. |
| statuses | array | EPP durum kodları; her biri code, severity (good · neutral · warn · bad) ve açıklamayla. |
| events | array | Kayıt, devir, son değişiklik gibi RDAP olayları; tarih ve kaynağıyla (registry / registrar). |
| contacts | array | Registrant, admin, tech ve abuse kişileri. Gizlenmiş alanlar registry’nin yazdığı gibi döner. |
| nameservers | array | Registry’deki isim sunucuları ve varsa glue adresleri. |
| dns | object | Canlı DNS: A, AAAA, MX, NS, TXT, CAA, SOA, DNSKEY ve TTL’ler; ayrıştırılmış SPF, DMARC ve BIMI, bulunan DKIM seçicileri, MTA-STS, TLS-RPT, PTR. |
| tls | object | null | Sunulan sertifika: veren, doğrulama türü (DV · OV · EV), geçerlilik aralığı, kalan gün, SAN’lar, anahtar, protokol, ALPN. |
| http · http_plain | object | null | https:// yanıtı (durum, yönlendirme zinciri, HSTS, güvenlik başlıkları ve puanı, sayfa başlığı) ve http:// isteğinin HTTPS’e yükseltilip yükseltilmediği. |
| subdomains | object | null | Alt alan adları: CT kayıtları, sunulan sertifika ve yaygın adlardan toplanıp canlı çözümlenen her host için CNAME, A / AAAA, ASN ve kaynak; ayrıca CT’de görülüp çözümlenmeyen adlar ve joker kayıt bilgisi. |
| providers | object | Tanınan DNS, e-posta ve CDN sağlayıcıları. |
| hosting | array | Çözümlenen her adres: ASN ve kuruluş, konum, PTR ve ip-db.com itibar sonucu. |
| assessment | object | Genel değerlendirme: headline, önem derecesine göre sayılar ve bulgu listesi. |
| observations · first_observed | int · string | Bu adın bu serviste kaç kez sorgulandığı ve ilk ne zaman. |
| changes_since_last | array | Bir önceki sorguya göre değişenler: kayıt firması, NS, durum, bitiş, DNSSEC, A / AAAA / MX / NS. |
| timings_ms | object | RDAP, DNS, TLS, HTTPS ve alt alan adı aşamalarının ve toplamın süresi, milisaniye. |
Örnek yanıt
kısaltılmış{
"ok": true,
"domain": "github.com",
"unicode_domain": "github.com",
"tld": "com",
"registration": {
"registrar": "MarkMonitor Inc.",
"registrar_iana_id": 292,
"abuse_email": "abusecomplaints@markmonitor.com",
"created": "2007-10-09T18:20:50Z",
"expires": "2028-10-09T18:20:50Z",
"dnssec": false,
"registrant_org": "GitHub, Inc.",
"registrant_country": "US",
"rdap_server": "https://rdap.verisign.com/com/v1/domain/github.com",
"registrar_rdap_server": "https://rdap.markmonitor.com/rdap/domain/GITHUB.COM"
},
"statuses": [
{ "code": "client transfer prohibited", "severity": "good", "text": "Locked by the owner against transfer." }
],
"events": [
{ "action": "registration", "date": "2007-10-09T18:20:50Z", "source": "registry" }
],
"contacts": [
{ "roles": ["registrant"], "org": "GitHub, Inc.", "country": "US" }
],
"nameservers": [ { "host": "dns1.p08.nsone.net", "ips": [] } ],
"dns": {
"a": ["140.82.121.3"],
"ttl": { "a": 60 },
"spf_parsed": { "all": "~", "lookups": 8 },
"dmarc_parsed": { "p": "quarantine", "sp": "reject" },
"dkim": [ { "selector": "google", "key_type": "rsa", "bits": 2048 } ]
},
"tls": { "issuer_org": "Sectigo Limited", "validation": "DV", "days_left": 70, "alpn": "h2" },
"http": { "status": 200, "hsts": { "max_age": 31536000 } },
"http_plain": { "status": 301, "upgrades": true },
"providers": { "dns": [ { "name": "NS1 (IBM)" } ], "mail": [ { "name": "Microsoft 365" } ] },
"hosting": [
{ "ip": "140.82.121.3", "asn": 36459, "country_code": "GB", "reputation": { "listed": false } }
],
"subdomains": {
"hosts": [
{ "name": "api.github.com", "label": "api", "cname": null, "a": ["140.82.121.6"],
"asn": 36459, "asn_org": "GitHub, Inc.", "sources": ["guess"] },
{ "name": "gist.github.com", "label": "gist", "cname": null, "a": ["140.82.121.4"],
"asn": 36459, "asn_org": "GitHub, Inc.", "sources": ["ct", "guess"] }
],
"ct": { "ok": true, "source": "certspotter", "count": 41 },
"unresolved_count": 3, "wildcard": false, "tried": 73
},
"assessment": { "headline": "good", "counts": { "good": 14, "warn": 1 } },
"observations": 12,
"first_observed": "2026-09-20T11:04:10Z",
"changes_since_last": [],
"timings_ms": { "rdap": 820, "dns": 310, "tls": 90, "http": 400, "subdomains": 210, "total": 1450 }
}{
"ok": false,
"error": "not_registered",
"detail": null,
"query": "bu-alan-adi-yok-12345.com"
}Hatalar
gövde her zaman JSON| HTTP | error | Anlamı |
|---|---|---|
| 400 | emptyinvalid | Boş ya da geçerli bir alan adı olmayan girdi. |
| 400 | is_ip | Bir IP adresi verildi; detail o adresi taşır. IP’ler için ip-db.com’u kullanın. |
| 403 | own_domain | ip-db.com ve alt alan adları sorgulanmaz. |
| 404 | not_registered | Registry bu adı tanımıyor — büyük olasılıkla kayıtlı değil. |
| 429 | rate_limited | Saatlik sınırınız doldu. |
| 429 | daily_limit | Bu IP’nin 24 saatlik sorgu hakkı doldu. |
| 429 | registry_rate_limited | Sınırı aşan sizin değil registry: bir süre sonra tekrar deneyin. |
| 501 | no_rdap | Bu uzantının registry’si RDAP yayımlamıyor (ör. .de, .co); detail registry’nin kendi sorgulama adresidir. .tr adları TRABIS’ten okunur ve bu hatayı vermez. |
| 502 | unreachablebad_responseregistry_error | Registry yanıt vermedi ya da okunamayan bir yanıt verdi. |
| 504 | timeout | Registry zamanında yanıt vermedi. |
| 500 | internal | Bizim tarafımızda bir hata. Tekrarlanırsa haber verin. |
Sınırlar
Saatlik sınır kayan bir pencere olarak işler ve web arayüzüyle aynı sayacı kullanır. Günlük sınır yalnızca /domain API sorgularını sayar. Bu sınırda hata veren sorgular (ör. 404 not_registered) de sayılır. Her yanıt canlı sorgudur; aynı adı sık sık sormak yerine sonucu kendi tarafınızda saklayın. Registry’lerin de kendi hız sınırları vardır — onlardan gelen ret, 429 registry_rate_limited olarak olduğu gibi iletilir.
Sağlık
GET /api/v1/healthİzleme için hafif bir uç nokta: hiçbir dış sorgu yapmaz ve sınırdan düşmez.
curl -s https://whois.ip-db.com/api/v1/health
{"ok": true, "service": "whois.ip-db.com"}