Developer Reference

Domain Reputation

Explore Domain Reputation API documentation, request parameters, response fields, code examples, and error handling for DomScan integrations.

Domain Reputation

Get a comprehensive reputation score (0-100) for any domain based on multiple security and trust signals. The API checks DNS security configuration, SSL certificates, blacklists (Spamhaus, SURBL), threat intelligence (URLhaus), email authentication, and web presence to calculate a weighted score with actionable recommendations.

GET /v1/reputation

Query Parameters

Parameter Type required
domain string required

Response Fields

Field 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
meta.worker_version string

Example Request

curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/reputation?domain=example.com"

Example Response

{
  "domain": "example.com",
  "reputation_score": 76,
  "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",
    "worker_version": "2.14.0"
  }
}
POST /v1/reputation/bulk

Request Body

FieldTypeDescription
domains required string[] Array of full domain names to check

Use POST /v1/reputation/bulk to score multiple domains in one request. Send a JSON body with a domains array. Supports up to 3 domains per request because each lookup fans out across several security checks.

Example Request

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"]
  }'

Example Response

{
  "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",
    "worker_version": "2.14.0"
  }
}

Response Fields

Field 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
meta.worker_version string