Référence développeur

Réputation du Domaine

Obtenez un score de réputation (0-100) pour n'importe quel domaine à partir de plusieurs signaux de sécurité et de confiance.

Réputation du Domaine

Obtenez un score de réputation (0-100) pour n'importe quel domaine à partir de plusieurs signaux de sécurité et de confiance. L'API vérifie la configuration de sécurité DNS, les certificats SSL, les listes noires (Spamhaus, SURBL), le renseignement sur les menaces (URLhaus), l'authentification des e-mails et la présence web pour calculer un score pondéré avec des recommandations exploitables.

GET /v1/reputation Crédits: 3

Paramètres de requête

Paramètre Type requis
domain string requis

Champs de réponse

Champ Type
domain string
reputation_score integer
grade string
risk_level string
reputation_score_confidence string
grade_capped_by_parking boolean
factors object
factors.age object
factors.dns_security object
factors.ssl_certificate object
factors.hosting object
factors.web_presence object
factors.blacklists object
factors.email_config object
recommendations[] object[]
recommendations[] object
recommendations[].priority string
recommendations[].category string
recommendations[].action string
recommendations[].impact string
evidence_summary object
evidence_summary.checks_performed integer
evidence_summary.cache_status string
evidence_summary.confidence string
evidence_summary.risk_level string
evidence_summary.factor_count integer
evidence_summary.scored_factor_count integer
evidence_summary.passing_factor_count integer
evidence_summary.warning_factor_count integer
evidence_summary.failing_factor_count integer
evidence_summary.lowest_scoring_factors[] object[]
evidence_summary.lowest_scoring_factors[] object
evidence_summary.lowest_scoring_factors[].name string
evidence_summary.lowest_scoring_factors[].score number | null
evidence_summary.lowest_scoring_factors[].weight number | null
evidence_summary.blacklist_listed_count integer
evidence_summary.recommendation_count integer
evidence_summary.high_priority_recommendation_count integer
evidence_summary.grade_capped_by_parking boolean
meta object
meta.query_time_ms integer
meta.checks_performed integer
meta.cached boolean
meta.served_by string

Exemple de requête

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/reputation?domain=example.com"
const response = await fetch("https://domscan.net/v1/reputation?domain=example.com", {
  headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);
import os
import requests

response = requests.get(
    "https://domscan.net/v1/reputation?domain=example.com",
    headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/reputation?domain=example.com", nil)
	if err != nil {
		panic(err)
	}
	req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Status, string(data))
}
require "json"
require "net/http"

uri = URI("https://domscan.net/v1/reputation?domain=example.com")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body))

Exemple de réponse

{
  "domain": "example.com",
  "reputation_score": 69,
  "grade": "C",
  "risk_level": "medium",
  "reputation_score_confidence": "high",
  "grade_capped_by_parking": true,
  "factors": {
    "age": {
      "score": 84,
      "weight": 0.1,
      "details": {
        "age_days": 5840
      }
    },
    "dns_security": {
      "score": 80,
      "weight": 0.2,
      "details": {
        "dnssec": false,
        "spf": true,
        "dmarc": true,
        "dmarc_policy": "reject"
      }
    },
    "ssl_certificate": {
      "score": 92,
      "weight": 0.2,
      "details": {
        "valid": true,
        "error": null,
        "grade": "A",
        "chain_valid": true,
        "min_tls_version": "TLSv1.3"
      }
    },
    "hosting": {
      "score": 35,
      "weight": 0.1,
      "details": {
        "has_a_records": true,
        "a_record_count": 2,
        "parked": true
      }
    },
    "web_presence": {
      "score": 20,
      "weight": 0.15,
      "details": {
        "has_website": true,
        "redirects_to_https": true,
        "response_time_ms": 87,
        "parked": true,
        "for_sale": false,
        "parking_provider": "Example Parking"
      }
    },
    "blacklists": {
      "score": 100,
      "weight": 0.1,
      "details": {
        "listed": false,
        "threat_level": "none",
        "domain_sources": [],
        "ip_sources": []
      }
    },
    "email_config": {
      "score": 100,
      "weight": 0.15,
      "details": {
        "has_mx": true,
        "has_spf": true,
        "has_dmarc": true,
        "mx_count": 2
      }
    }
  },
  "recommendations": [
    {
      "priority": "high",
      "category": "web_presence",
      "action": "Move the domain off parking if it is intended for customer traffic.",
      "impact": "+10 points"
    }
  ],
  "meta": {
    "query_time_ms": 187,
    "checks_performed": 7,
    "cached": false,
    "served_by": "pop=MAD country=ES"
  }
}

Codes de statut HTTP

  • 200 OK
  • 400 Requête incorrecte
  • 401 Non autorisé
  • 402 Paiement requis
  • 429 Trop de requêtes
POST /v1/reputation/bulk

Corps de la requête

ChampTypeDescription
domains requis string[] Tableau de noms de domaines complets à vérifier

Utilisez POST /v1/reputation/bulk pour noter plusieurs domaines en une seule requête. Envoyez un corps JSON avec un tableau domains. Prend en charge jusqu'à 3 domaines par requête car chaque analyse déclenche plusieurs contrôles de sécurité.

Exemple de requête

curl -H "X-API-Key: your-api-key" -X POST "https://domscan.net/v1/reputation/bulk"   -H "Content-Type: application/json"   -d '{
    "domains": ["stripe.com", "cloudflare.com", "example.com"]
  }'

Exemple de réponse

{
  "results": [
    {
      "domain": "stripe.com",
      "reputation_score": 92,
      "grade": "A+",
      "risk_level": "low",
      "factors": {
        "dns_security": { "score": 100, "weight": 0.2 },
        "ssl_certificate": { "score": 100, "weight": 0.2 }
      },
      "recommendations": [],
      "meta": {
        "query_time_ms": 1250,
        "checks_performed": 7,
        "cached": false
      }
    },
    {
      "domain": "not a domain",
      "error": {
        "code": "INVALID_DOMAIN",
        "message": "Invalid domain format"
      }
    }
  ],
  "summary": {
    "total": 2,
    "successful": 1,
    "failed": 1,
    "cached": 0,
    "query_time_ms": 1310
  },
  "meta": {
    "served_by": "pop=MAD country=ES"
  }
}

Champs de réponse

Champ Type
results[] object[]
results[] object
results[].domain string
results[].reputation_score integer
results[].grade string
results[].risk_level string
results[].reputation_score_confidence string
results[].grade_capped_by_parking boolean
results[].factors object
results[].evidence_summary object
results[].evidence_summary.checks_performed integer
results[].evidence_summary.cache_status string
results[].evidence_summary.confidence string
results[].evidence_summary.risk_level string
results[].evidence_summary.factor_count integer
results[].evidence_summary.scored_factor_count integer
results[].evidence_summary.passing_factor_count integer
results[].evidence_summary.warning_factor_count integer
results[].evidence_summary.failing_factor_count integer
results[].evidence_summary.lowest_scoring_factors[] object[]
results[].evidence_summary.lowest_scoring_factors[] object
results[].evidence_summary.lowest_scoring_factors[].name string
results[].evidence_summary.lowest_scoring_factors[].score number | null
results[].evidence_summary.lowest_scoring_factors[].weight number | null
results[].evidence_summary.blacklist_listed_count integer
results[].evidence_summary.recommendation_count integer
results[].evidence_summary.high_priority_recommendation_count integer
results[].evidence_summary.grade_capped_by_parking boolean
results[].recommendations[] object[]
results[].recommendations[] object
results[].meta object
results[].error object
results[].error.code string
results[].error.message string
summary object
summary.total integer
summary.successful integer
summary.failed integer
summary.cached integer
summary.query_time_ms integer
meta object
meta.served_by string