Référence Développeur
Recherche WHOIS Documentation de l'API
Recherche WHOIS Documentation de l'API: Obtenez des informations WHOIS pour un domaine incluant le registraire, les dates et le statut.
Recherche WHOIS
Obtenez des informations WHOIS pour un domaine incluant le registraire, les dates et le statut.
Note de confidentialité : Les informations de contact peuvent être supprimées en raison du RGPD et d'autres réglementations de confidentialité. L'API détecte automatiquement lorsque des services de confidentialité/proxy sont utilisés et retourne un objet
privacy avec les détails de la détection.
GET
/v1/whois
2 Crédits
Paramètres de Requête
| Paramètre | Type | Description |
|---|---|---|
| domain requis | string | Nom de domaine complet (par exemple, example.com) |
Champs de Réponse
| Champ | Type | Description |
|---|---|---|
registered | boolean | Si le domaine est enregistré |
registrar | string | Nom du registraire |
created_date | string | Date de création ISO 8601 |
expiry_date | string | Date d'expiration ISO 8601 |
status | array | Codes d'état EPP |
nameservers | array | Serveurs de noms autoritaires |
contacts | object | Titulaire, administrateur, technique, contacts de facturation |
privacy | object | Détection de la protection de la vie privée |
Exemple de Requête
curl "https://domscan.net/v1/whois?domain=github.com"
const response = await fetch(
"https://domscan.net/v1/whois?domain=github.com"
);
const data = await response.json();
console.log(`Registrar: ${data.registrar}`);
console.log(`Created: ${data.created_date}`);
console.log(`Expires: ${data.expiry_date}`);
console.log(`Nameservers: ${data.nameservers.join(', ')}`);
// Check for privacy protection
if (data.privacy.is_private) {
console.log(`Privacy service: ${data.privacy.privacy_service}`);
}
import requests
from datetime import datetime
response = requests.get(
"https://domscan.net/v1/whois",
params={"domain": "github.com"}
)
data = response.json()
# Calculate days until expiration
expiry = datetime.fromisoformat(data['expiry_date'].replace('Z', '+00:00'))
days_left = (expiry - datetime.now(expiry.tzinfo)).days
print(f"Registrar: {data['registrar']}")
print(f"Expires in {days_left} days")
print(f"Privacy protected: {data['privacy']['is_private']}")
package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
resp, _ := http.Get("https://domscan.net/v1/whois?domain=github.com")
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)
fmt.Printf("Registrar: %s\n", data["registrar"])
fmt.Printf("Created: %s\n", data["created_date"])
fmt.Printf("Expires: %s\n", data["expiry_date"])
}
require 'net/http'
require 'json'
require 'date'
uri = URI("https://domscan.net/v1/whois?domain=github.com")
response = Net::HTTP.get_response(uri)
data = JSON.parse(response.body)
expiry = DateTime.parse(data['expiry_date'])
days_left = (expiry - DateTime.now).to_i
puts "Registrar: #{data['registrar']}"
puts "Expires in #{days_left} days"
Exemple de Réponse
{
"domain": "example.com",
"registered": true,
"registrar": "RESERVED-Internet Assigned Numbers Authority",
"registrar_url": "https://www.iana.org",
"registrar_iana_id": "376",
"created_date": "1995-08-14T04:00:00Z",
"updated_date": "2023-08-14T07:01:38Z",
"expiry_date": "2024-08-13T04:00:00Z",
"status": ["clientDeleteProhibited", "serverUpdateProhibited"],
"nameservers": ["a.iana-servers.net", "b.iana-servers.net"],
"dnssec": true,
"contacts": {
"registrant": {
"name": "REDACTED FOR PRIVACY",
"organization": "Internet Assigned Numbers Authority",
"email": null,
"phone": null,
"address": {
"country": "US"
},
"role": "registrant"
},
"admin": { "name": "Domain Administrator", "email": "admin@example.org" },
"tech": { "name": "Technical Contact", "email": "tech@example.org" },
"billing": null
},
"privacy": {
"is_private": false,
"privacy_service": null,
"detected_patterns": []
},
"summary": {
"has_registrant": true,
"has_admin": true,
"has_tech": true,
"has_billing": false,
"contact_count": 3,
"is_privacy_protected": false
},
"raw_rdap_link": "https://rdap.verisign.com/com/v1/domain/example.com",
"checked_at": "2025-01-07T10:30:00Z",
"query_time_ms": 145
}
POST
/v1/whois/bulk
1 base + 1/domain
Recherche WHOIS en masse pour plusieurs domaines (max 20 par demande).
Corps de la requête
{
"domains": ["example.com", "google.com", "github.com"]
}
Champs de Réponse
| Champ | Type |
|---|---|
results[] |
object[] |
results[] |
object |
results[].domain |
string |
results[].registrar |
string |
results[].created_date |
string |
results[].updated_date |
string |
results[].expiry_date |
string |
results[].nameservers[] |
string[] |
results[].status[] |
string[] |
results[].raw |
string |
meta |
object |
meta.total |
integer |
meta.successful |
integer |
meta.duration_ms |
integer |
Exemple de Réponse
{
"results": [
{
"domain": "example.com",
"registrar": "string",
"created_date": "2026-04-15T12:00:00Z",
"updated_date": "2026-04-15T12:00:00Z",
"expiry_date": "2026-04-15T12:00:00Z",
"nameservers": [
"string"
],
"status": [
"string"
],
"raw": "string"
}
],
"meta": {
"total": 1,
"successful": 1,
"duration_ms": 1
}
}
GET
/v1/rdap
Paramètres de Requête
| Paramètre | Type | requis |
|---|---|---|
| query | string | optionnel |
| type | string | optionnel |
| domain | string | optionnel |
Champs de Réponse
| Champ | Type |
|---|---|
query |
string |
type |
string |
status |
string |
rdap |
object |
rdap.objectClassName |
string |
rdap.handle |
string |
rdap.name |
string |
rdap.startAddress |
string |
rdap.endAddress |
string |
rdap.ipVersion |
string |
Exemple de Requête
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/rdap?query=example.com"
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/rdap?type=ip&query=8.8.8.8"
curl -G -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/rdap" \
--data "type=ip" \
--data-urlencode "query=2001:4860:4860::8888/128"
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/rdap?type=autnum&query=AS174"
Exemple de Réponse
{
"query": "8.8.8.8",
"type": "ip",
"status": "found",
"rdap": {
"objectClassName": "ip network",
"handle": "NET-8-8-8-0-2",
"name": "LVLT-GOGL-8-8-8",
"startAddress": "8.8.8.0",
"endAddress": "8.8.8.255",
"ipVersion": "v4"
}
}
GET
/v1/whois/history
Paramètres de Requête
| Paramètre | Type | requis |
|---|---|---|
| domain | string | requis |
| limit | integer | optionnel |
Champs de Réponse
| Champ | Type |
|---|---|
domain |
string |
total_snapshots |
integer |
first_seen |
string | null |
last_seen |
string | null |
snapshots[] |
object[] |
snapshots[] |
object |
snapshots[].id |
integer |
snapshots[].registrar |
string | null |
snapshots[].expiry_date |
string | null |
snapshots[].nameservers[] |
string[] |
snapshots[].dnssec |
boolean |
snapshots[].transfer_locked |
boolean |
snapshots[].privacy_protected |
boolean |
snapshots[].snapshot_date |
string |
snapshots[].changes_from_previous[] |
object[] |
snapshots[].changes_from_previous[] |
object |
snapshots[].changes_from_previous[].field |
string |
snapshots[].changes_from_previous[].old_value |
string | null |
snapshots[].changes_from_previous[].new_value |
string | null |
summary |
object |
summary.registrar_changes |
integer |
summary.nameserver_changes |
integer |
summary.expiry_extensions |
integer |
summary.privacy_toggles |
integer |
summary.status_changes |
integer |
Exemple de Requête
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/whois/history?domain=example.com&limit=25"
Exemple de Réponse
{
"domain": "example.com",
"total_snapshots": 1,
"first_seen": "string",
"last_seen": "string",
"snapshots": [
{
"id": 1,
"registrar": "string",
"expiry_date": "2026-04-15",
"nameservers": [
"string"
],
"dnssec": true,
"transfer_locked": true,
"privacy_protected": true,
"snapshot_date": "2026-04-15",
"changes_from_previous": [
{
"field": "string",
"old_value": "string",
"new_value": "string"
}
]
}
],
"summary": {
"registrar_changes": 1,
"nameserver_changes": 1,
"expiry_extensions": 1,
"privacy_toggles": 1,
"status_changes": 1
}
}