Ручна перевірка WHOIS підходить для поодиноких запитів. Для моніторингу конкурентів, верифікації лідів або захисту бренду потрібна автоматизація через WHOIS API.
Популярні WHOIS API сервіси
| Сервіс | Безкоштовно | Ціна | Особливості |
|---|---|---|---|
| WhoisXML API | 500 запитів/міс | від $19/міс | Нормалізований JSON, історія |
| Whoxy.com | 100/міс | від $10/міс | Reverse WHOIS, bulk |
| ip-api.com | 45/хв (IP) | Безкоштовно | Лише IP-геолокація |
| domain-coupler.io | 10/міс | від $5/міс | Простий, швидкий |
Приклад на PHP
// WHOIS-запит через WhoisXML API
$apiKey = 'YOUR_API_KEY';
$domain = 'example.com';
$url = "https://www.whoisxmlapi.com/whoisserver/WhoisService"
. "?apiKey={$apiKey}&domainName={$domain}&outputFormat=JSON";
$response = file_get_contents($url);
$data = json_decode($response, true);
echo "Реєстратор: " . $data['WhoisRecord']['registrarName'] . "
";
echo "Закінчується: " . $data['WhoisRecord']['expiresDate'] . "
";
echo "NS: " . implode(', ', $data['WhoisRecord']['nameServers']['hostNames']) . "
";
Приклад на Python
import requests
API_KEY = 'YOUR_API_KEY'
domains = ['example.com', 'competitor.com', 'anotherdomain.net']
for domain in domains:
url = f"https://www.whoisxmlapi.com/whoisserver/WhoisService"
params = {
'apiKey': API_KEY,
'domainName': domain,
'outputFormat': 'JSON'
}
resp = requests.get(url, params=params).json()
record = resp.get('WhoisRecord', {})
print(f"{domain}: expires {record.get('expiresDate', 'N/A')}")
Використання Python-бібліотеки whois
pip install python-whois
import whois
w = whois.whois('example.com')
print(w.expiration_date) # Дата закінчення
print(w.registrar) # Реєстратор
print(w.name_servers) # NS-сервери
💡 Моніторинг конкурентів: Запускайте WHOIS-перевірку доменів конкурентів щотижня. Якщо домен перейшов до нового власника або змінилися NS-сервери — це сигнал про зміну хостингу або продаж бізнесу.
⚠️ Rate limiting: Публічні WHOIS-сервери обмежують запити (зазвичай 1–5/сек). Масову перевірку виконуйте лише через платні API з офіційними лімітами.
Типові помилки при роботі з WHOIS API
| Помилка | Причина |
|---|---|
| HTTP 401 Unauthorized | Невірний або прострочений API-ключ, або ключ передано в невірному параметрі — у різних сервісів це apiKey, api_key або окремий заголовок |
| HTTP 429 Too Many Requests | Перевищено ліміт запитів тарифу: масова перевірка списку доменів без паузи між запитами швидко впирається в rate limit |
| WhoisRecord.registrarName: null у відповіді | Домен використовує «тонкий» WHOIS (характерно для частини ccTLD) — реєстратор не публікує ці дані в загальному протоколі, лише через RDAP реєстру зони |
| SSL certificate problem: unable to get local issuer certificate | Застарілий CA-бандл на сервері або в PHP не увімкнено розширення openssl — curl не може перевірити ланцюжок сертифікатів API |
| WhoisCommandFailed: No match for domain | Домен вільний, або whois-сервер реєстру тимчасово недоступний; python-whois не робить повторну спробу автоматично |
| Quota exceeded / HTTP 402 Payment Required | Місячну квоту безкоштовного тарифу вичерпано раніше дати продовження — лічильник сервісу скидається лише першого числа місяця, а не через 30 днів від реєстрації |
Коли WHOIS API не підходить
- Потрібна перевірка в реальному часі прямо у формі реєстрації на сайті — публічні WHOIS-сервери занадто повільні й лімітовані для синхронного запиту на кожне введення, для цього краще підходить RDAP з власним кешем
- Бюджету на платний тариф немає, а обсяг перевірок великий — безкоштовні ліміти швидко закінчуються, а масові запити до публічних WHOIS-серверів закінчуються блокуванням IP
- Потрібні історичні дані WHOIS за минулі роки — звичайний запит віддає лише поточний стан, для історії потрібен окремий платний сервіс на кшталт WhoisXML Historical WHOIS
- Домен у зоні із закритим за замовчуванням WHOIS (більшість .eu, багато .de) — персональні дані власника не повернуться через жоден API, це обмеження на рівні реєстру, а не сервісу
Перевірка результату
Перш ніж вбудовувати API в продакшен-скрипт, переконайтеся, що ключ справді працює і ліміт не вичерпано заздалегідь — це заощаджує час на налагодженні всього пайплайна. Базові поняття WHOIS і ручну перевірку розбирають статті що таке WHOIS і як перевірити домен онлайн.
# Перевірити, що ключ робочий, одним curl-запитом
curl -s "https://www.whoisxmlapi.com/whoisserver/WhoisService?apiKey=YOUR_KEY&domainName=example.com&outputFormat=JSON" | head -c 200
# Порахувати, скільки доменів зі списку справді отримали відповідь
grep -c '"expiresDate"' results.json